mirror of
https://github.com/mihonapp/mihon.git
synced 2024-11-21 20:47:03 -05:00
Avoid some crashes
This commit is contained in:
parent
410fcb73c5
commit
a3f3f9d562
2 changed files with 8 additions and 10 deletions
|
@ -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> {
|
||||
|
|
Loading…
Reference in a new issue