Maybe avoid extensions list rendering crashes

pull/8262/head
arkon 2 years ago
parent fbda243c0d
commit 4138a17e29

@ -119,14 +119,14 @@ private fun ExtensionContent(
items = state.items,
contentType = {
when (it) {
is ExtensionUiModel.Header -> "header"
is ExtensionUiModel.Item -> "item"
else -> "header"
}
},
key = {
when (it) {
is ExtensionUiModel.Header -> "extensionHeader-${it.hashCode()}"
is ExtensionUiModel.Item -> "extension-${it.extension.hashCode()}"
is ExtensionUiModel.Item -> "extension-${it.hashCode()}"
}
},
) { item ->

@ -52,7 +52,7 @@ import java.util.Date
fun LazyListScope.updatesLastUpdatedItem(
lastUpdated: Long,
) {
item(key = "last_updated") {
item(key = "updates-lastUpdated") {
val time = remember(lastUpdated) {
DateUtils.getRelativeTimeSpanString(lastUpdated, Date().time, DateUtils.MINUTE_IN_MILLIS)
}
@ -92,8 +92,8 @@ fun LazyListScope.updatesUiItems(
},
key = {
when (it) {
is UpdatesUiModel.Header -> it.hashCode()
is UpdatesUiModel.Item -> "updates-${it.item.update.chapterId}"
is UpdatesUiModel.Header -> "updatesHeader-${it.hashCode()}"
is UpdatesUiModel.Item -> "updates-${it.item.update.mangaId}-${it.item.update.chapterId}"
}
},
) { item ->

@ -20,6 +20,7 @@ import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.debounce
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.update
@ -114,10 +115,12 @@ class ExtensionsPresenter(
}
items
}.collectLatest {
state.isLoading = false
state.items = it
}
.debounce(500) // Avoid crashes due to LazyColumn rendering
.collectLatest {
state.isLoading = false
state.items = it
}
}
presenterScope.launchIO { findAvailableExtensions() }

Loading…
Cancel
Save