mirror of
https://github.com/openMF/mobile-wallet.git
synced 2026-02-06 09:37:24 +00:00
fix: Handle No Accounts in Home and Serializable Error in Transactions (#1938)
This commit is contained in:
parent
cd710437b2
commit
b218d3fa33
@ -15,7 +15,7 @@ import kotlinx.serialization.Serializable
|
||||
data class TransactionsEntity(
|
||||
val id: Long,
|
||||
val transactionType: TransactionType,
|
||||
val entryType: String,
|
||||
val entryType: String? = null,
|
||||
val accountId: Long,
|
||||
val accountNo: String,
|
||||
val date: List<Int>,
|
||||
|
||||
@ -204,7 +204,7 @@ fun TransactionItem(
|
||||
blue = 0f,
|
||||
)
|
||||
|
||||
else -> KptTheme.colorScheme.scrim
|
||||
else -> KptTheme.colorScheme.onSurface
|
||||
},
|
||||
textAlign = TextAlign.End,
|
||||
),
|
||||
|
||||
@ -33,5 +33,6 @@
|
||||
<string name="feature_home_account_success">Account marked as default</string>
|
||||
<string name="feature_home_account_error">Error marking account as default</string>
|
||||
<string name="feature_home_no_account">"No accounts found"</string>
|
||||
<string name="feature_home_account_number">A/c No: %1$s</string>
|
||||
|
||||
</resources>
|
||||
@ -82,11 +82,13 @@ import kotlinx.coroutines.launch
|
||||
import mobile_wallet.feature.home.generated.resources.Res
|
||||
import mobile_wallet.feature.home.generated.resources.arrow_backward
|
||||
import mobile_wallet.feature.home.generated.resources.coin_image
|
||||
import mobile_wallet.feature.home.generated.resources.feature_home_account_number
|
||||
import mobile_wallet.feature.home.generated.resources.feature_home_account_type
|
||||
import mobile_wallet.feature.home.generated.resources.feature_home_arrow_up
|
||||
import mobile_wallet.feature.home.generated.resources.feature_home_coin_image
|
||||
import mobile_wallet.feature.home.generated.resources.feature_home_desc
|
||||
import mobile_wallet.feature.home.generated.resources.feature_home_mark_default
|
||||
import mobile_wallet.feature.home.generated.resources.feature_home_no_account
|
||||
import mobile_wallet.feature.home.generated.resources.feature_home_request
|
||||
import mobile_wallet.feature.home.generated.resources.feature_home_request_money
|
||||
import mobile_wallet.feature.home.generated.resources.feature_home_send
|
||||
@ -117,6 +119,7 @@ import org.mifospay.core.model.savingsaccount.Currency
|
||||
import org.mifospay.core.model.savingsaccount.Status
|
||||
import org.mifospay.core.model.savingsaccount.Transaction
|
||||
import org.mifospay.core.model.savingsaccount.TransactionType
|
||||
import org.mifospay.core.ui.EmptyContentScreen
|
||||
import org.mifospay.core.ui.ErrorScreenContent
|
||||
import org.mifospay.core.ui.MifosDivider
|
||||
import org.mifospay.core.ui.MifosProgressIndicator
|
||||
@ -249,6 +252,14 @@ fun HomeScreenContent(
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
ViewState.NoAccounts -> {
|
||||
EmptyContentScreen(
|
||||
title = stringResource(Res.string.feature_home_no_account),
|
||||
subTitle = "",
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -761,7 +772,7 @@ private fun HomeTransactionHistoryCard(
|
||||
)
|
||||
}
|
||||
Text(
|
||||
text = selectedAccount,
|
||||
text = stringResource(Res.string.feature_home_account_number, selectedAccount),
|
||||
style = KptTheme.typography.bodySmall,
|
||||
)
|
||||
}
|
||||
|
||||
@ -10,7 +10,6 @@
|
||||
package org.mifospay.feature.home
|
||||
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import co.touchlab.kermit.Logger
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.flow.update
|
||||
@ -68,22 +67,37 @@ class HomeViewModel(
|
||||
}
|
||||
|
||||
is DataState.Success -> {
|
||||
val selected = result.data.firstOrNull()
|
||||
mutableStateFlow.update {
|
||||
it.copy(
|
||||
isRefreshing = false,
|
||||
accounts = result.data,
|
||||
accountsWithTransactions = emptyMap(),
|
||||
viewState = ViewState.Content,
|
||||
selectedAccount = selected,
|
||||
currentSelectedAccount = selected,
|
||||
)
|
||||
}
|
||||
if (state.defaultAccountId == null && selected != null) {
|
||||
sendAction(HomeAction.MarkAsDefault(selected.id, selected.number))
|
||||
}
|
||||
if (selected != null) {
|
||||
getAccountBasedOnId(selected)
|
||||
if (result.data.isEmpty()) {
|
||||
mutableStateFlow.update {
|
||||
it.copy(
|
||||
isRefreshing = false,
|
||||
accounts = emptyList(),
|
||||
accountsWithTransactions = emptyMap(),
|
||||
viewState = ViewState.NoAccounts,
|
||||
)
|
||||
}
|
||||
} else {
|
||||
val selected = result.data.firstOrNull()
|
||||
|
||||
if (selected != null) {
|
||||
mutableStateFlow.update {
|
||||
it.copy(
|
||||
isRefreshing = false,
|
||||
accounts = result.data,
|
||||
accountsWithTransactions = emptyMap(),
|
||||
viewState = ViewState.Content,
|
||||
selectedAccount = selected,
|
||||
currentSelectedAccount = selected,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
if (state.defaultAccountId == null && selected != null) {
|
||||
sendAction(HomeAction.MarkAsDefault(selected.id, selected.number))
|
||||
}
|
||||
if (selected != null) {
|
||||
getAccountBasedOnId(selected)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -104,9 +118,6 @@ class HomeViewModel(
|
||||
}
|
||||
applyFilter()
|
||||
} else {
|
||||
Logger.e("Revanth") {
|
||||
account.toString()
|
||||
}
|
||||
// cancel the previous job if it's still active
|
||||
loadTransactionsJob?.cancel()
|
||||
|
||||
@ -352,6 +363,8 @@ sealed interface ViewState {
|
||||
data class Error(val message: StringResource) : ViewState
|
||||
|
||||
data object Content : ViewState
|
||||
|
||||
data object NoAccounts : ViewState
|
||||
}
|
||||
|
||||
sealed interface HomeEvent {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user