mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Maybe avoid extensions list rendering crashes
This commit is contained in:
		@@ -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() }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user