Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,7 @@ import com.nativeapptemplate.nativeapptemplatefree.datastore.NatPreferencesDataS
import com.nativeapptemplate.nativeapptemplatefree.model.*
import com.nativeapptemplate.nativeapptemplatefree.network.Dispatcher
import com.nativeapptemplate.nativeapptemplatefree.network.NatDispatchers
import com.skydoves.sandwich.message
import com.skydoves.sandwich.retrofit.serialization.deserializeErrorBody
import com.skydoves.sandwich.suspendOnFailure
import com.skydoves.sandwich.suspendOnSuccess
import com.nativeapptemplate.nativeapptemplatefree.network.emitApiResponse
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.flow
Expand All @@ -27,27 +24,7 @@ class ItemTagRepositoryImpl @Inject constructor(
mtcPreferencesDataSource.userData.first().accountId,
shopId,
)

response.suspendOnSuccess {
emit(data)
}.suspendOnFailure {
val nativeAppTemplateApiError: NativeAppTemplateApiError?

try {
nativeAppTemplateApiError = response.deserializeErrorBody<ItemTags, NativeAppTemplateApiError>()
} catch (exception: Exception) {
val message = "Not processable error(${message()})."
throw Exception(message)
}

if (nativeAppTemplateApiError != null) {
val message = "${nativeAppTemplateApiError.message} [Status: ${nativeAppTemplateApiError.code}]"
throw Exception(message)
} else {
val message = "Not processable error(${message()})."
throw Exception(message)
}
}
emitApiResponse(response)
}.flowOn(ioDispatcher)

override fun getItemTag(
Expand All @@ -57,177 +34,51 @@ class ItemTagRepositoryImpl @Inject constructor(
mtcPreferencesDataSource.userData.first().accountId,
id,
)

response.suspendOnSuccess {
emit(data)
}.suspendOnFailure {
val nativeAppTemplateApiError: NativeAppTemplateApiError?

try {
nativeAppTemplateApiError = response.deserializeErrorBody<ItemTag, NativeAppTemplateApiError>()
} catch (exception: Exception) {
val message = "Not processable error(${message()})."
throw Exception(message)
}

if (nativeAppTemplateApiError != null) {
val message = "${nativeAppTemplateApiError.message} [Status: ${nativeAppTemplateApiError.code}]"
throw Exception(message)
} else {
val message = "Not processable error(${message()})."
throw Exception(message)
}
}
emitApiResponse(response)
}.flowOn(ioDispatcher)

override fun createItemTag(
shopId: String,
itemTagBody: ItemTagBody,
) = flow {
var itemTag: ItemTag

val response = api.createItemTag(
mtcPreferencesDataSource.userData.first().accountId,
shopId,
itemTagBody,
)

response.suspendOnSuccess {
itemTag = data
emit(itemTag)
}.suspendOnFailure {
val nativeAppTemplateApiError: NativeAppTemplateApiError?

try {
nativeAppTemplateApiError = response.deserializeErrorBody<ItemTag, NativeAppTemplateApiError>()
} catch (exception: Exception) {
val message = "Not processable error(${message()})."
throw Exception(message)
}

if (nativeAppTemplateApiError != null) {
val message = "${nativeAppTemplateApiError.message} [Status: ${nativeAppTemplateApiError.code}]"
throw Exception(message)
} else {
val message = "Not processable error(${message()})."
throw Exception(message)
}
}
emitApiResponse(response)
}.flowOn(ioDispatcher)

override fun updateItemTag(
id: String,
itemTagBody: ItemTagBody,
) = flow {
var itemTag: ItemTag

val response = api.updateItemTag(
mtcPreferencesDataSource.userData.first().accountId,
id,
itemTagBody,
)

response.suspendOnSuccess {
itemTag = data
emit(itemTag)
}.suspendOnFailure {
val nativeAppTemplateApiError: NativeAppTemplateApiError?

try {
nativeAppTemplateApiError = response.deserializeErrorBody<ItemTag, NativeAppTemplateApiError>()
} catch (exception: Exception) {
val message = "Not processable error(${message()})."
throw Exception(message)
}

if (nativeAppTemplateApiError != null) {
val message = "${nativeAppTemplateApiError.message} [Status: ${nativeAppTemplateApiError.code}]"
throw Exception(message)
} else {
val message = "Not processable error(${message()})."
throw Exception(message)
}
}
emitApiResponse(response)
}.flowOn(ioDispatcher)

