From 0af0905d1128c877ee3036e4569b5c64193271f2 Mon Sep 17 00:00:00 2001 From: Alejo Date: Thu, 5 Sep 2024 19:00:27 -0600 Subject: [PATCH 1/2] add not expired states --- .../java/org/wordpress/android/fluxc/model/list/ListState.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fluxc/src/main/java/org/wordpress/android/fluxc/model/list/ListState.kt b/fluxc/src/main/java/org/wordpress/android/fluxc/model/list/ListState.kt index 6ac9a1d9a2..10c5710164 100644 --- a/fluxc/src/main/java/org/wordpress/android/fluxc/model/list/ListState.kt +++ b/fluxc/src/main/java/org/wordpress/android/fluxc/model/list/ListState.kt @@ -21,6 +21,7 @@ enum class ListState(val value: Int) { fun isLoadingMore() = this == LOADING_MORE companion object { - val defaultState = ListState.NEEDS_REFRESH + val defaultState = NEEDS_REFRESH + val notExpiredStates = setOf(CAN_LOAD_MORE, FETCHED) } } From 3d6d1df2e25d7ea902359f75488bd95541c23df3 Mon Sep 17 00:00:00 2001 From: Alejo Date: Thu, 5 Sep 2024 19:01:13 -0600 Subject: [PATCH 2/2] take into account not expired states in getListState --- .../org/wordpress/android/fluxc/store/ListStore.kt | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/fluxc/src/main/java/org/wordpress/android/fluxc/store/ListStore.kt b/fluxc/src/main/java/org/wordpress/android/fluxc/store/ListStore.kt index ff0a80b891..aa7870c0a3 100644 --- a/fluxc/src/main/java/org/wordpress/android/fluxc/store/ListStore.kt +++ b/fluxc/src/main/java/org/wordpress/android/fluxc/store/ListStore.kt @@ -351,14 +351,17 @@ class ListStore @Inject constructor( /** * A helper function that returns the [ListState] for the given [ListDescriptor]. */ - private fun getListState(listDescriptor: ListDescriptor): ListState { + fun getListState(listDescriptor: ListDescriptor): ListState { val listModel = listSqlUtils.getList(listDescriptor) - return if (listModel != null && !isListStateOutdated(listModel)) { - requireNotNull(ListState.values().firstOrNull { it.value == listModel.stateDbValue }) { + val currentState = listModel?.let { + requireNotNull(ListState.entries.firstOrNull { it.value == listModel.stateDbValue }) { "The stateDbValue of the ListModel didn't match any of the `ListState`s. This likely happened " + "because the ListState values were altered without a DB migration." } - } else ListState.defaultState + } + val isListStateValid = currentState != null + && (isListStateOutdated(listModel).not() || (currentState in ListState.notExpiredStates)) + return if (isListStateValid) currentState!! else ListState.defaultState } /**