mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +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