override fun deleteItemTag(
id: String,
) = flow {
val response = api.deleteItemTag(mtcPreferencesDataSource.userData.first().accountId, id)

response.suspendOnSuccess {
emit(true)
}.suspendOnFailure {
val nativeAppTemplateApiError: NativeAppTemplateApiError?

try {
nativeAppTemplateApiError = response.deserializeErrorBody<Status, NativeAppTemplateApiError>()
} catch (exception: Exception) {
val message = "Not processable error(${message()})."
throw Exception(message)
}

if (nativeAppTemplateApiError != null) {
val message = "${nativeAppTemplateApiError.message} [Status: ${nativeAppTemplateApiError.code}]"
throw Exception(message)
} else {
val message = "Not processable error(${message()})."
throw Exception(message)
}
}
emitApiResponse<Status, Boolean>(response) { true }
}.flowOn(ioDispatcher)

override fun completeItemTag(
id: String,
) = flow {
val response = api.completeItemTag(mtcPreferencesDataSource.userData.first().accountId, id)

response.suspendOnSuccess {
emit(data)
}.suspendOnFailure {
val nativeAppTemplateApiError: NativeAppTemplateApiError?

try {
nativeAppTemplateApiError = response.deserializeErrorBody<ItemTag, NativeAppTemplateApiError>()
} catch (exception: Exception) {
val message = "Not processable error(${message()})."
throw Exception(message)
}

if (nativeAppTemplateApiError != null) {
val message = "${nativeAppTemplateApiError.message} [Status: ${nativeAppTemplateApiError.code}]"
throw Exception(message)
} else {
val message = "Not processable error(${message()})."
throw Exception(message)
}
}
emitApiResponse(response)
}.flowOn(ioDispatcher)

override fun resetItemTag(
id: String,
) = flow {
val response = api.resetItemTag(mtcPreferencesDataSource.userData.first().accountId, id)

response.suspendOnSuccess {
emit(data)
}.suspendOnFailure {
val nativeAppTemplateApiError: NativeAppTemplateApiError?

try {
nativeAppTemplateApiError = response.deserializeErrorBody<ItemTag, NativeAppTemplateApiError>()
} catch (exception: Exception) {
val message = "Not processable error(${message()})."
throw Exception(message)
}

if (nativeAppTemplateApiError != null) {
val message = "${nativeAppTemplateApiError.message} [Status: ${nativeAppTemplateApiError.code}]"
throw Exception(message)
} else {
val message = "Not processable error(${message()})."
throw Exception(message)
}
}
emitApiResponse(response)
}.flowOn(ioDispatcher)
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,7 @@ import com.nativeapptemplate.nativeapptemplatefree.datastore.NatPreferencesDataS
import com.nativeapptemplate.nativeapptemplatefree.model.*
import com.nativeapptemplate.nativeapptemplatefree.network.Dispatcher
import com.nativeapptemplate.nativeapptemplatefree.network.NatDispatchers
import com.skydoves.sandwich.message
import com.skydoves.sandwich.retrofit.serialization.deserializeErrorBody
import com.skydoves.sandwich.suspendOnFailure
import com.skydoves.sandwich.suspendOnSuccess
import com.nativeapptemplate.nativeapptemplatefree.network.emitApiResponse
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.flow
Expand All @@ -26,26 +23,6 @@ class AccountPasswordRepositoryImpl @Inject constructor(
natPreferencesDataSource.userData.first().accountId,
updatePasswordBody,
)

