Эх сурвалжийг харах

Alternate method of avoiding LazyColumn key conflict crashes

Co-authored-by: ivaniskandar <[email protected]>
arkon 2 жил өмнө
parent
commit
c50b1a5c66

+ 1 - 2
app/src/main/java/eu/kanade/presentation/updates/UpdatesUiItem.kt

@@ -118,10 +118,9 @@ fun LazyListScope.updatesUiItems(
             }
             is UpdatesUiModel.Item -> {
                 val updatesItem = item.item
-                val update = updatesItem.update
                 UpdatesUiItem(
                     modifier = Modifier.animateItemPlacement(),
-                    update = update,
+                    update = updatesItem.update,
                     selected = updatesItem.selected,
                     onLongClick = {
                         onUpdateSelected(updatesItem, !updatesItem.selected, true, true)

+ 2 - 2
app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionsPresenter.kt

@@ -20,9 +20,9 @@ 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.stateIn
 import kotlinx.coroutines.flow.update
 import rx.Observable
 import uy.kohesive.injekt.Injekt
@@ -116,7 +116,7 @@ class ExtensionsPresenter(
 
                 items
             }
-                .debounce(500) // Avoid crashes due to LazyColumn rendering
+                .stateIn(presenterScope)
                 .collectLatest {
                     state.isLoading = false
                     state.items = it

+ 2 - 2
app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesPresenter.kt

@@ -16,8 +16,8 @@ import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.channels.Channel
 import kotlinx.coroutines.flow.catch
 import kotlinx.coroutines.flow.collectLatest
-import kotlinx.coroutines.flow.debounce
 import kotlinx.coroutines.flow.receiveAsFlow
+import kotlinx.coroutines.flow.stateIn
 import logcat.LogPriority
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get
@@ -39,11 +39,11 @@ class SourcesPresenter(
     fun onCreate() {
         presenterScope.launchIO {
             getEnabledSources.subscribe()
-                .debounce(500) // Avoid crashes due to LazyColumn rendering
                 .catch { exception ->
                     logcat(LogPriority.ERROR, exception)
                     _events.send(Event.FailedFetchingSources)
                 }
+                .stateIn(presenterScope)
                 .collectLatest(::collectLatestSources)
         }
     }

+ 2 - 2
app/src/main/java/eu/kanade/tachiyomi/ui/recent/updates/UpdatesPresenter.kt

@@ -33,9 +33,9 @@ import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.catch
 import kotlinx.coroutines.flow.collectLatest
 import kotlinx.coroutines.flow.combine
-import kotlinx.coroutines.flow.debounce
 import kotlinx.coroutines.flow.distinctUntilChanged
 import kotlinx.coroutines.flow.receiveAsFlow
+import kotlinx.coroutines.flow.stateIn
 import kotlinx.coroutines.launch
 import logcat.LogPriority
 import uy.kohesive.injekt.Injekt
@@ -87,11 +87,11 @@ class UpdatesPresenter(
                 getUpdates.subscribe(calendar).distinctUntilChanged(),
                 downloadCache.changes,
             ) { updates, _ -> updates }
-                .debounce(500) // Avoid crashes due to LazyColumn rendering
                 .catch {
                     logcat(LogPriority.ERROR, it)
                     _events.send(Event.InternalError)
                 }
+                .stateIn(presenterScope)
                 .collectLatest { updates ->
                     state.items = updates.toUpdateItems()
                     state.isLoading = false