mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Avoid some crashes
This commit is contained in:
		@@ -20,7 +20,6 @@ import kotlinx.coroutines.flow.collectLatest
 | 
			
		||||
 | 
			
		||||
class CategoryScreen : Screen {
 | 
			
		||||
 | 
			
		||||
    // Fix certain crash when wrapped inside a Controller
 | 
			
		||||
    override val key = uniqueScreenKey
 | 
			
		||||
 | 
			
		||||
    @Composable
 | 
			
		||||
 
 | 
			
		||||
@@ -589,7 +589,7 @@ class LibraryScreenModel(
 | 
			
		||||
        return withIOContext {
 | 
			
		||||
            state.value
 | 
			
		||||
                .getLibraryItemsByCategoryId(activeCategory.toLong())
 | 
			
		||||
                .randomOrNull()
 | 
			
		||||
                ?.randomOrNull()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -624,7 +624,7 @@ class LibraryScreenModel(
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                val items = state.getLibraryItemsByCategoryId(manga.category)
 | 
			
		||||
                    .fastMap { it.libraryManga }
 | 
			
		||||
                    ?.fastMap { it.libraryManga }.orEmpty()
 | 
			
		||||
                val lastMangaIndex = items.indexOf(lastSelected)
 | 
			
		||||
                val curMangaIndex = items.indexOf(manga)
 | 
			
		||||
 | 
			
		||||
@@ -649,12 +649,11 @@ class LibraryScreenModel(
 | 
			
		||||
            val newSelection = state.selection.toMutableList().apply {
 | 
			
		||||
                val categoryId = state.categories.getOrNull(index)?.id ?: -1
 | 
			
		||||
                val selectedIds = fastMap { it.id }
 | 
			
		||||
                val newSelections = state.getLibraryItemsByCategoryId(categoryId)
 | 
			
		||||
                    .fastMapNotNull { item ->
 | 
			
		||||
                state.getLibraryItemsByCategoryId(categoryId)
 | 
			
		||||
                    ?.fastMapNotNull { item ->
 | 
			
		||||
                        item.libraryManga.takeUnless { it.id in selectedIds }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                addAll(newSelections)
 | 
			
		||||
                    ?.let { addAll(it) }
 | 
			
		||||
            }
 | 
			
		||||
            state.copy(selection = newSelection)
 | 
			
		||||
        }
 | 
			
		||||
@@ -664,7 +663,7 @@ class LibraryScreenModel(
 | 
			
		||||
        mutableState.update { state ->
 | 
			
		||||
            val newSelection = state.selection.toMutableList().apply {
 | 
			
		||||
                val categoryId = state.categories[index].id
 | 
			
		||||
                val items = state.getLibraryItemsByCategoryId(categoryId).fastMap { it.libraryManga }
 | 
			
		||||
                val items = state.getLibraryItemsByCategoryId(categoryId)?.fastMap { it.libraryManga }.orEmpty()
 | 
			
		||||
                val selectedIds = fastMap { it.id }
 | 
			
		||||
                val (toRemove, toAdd) = items.fastPartition { it.id in selectedIds }
 | 
			
		||||
                val toRemoveIds = toRemove.fastMap { it.id }
 | 
			
		||||
@@ -755,8 +754,8 @@ class LibraryScreenModel(
 | 
			
		||||
                .size
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        fun getLibraryItemsByCategoryId(categoryId: Long): List<LibraryItem> {
 | 
			
		||||
            return library.firstNotNullOf { (k, v) -> v.takeIf { k.id == categoryId } }
 | 
			
		||||
        fun getLibraryItemsByCategoryId(categoryId: Long): List<LibraryItem>? {
 | 
			
		||||
            return library.firstNotNullOfOrNull { (k, v) -> v.takeIf { k.id == categoryId } }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        fun getLibraryItemsByPage(page: Int): List<LibraryItem> {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user