response.suspendOnSuccess {
emit(true)
}.suspendOnFailure {
val nativeAppTemplateApiError: NativeAppTemplateApiError?

try {
nativeAppTemplateApiError = response.deserializeErrorBody<Status, NativeAppTemplateApiError>()
} catch (exception: Exception) {
val message = "Not processable error(${message()})."
throw Exception(message)
}

if (nativeAppTemplateApiError != null) {
val message = "${nativeAppTemplateApiError.message} [Status: ${nativeAppTemplateApiError.code}]"
throw Exception(message)
} else {
val message = "Not processable error(${message()})."
throw Exception(message)
}
}
emitApiResponse<Status, Boolean>(response) { true }
}.flowOn(ioDispatcher)
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import com.nativeapptemplate.nativeapptemplatefree.model.LoggedInShopkeeper
import com.nativeapptemplate.nativeapptemplatefree.model.Login
import com.nativeapptemplate.nativeapptemplatefree.network.Dispatcher
import com.nativeapptemplate.nativeapptemplatefree.network.NatDispatchers
import com.nativeapptemplate.nativeapptemplatefree.network.emitApiResponse
import com.skydoves.sandwich.message
import com.skydoves.sandwich.retrofit.serialization.deserializeErrorBody
import com.skydoves.sandwich.suspendOnFailure
import com.skydoves.sandwich.suspendOnSuccess
import kotlinx.coroutines.CoroutineDispatcher
Expand All @@ -31,31 +31,8 @@ class LoginRepositoryImpl @Inject constructor(
override fun login(
login: Login,
) = flow {
var loggedInShopkeeper: LoggedInShopkeeper

val response = api.login(login)

response.suspendOnSuccess {
loggedInShopkeeper = data
emit(loggedInShopkeeper)
}.suspendOnFailure {
val nativeAppTemplateApiError: NativeAppTemplateApiError?

try {
nativeAppTemplateApiError = response.deserializeErrorBody<LoggedInShopkeeper, NativeAppTemplateApiError>()
} catch (exception: Exception) {
val message = "Not processable error(${message()})."
throw Exception(message)
}

if (nativeAppTemplateApiError != null) {
val message = "${nativeAppTemplateApiError.message} [Status: ${nativeAppTemplateApiError.code}]"
throw Exception(message)
} else {
val message = "Not processable error(${message()})."
throw Exception(message)
}
}
emitApiResponse(response)
}.flowOn(ioDispatcher)

override val userData: Flow<UserData> =
Expand All @@ -77,81 +54,21 @@ class LoginRepositoryImpl @Inject constructor(
val response = api.getPermissions(
userData.first().accountId,
)

response.suspendOnSuccess {
emit(data)
}.suspendOnFailure {
val nativeAppTemplateApiError: NativeAppTemplateApiError?

try {
nativeAppTemplateApiError = response.deserializeErrorBody<Permissions, NativeAppTemplateApiError>()
} catch (exception: Exception) {
val message = "Not processable error(${message()})."
throw Exception(message)
}

if (nativeAppTemplateApiError != null) {
val message = "${nativeAppTemplateApiError.message} [Status: ${nativeAppTemplateApiError.code}]"
throw Exception(message)
} else {
val message = "Not processable error(${message()})."
throw Exception(message)
}
}
emitApiResponse(response)
}.flowOn(ioDispatcher)

override fun updateConfirmedPrivacyVersion() = flow {
val response = api.updateConfirmedPrivacyVersion(
natPreferencesDataSource.userData.first().accountId,
)

response.suspendOnSuccess {
emit(true)
}.suspendOnFailure { // handles the all error cases from the API request fails.
val nativeAppTemplateApiError: NativeAppTemplateApiError?

try {
nativeAppTemplateApiError = response.deserializeErrorBody<Status, NativeAppTemplateApiError>()
} catch (exception: Exception) {
val message = "Not processable error(${message()})."
throw Exception(message)
}

if (nativeAppTemplateApiError != null) {
val message = "${nativeAppTemplateApiError.message} [Status: ${nativeAppTemplateApiError.code}]"
throw Exception(message)
} else {
val message = "Not processable error(${message()})."
throw Exception(message)
}
}
emitApiResponse<Status, Boolean>(response) { true }
}.flowOn(ioDispatcher)

override fun updateConfirmedTermsVersion() = flow {
val response = api.updateConfirmedTermsVersion(
natPreferencesDataSource.userData.first().accountId,
)

response.suspendOnSuccess {
emit(true)
}.suspendOnFailure { // handles the all error cases from the API request fails.
val nativeAppTemplateApiError: NativeAppTemplateApiError?

try {
nativeAppTemplateApiError = response.deserializeErrorBody<Status, NativeAppTemplateApiError>()
} catch (exception: Exception) {
val message = "Not processable error(${message()})."
throw Exception(message)
}

if (nativeAppTemplateApiError != null) {
val message = "${nativeAppTemplateApiError.message} [Status: ${nativeAppTemplateApiError.code}]"
throw Exception(message)
} else {
val message = "Not processable error(${message()})."
throw Exception(message)
}
}
emitApiResponse<Status, Boolean>(response) { true }
}.flowOn(ioDispatcher)

override suspend fun setShouldFetchItemTagForShowTagInfoScan(shouldFetchItemTagForShowTagInfoScan: Boolean) {
Expand Down
Loading
Loading