Skip to content

Commit 058be55

Browse files
fix #2431 Progessbar Correct state transition logic
1 parent 6b7a334 commit 058be55

File tree

2 files changed

+42
-18
lines changed

2 files changed

+42
-18
lines changed

app/src/main/java/org/mifos/mobile/ui/fragments/RecentTransactionsFragment.kt

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import android.view.ViewGroup
88
import android.widget.Toast
99
import androidx.fragment.app.viewModels
1010
import androidx.lifecycle.Lifecycle
11-
import androidx.lifecycle.ViewModelProvider
1211
import androidx.lifecycle.lifecycleScope
1312
import androidx.lifecycle.repeatOnLifecycle
1413
import androidx.recyclerview.widget.LinearLayoutManager
@@ -23,8 +22,12 @@ import org.mifos.mobile.models.Transaction
2322
import org.mifos.mobile.ui.activities.base.BaseActivity
2423
import org.mifos.mobile.ui.adapters.RecentTransactionListAdapter
2524
import org.mifos.mobile.ui.fragments.base.BaseFragment
26-
import org.mifos.mobile.utils.*
25+
import org.mifos.mobile.utils.Constants
26+
import org.mifos.mobile.utils.DividerItemDecoration
27+
import org.mifos.mobile.utils.EndlessRecyclerViewScrollListener
2728
import org.mifos.mobile.utils.Network.isConnected
29+
import org.mifos.mobile.utils.RecentTransactionUiState
30+
import org.mifos.mobile.utils.Toaster
2831
import org.mifos.mobile.viewModels.RecentTransactionViewModel
2932
import javax.inject.Inject
3033

@@ -71,32 +74,43 @@ class RecentTransactionsFragment : BaseFragment(), OnRefreshListener {
7174

7275
viewLifecycleOwner.lifecycleScope.launch {
7376
repeatOnLifecycle(Lifecycle.State.STARTED) {
74-
recentTransactionViewModel.recentTransactionUiState.collect{
77+
recentTransactionViewModel.recentTransactionUiState.collect {
7578
when (it) {
79+
7680
is RecentTransactionUiState.Loading -> showProgress()
7781
is RecentTransactionUiState.RecentTransactions -> {
7882
hideProgress()
7983
showRecentTransactions(it.transactions)
8084
}
85+
8186
is RecentTransactionUiState.Error -> {
8287
hideProgress()
8388
showMessage(getString(it.message))
8489
}
90+
8591
is RecentTransactionUiState.EmptyTransaction -> {
8692
hideProgress()
8793
showEmptyTransaction()
8894
}
95+
8996
is RecentTransactionUiState.LoadMoreRecentTransactions -> {
9097
hideProgress()
9198
showLoadMoreRecentTransactions(it.transactions)
9299
}
93100

94-
RecentTransactionUiState.Initial -> {}
101+
102+
else -> {
103+
hideProgress()
104+
105+
}
95106
}
96107
}
97108
}
98109
}
99110

111+
112+
113+
100114
binding.layoutError.btnTryAgain.setOnClickListener {
101115
retryClicked()
102116
}

app/src/main/java/org/mifos/mobile/viewModels/RecentTransactionViewModel.kt

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,24 +28,34 @@ class RecentTransactionViewModel @Inject constructor(private val recentTransacti
2828
loadRecentTransactions(offset, limit)
2929
}
3030

31-
private fun loadRecentTransactions(offset: Int, limit: Int) {
31+
private fun loadRecentTransactions(offset: Int, limit: Int, refresh: Boolean = false) {
3232
viewModelScope.launch {
33-
_recentTransactionUiState.value = RecentTransactionUiState.Loading
34-
recentTransactionRepositoryImp.recentTransactions(offset, limit).catch {
35-
_recentTransactionUiState.value =
36-
RecentTransactionUiState.Error(R.string.recent_transactions)
37-
}.collect {
38-
if (it.totalFilteredRecords == 0) {
39-
_recentTransactionUiState.value = RecentTransactionUiState.EmptyTransaction
40-
} else if (loadmore && it.pageItems.isNotEmpty()) {
41-
_recentTransactionUiState.value =
42-
RecentTransactionUiState.LoadMoreRecentTransactions(it.pageItems)
43-
} else if (it.pageItems.isNotEmpty()) {
33+
try {
34+
_recentTransactionUiState.value = RecentTransactionUiState.Loading
35+
36+
recentTransactionRepositoryImp.recentTransactions(offset, limit).catch {
37+
4438
_recentTransactionUiState.value =
45-
RecentTransactionUiState.RecentTransactions(it.pageItems)
39+
RecentTransactionUiState.Error(R.string.recent_transactions)
40+
}.collect {
41+
if (it.totalFilteredRecords == 0) {
42+
43+
_recentTransactionUiState.value = RecentTransactionUiState.EmptyTransaction
44+
} else if (loadmore && it.pageItems.isNotEmpty()) {
45+
46+
_recentTransactionUiState.value =
47+
RecentTransactionUiState.LoadMoreRecentTransactions(it.pageItems)
48+
} else if (it.pageItems.isNotEmpty()) {
49+
50+
_recentTransactionUiState.value =
51+
RecentTransactionUiState.RecentTransactions(it.pageItems)
52+
}
4653
}
54+
} finally {
55+
_recentTransactionUiState.value = RecentTransactionUiState.Initial
4756
}
57+
4858
}
4959
}
60+
}
5061

51-
}

0 commit comments

Comments
 (0)