mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-30 22:07:57 +01:00 
			
		
		
		
	Fix derivedStateOf errors (#8008)
This commit is contained in:
		| @@ -11,6 +11,7 @@ import eu.kanade.presentation.library.components.LibraryContent | ||||
| import eu.kanade.presentation.library.components.LibraryToolbar | ||||
| import eu.kanade.tachiyomi.source.LocalSource | ||||
| import eu.kanade.tachiyomi.ui.library.LibraryPresenter | ||||
| import eu.kanade.tachiyomi.ui.library.setting.display | ||||
|  | ||||
| @Composable | ||||
| fun LibraryScreen( | ||||
| @@ -72,7 +73,7 @@ fun LibraryScreen( | ||||
|                     onRefresh = onClickRefresh, | ||||
|                     onGlobalSearchClicked = onGlobalSearchClicked, | ||||
|                     getNumberOfMangaForCategory = { presenter.getMangaCountForCategory(it) }, | ||||
|                     getDisplayModeForPage = { presenter.getDisplayMode(index = it) }, | ||||
|                     getDisplayModeForPage = { presenter.categories[it].display }, | ||||
|                     getColumnsForOrientation = { presenter.getColumnsPreferenceForCurrentOrientation(it) }, | ||||
|                     getLibraryForPage = { presenter.getMangaForCategory(page = it) }, | ||||
|                     isIncognitoMode = presenter.isIncognitoMode, | ||||
|   | ||||
| @@ -45,9 +45,9 @@ fun LibraryContent( | ||||
|     onRefresh: (Category?) -> Boolean, | ||||
|     onGlobalSearchClicked: () -> Unit, | ||||
|     getNumberOfMangaForCategory: @Composable (Long) -> State<Int?>, | ||||
|     getDisplayModeForPage: @Composable (Int) -> State<LibraryDisplayMode>, | ||||
|     getDisplayModeForPage: @Composable (Int) -> LibraryDisplayMode, | ||||
|     getColumnsForOrientation: (Boolean) -> PreferenceMutableState<Int>, | ||||
|     getLibraryForPage: @Composable (Int) -> State<List<LibraryItem>>, | ||||
|     getLibraryForPage: @Composable (Int) -> List<LibraryItem>, | ||||
| ) { | ||||
|     Column( | ||||
|         modifier = Modifier.padding(contentPadding), | ||||
|   | ||||
| @@ -3,7 +3,6 @@ package eu.kanade.presentation.library.components | ||||
| import android.content.res.Configuration | ||||
| import androidx.compose.foundation.layout.fillMaxSize | ||||
| import androidx.compose.runtime.Composable | ||||
| import androidx.compose.runtime.State | ||||
| import androidx.compose.runtime.getValue | ||||
| import androidx.compose.runtime.mutableStateOf | ||||
| import androidx.compose.runtime.remember | ||||
| @@ -24,9 +23,9 @@ fun LibraryPager( | ||||
|     selectedManga: List<LibraryManga>, | ||||
|     searchQuery: String?, | ||||
|     onGlobalSearchClicked: () -> Unit, | ||||
|     getDisplayModeForPage: @Composable (Int) -> State<LibraryDisplayMode>, | ||||
|     getDisplayModeForPage: @Composable (Int) -> LibraryDisplayMode, | ||||
|     getColumnsForOrientation: (Boolean) -> PreferenceMutableState<Int>, | ||||
|     getLibraryForPage: @Composable (Int) -> State<List<LibraryItem>>, | ||||
|     getLibraryForPage: @Composable (Int) -> List<LibraryItem>, | ||||
|     onClickManga: (LibraryManga) -> Unit, | ||||
|     onLongClickManga: (LibraryManga) -> Unit, | ||||
| ) { | ||||
| @@ -40,8 +39,8 @@ fun LibraryPager( | ||||
|             // To make sure only one offscreen page is being composed | ||||
|             return@HorizontalPager | ||||
|         } | ||||
|         val library by getLibraryForPage(page) | ||||
|         val displayMode by getDisplayModeForPage(page) | ||||
|         val library = getLibraryForPage(page) | ||||
|         val displayMode = getDisplayModeForPage(page) | ||||
|         val columns by if (displayMode != LibraryDisplayMode.List) { | ||||
|             val configuration = LocalConfiguration.current | ||||
|             val isLandscape = configuration.orientation == Configuration.ORIENTATION_LANDSCAPE | ||||
|   | ||||
| @@ -43,9 +43,7 @@ import eu.kanade.tachiyomi.source.SourceManager | ||||
| import eu.kanade.tachiyomi.source.model.SManga | ||||
| import eu.kanade.tachiyomi.source.online.HttpSource | ||||
| import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter | ||||
| import eu.kanade.tachiyomi.ui.library.setting.LibraryDisplayMode | ||||
| import eu.kanade.tachiyomi.ui.library.setting.LibrarySort | ||||
| import eu.kanade.tachiyomi.ui.library.setting.display | ||||
| import eu.kanade.tachiyomi.ui.library.setting.sort | ||||
| import eu.kanade.tachiyomi.util.lang.combineLatest | ||||
| import eu.kanade.tachiyomi.util.lang.launchIO | ||||
| @@ -642,13 +640,12 @@ class LibraryPresenter( | ||||
|     } | ||||
|  | ||||
|     @Composable | ||||
|     fun getMangaForCategory(page: Int): androidx.compose.runtime.State<List<LibraryItem>> { | ||||
|         val categoryId = remember(categories) { | ||||
|             categories.getOrNull(page)?.id ?: -1 | ||||
|     fun getMangaForCategory(page: Int): List<LibraryItem> { | ||||
|         val unfiltered = remember(categories, loadedManga) { | ||||
|             val categoryId = categories.getOrNull(page)?.id ?: -1 | ||||
|             loadedManga[categoryId] ?: emptyList() | ||||
|         } | ||||
|         val unfiltered = loadedManga[categoryId] ?: emptyList() | ||||
|  | ||||
|         return derivedStateOf { | ||||
|         return remember(unfiltered) { | ||||
|             val query = searchQuery | ||||
|             if (query.isNullOrBlank().not()) { | ||||
|                 unfiltered.filter { | ||||
| @@ -660,14 +657,6 @@ class LibraryPresenter( | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Composable | ||||
|     fun getDisplayMode(index: Int): androidx.compose.runtime.State<LibraryDisplayMode> { | ||||
|         val category = categories[index] | ||||
|         return derivedStateOf { | ||||
|             category.display | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     fun clearSelection() { | ||||
|         state.selection = emptyList() | ||||
|     } | ||||
|   | ||||
| @@ -11,7 +11,6 @@ import androidx.compose.material3.SnackbarHostState | ||||
| import androidx.compose.material3.SnackbarResult | ||||
| import androidx.compose.runtime.Composable | ||||
| import androidx.compose.runtime.collectAsState | ||||
| import androidx.compose.runtime.derivedStateOf | ||||
| import androidx.compose.runtime.getValue | ||||
| import androidx.compose.runtime.remember | ||||
| import androidx.compose.runtime.rememberCoroutineScope | ||||
| @@ -111,13 +110,6 @@ class MangaController : FullComposeController<MangaPresenter> { | ||||
|             return | ||||
|         } | ||||
|  | ||||
|         val dialog by derivedStateOf { | ||||
|             when (val state = state) { | ||||
|                 MangaScreenState.Loading -> null | ||||
|                 is MangaScreenState.Success -> state.dialog | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         val successState = state as MangaScreenState.Success | ||||
|         val isHttpSource = remember { successState.source is HttpSource } | ||||
|         val scope = rememberCoroutineScope() | ||||
| @@ -152,7 +144,7 @@ class MangaController : FullComposeController<MangaPresenter> { | ||||
|         ) | ||||
|  | ||||
|         val onDismissRequest = { presenter.dismissDialog() } | ||||
|         when (val dialog = dialog) { | ||||
|         when (val dialog = (state as? MangaScreenState.Success)?.dialog) { | ||||
|             is Dialog.ChangeCategory -> { | ||||
|                 ChangeCategoryDialog( | ||||
|                     initialSelection = dialog.initialSelection, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user