mirror of
https://github.com/Suwayomi/TachideskJUI.git
synced 2025-12-10 06:42:05 +01:00
Fix reader mode not updating after changing the value
This commit is contained in:
@@ -9,6 +9,7 @@ package ca.gosyer.jui.domain.manga.interactor
|
||||
import ca.gosyer.jui.domain.ServerListeners
|
||||
import ca.gosyer.jui.domain.manga.model.Manga
|
||||
import ca.gosyer.jui.domain.manga.service.MangaRepository
|
||||
import io.ktor.http.encodeURLQueryComponent
|
||||
import kotlinx.coroutines.flow.catch
|
||||
import kotlinx.coroutines.flow.collect
|
||||
import kotlinx.coroutines.flow.flow
|
||||
@@ -35,7 +36,7 @@ class UpdateMangaMeta @Inject constructor(
|
||||
manga: Manga,
|
||||
readerMode: String = manga.meta.juiReaderMode
|
||||
) = flow {
|
||||
if (readerMode != manga.meta.juiReaderMode) {
|
||||
if (readerMode.encodeURLQueryComponent() != manga.meta.juiReaderMode.encodeURLQueryComponent()) {
|
||||
mangaRepository.updateMangaMeta(
|
||||
manga.id,
|
||||
"juiReaderMode",
|
||||
|
||||
@@ -37,6 +37,7 @@ import ca.gosyer.jui.ui.reader.model.ViewerChapters
|
||||
import ca.gosyer.jui.uicore.prefs.asStateIn
|
||||
import ca.gosyer.jui.uicore.vm.ContextWrapper
|
||||
import ca.gosyer.jui.uicore.vm.ViewModel
|
||||
import io.ktor.http.decodeURLQueryComponent
|
||||
import kotlinx.collections.immutable.ImmutableList
|
||||
import kotlinx.collections.immutable.persistentListOf
|
||||
import kotlinx.collections.immutable.toImmutableList
|
||||
@@ -114,12 +115,13 @@ class ReaderMenuViewModel @Inject constructor(
|
||||
.map { it.toImmutableList() }
|
||||
.stateIn(scope, SharingStarted.Eagerly, persistentListOf())
|
||||
val readerMode = combine(readerPreferences.mode().getAsFlow(), _manga) { mode, manga ->
|
||||
val mangaMode = manga?.meta?.juiReaderMode?.decodeURLQueryComponent()
|
||||
if (
|
||||
manga != null &&
|
||||
manga.meta.juiReaderMode != MangaMeta.DEFAULT_READER_MODE &&
|
||||
manga.meta.juiReaderMode in readerModes.value
|
||||
mangaMode != null &&
|
||||
mangaMode != MangaMeta.DEFAULT_READER_MODE &&
|
||||
mangaMode in readerModes.value
|
||||
) {
|
||||
manga.meta.juiReaderMode
|
||||
mangaMode
|
||||
} else {
|
||||
mode
|
||||
}
|
||||
|
||||
@@ -41,7 +41,6 @@ import androidx.compose.material.icons.rounded.NavigateNext
|
||||
import androidx.compose.material.icons.rounded.SkipNext
|
||||
import androidx.compose.material.icons.rounded.SkipPrevious
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.derivedStateOf
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
@@ -63,6 +62,7 @@ import ca.gosyer.jui.uicore.resources.stringResource
|
||||
import kotlinx.collections.immutable.ImmutableList
|
||||
import kotlinx.collections.immutable.persistentListOf
|
||||
import kotlinx.collections.immutable.plus
|
||||
import kotlinx.collections.immutable.toPersistentList
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
@Composable
|
||||
@@ -221,10 +221,10 @@ fun ReaderSheet(
|
||||
|
||||
@Composable
|
||||
fun ReaderModeSetting(readerModes: ImmutableList<String>, selectedMode: String, onSetReaderMode: (String) -> Unit) {
|
||||
val modes by derivedStateOf { persistentListOf(MangaMeta.DEFAULT_READER_MODE) + readerModes }
|
||||
val modes = remember { persistentListOf(MangaMeta.DEFAULT_READER_MODE) + readerModes }
|
||||
val defaultModeString = stringResource(MR.strings.default_reader_mode)
|
||||
val displayModes by derivedStateOf { modes.replace(0, defaultModeString) }
|
||||
val selectedModeIndex by derivedStateOf { modes.indexOf(selectedMode) }
|
||||
val displayModes = remember { modes.replace(0, defaultModeString).toPersistentList() }
|
||||
val selectedModeIndex = remember(selectedMode) { modes.indexOf(selectedMode) }
|
||||
Row(
|
||||
Modifier.fillMaxWidth()
|
||||
.defaultMinSize(minHeight = 56.dp)
|
||||
|
||||
Reference in New Issue
Block a user