🛠️ Always show refresh indicator in Library
* Shows when searching and refreshing
This commit is contained in:
parent
7be0fe6d0c
commit
14ac7dbc82
3 changed files with 29 additions and 10 deletions
|
|
@ -15,7 +15,7 @@ import ua.acclorite.book_story.domain.library.category.CategoryWithBooks
|
|||
@Immutable
|
||||
sealed class LibraryEvent {
|
||||
data class OnRefreshList(
|
||||
val showIndicator: Boolean,
|
||||
val loading: Boolean,
|
||||
val hideSearch: Boolean
|
||||
) : LibraryEvent()
|
||||
|
||||
|
|
|
|||
|
|
@ -46,7 +46,12 @@ class LibraryModel @Inject constructor(
|
|||
|
||||
init {
|
||||
viewModelScope.launch(Dispatchers.IO) {
|
||||
getBooksFromDatabase("")
|
||||
onEvent(
|
||||
LibraryEvent.OnRefreshList(
|
||||
loading = true,
|
||||
hideSearch = true
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
/* Observe channel - - - - - - - - - - - */
|
||||
|
|
@ -55,7 +60,12 @@ class LibraryModel @Inject constructor(
|
|||
delay(it)
|
||||
yield()
|
||||
|
||||
onEvent(LibraryEvent.OnRefreshList(showIndicator = false, hideSearch = false))
|
||||
onEvent(
|
||||
LibraryEvent.OnRefreshList(
|
||||
loading = false,
|
||||
hideSearch = false
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
/* - - - - - - - - - - - - - - - - - - - */
|
||||
|
|
@ -71,9 +81,8 @@ class LibraryModel @Inject constructor(
|
|||
refreshJob = viewModelScope.launch(Dispatchers.IO) {
|
||||
_state.update {
|
||||
it.copy(
|
||||
isRefreshing = event.showIndicator,
|
||||
isLoading = !event.showIndicator,
|
||||
hasSelectedItems = false,
|
||||
isRefreshing = true,
|
||||
isLoading = event.loading,
|
||||
showSearch = if (event.hideSearch) false else it.showSearch
|
||||
)
|
||||
}
|
||||
|
|
@ -81,7 +90,7 @@ class LibraryModel @Inject constructor(
|
|||
yield()
|
||||
getBooksFromDatabase()
|
||||
|
||||
if (event.showIndicator) delay(500)
|
||||
delay(500)
|
||||
_state.update {
|
||||
it.copy(
|
||||
isRefreshing = false,
|
||||
|
|
@ -94,7 +103,12 @@ class LibraryModel @Inject constructor(
|
|||
is LibraryEvent.OnSearchVisibility -> {
|
||||
viewModelScope.launch(Dispatchers.IO) {
|
||||
if (!event.show) {
|
||||
getBooksFromDatabase("")
|
||||
onEvent(
|
||||
LibraryEvent.OnRefreshList(
|
||||
loading = false,
|
||||
hideSearch = true
|
||||
)
|
||||
)
|
||||
} else {
|
||||
_state.update {
|
||||
it.copy(
|
||||
|
|
@ -130,7 +144,12 @@ class LibraryModel @Inject constructor(
|
|||
|
||||
is LibraryEvent.OnSearch -> {
|
||||
viewModelScope.launch(Dispatchers.IO) {
|
||||
getBooksFromDatabase()
|
||||
onEvent(
|
||||
LibraryEvent.OnRefreshList(
|
||||
loading = false,
|
||||
hideSearch = false
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ object LibraryScreen : Screen, Parcelable {
|
|||
onRefresh = {
|
||||
screenModel.onEvent(
|
||||
LibraryEvent.OnRefreshList(
|
||||
showIndicator = true,
|
||||
loading = false,
|
||||
hideSearch = true
|
||||
)
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue