Skip to content

Commit a2b304b

Browse files
fix : transaction_screen empty ui update (#2894)
1 parent 1428ac0 commit a2b304b

File tree

3 files changed

+32
-22
lines changed

3 files changed

+32
-22
lines changed

feature/accounts/src/commonMain/composeResources/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,5 @@
6363
<string name="feature_transaction_type">Transaction Type</string>
6464
<string name="feature_duration">Duration</string>
6565
<string name="feature_no_transactions_found">No Transactions Found</string>
66+
<string name="feature_no__filtered_transactions_found">No Transactions Found for selected Filters</string>
6667
</resources>

feature/accounts/src/commonMain/kotlin/org/mifos/mobile/feature/accounts/accountTransactions/TransactionScreen.kt

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import androidx.compose.ui.unit.dp
3939
import androidx.lifecycle.compose.collectAsStateWithLifecycle
4040
import mifos_mobile.feature.accounts.generated.resources.Res
4141
import mifos_mobile.feature.accounts.generated.resources.feature_duration
42+
import mifos_mobile.feature.accounts.generated.resources.feature_no__filtered_transactions_found
4243
import mifos_mobile.feature.accounts.generated.resources.feature_no_transactions_found
4344
import mifos_mobile.feature.accounts.generated.resources.feature_transaction_filter
4445
import mifos_mobile.feature.accounts.generated.resources.feature_transaction_filter_icon_description
@@ -125,28 +126,33 @@ internal fun TransactionScreenContent(
125126
}
126127
},
127128
) {
128-
LazyColumn(
129-
Modifier.padding(DesignToken.padding.large),
129+
if (state.isEmpty) {
130+
EmptyDataView(
131+
error = Res.string.feature_no_transactions_found,
132+
icon = MifosIcons.Info,
133+
modifier = Modifier.fillMaxSize(),
134+
)
135+
}
136+
137+
if (state.isFilteredRecordsEmpty && !state.isEmpty) {
138+
EmptyDataView(
139+
error = Res.string.feature_no__filtered_transactions_found,
140+
icon = MifosIcons.Info,
141+
modifier = Modifier.fillMaxSize(),
142+
)
143+
}
144+
145+
Column(
146+
Modifier
147+
.fillMaxSize()
148+
.padding(DesignToken.padding.large),
130149
) {
131150
if (!state.isEmpty && state.dialogState != AccountTransactionState.DialogState.Loading) {
132-
item {
133-
ActionBar(
134-
onAction = onAction,
135-
)
136-
}
137-
}
138-
139-
if (state.isEmpty) {
140-
item {
141-
EmptyDataView(
142-
error = Res.string.feature_no_transactions_found,
143-
icon = MifosIcons.Info,
144-
modifier = Modifier.fillMaxSize(),
145-
)
146-
}
151+
ActionBar(
152+
onAction = onAction,
153+
)
147154
}
148-
149-
if (!state.isEmpty) {
155+
LazyColumn {
150156
state.filteredData.forEach { (date, transactions) ->
151157
item {
152158
Text(

feature/accounts/src/commonMain/kotlin/org/mifos/mobile/feature/accounts/accountTransactions/TransactionViewModel.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ internal class AccountsTransactionViewModel(
142142
selectedFilters = selectedFilters,
143143
filteredData = filteredRecords,
144144
isRefreshing = false,
145-
isEmpty = filteredRecords.isEmpty(),
145+
isFilteredRecordsEmpty = filteredRecords.isEmpty(),
146146
)
147147
}
148148
handleDismissDialog()
@@ -254,7 +254,8 @@ internal class AccountsTransactionViewModel(
254254
dialogState = null,
255255
data = transactions,
256256
filteredData = groupedTransactions,
257-
isEmpty = groupedTransactions.isEmpty(),
257+
isEmpty = transactions.isEmpty(),
258+
isFilteredRecordsEmpty = groupedTransactions.isEmpty(),
258259
)
259260
}
260261
}
@@ -298,7 +299,8 @@ internal class AccountsTransactionViewModel(
298299
dialogState = null,
299300
data = transactions,
300301
filteredData = grouped,
301-
isEmpty = grouped.isEmpty(),
302+
isFilteredRecordsEmpty = grouped.isEmpty(),
303+
isEmpty = transactions.isEmpty(),
302304
)
303305
}
304306
}
@@ -450,6 +452,7 @@ internal data class AccountTransactionState(
450452
val accountDurationFiltersCount: Int? = 0,
451453
val selectedRadioButton: StringResource? = null,
452454
val isEmpty: Boolean = false,
455+
val isFilteredRecordsEmpty: Boolean = false,
453456
) {
454457
/**
455458
* Sealed interface representing the different states of the dialog.

0 commit comments

Comments
 (0)