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.ServerListeners
|
||||||
import ca.gosyer.jui.domain.manga.model.Manga
|
import ca.gosyer.jui.domain.manga.model.Manga
|
||||||
import ca.gosyer.jui.domain.manga.service.MangaRepository
|
import ca.gosyer.jui.domain.manga.service.MangaRepository
|
||||||
|
import io.ktor.http.encodeURLQueryComponent
|
||||||
import kotlinx.coroutines.flow.catch
|
import kotlinx.coroutines.flow.catch
|
||||||
import kotlinx.coroutines.flow.collect
|
import kotlinx.coroutines.flow.collect
|
||||||
import kotlinx.coroutines.flow.flow
|
import kotlinx.coroutines.flow.flow
|
||||||
@@ -35,7 +36,7 @@ class UpdateMangaMeta @Inject constructor(
|
|||||||
manga: Manga,
|
manga: Manga,
|
||||||
readerMode: String = manga.meta.juiReaderMode
|
readerMode: String = manga.meta.juiReaderMode
|
||||||
) = flow {
|
) = flow {
|
||||||
if (readerMode != manga.meta.juiReaderMode) {
|
if (readerMode.encodeURLQueryComponent() != manga.meta.juiReaderMode.encodeURLQueryComponent()) {
|
||||||
mangaRepository.updateMangaMeta(
|
mangaRepository.updateMangaMeta(
|
||||||
manga.id,
|
manga.id,
|
||||||
"juiReaderMode",
|
"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.prefs.asStateIn
|
||||||
import ca.gosyer.jui.uicore.vm.ContextWrapper
|
import ca.gosyer.jui.uicore.vm.ContextWrapper
|
||||||
import ca.gosyer.jui.uicore.vm.ViewModel
|
import ca.gosyer.jui.uicore.vm.ViewModel
|
||||||
|
import io.ktor.http.decodeURLQueryComponent
|
||||||
import kotlinx.collections.immutable.ImmutableList
|
import kotlinx.collections.immutable.ImmutableList
|
||||||
import kotlinx.collections.immutable.persistentListOf
|
import kotlinx.collections.immutable.persistentListOf
|
||||||
import kotlinx.collections.immutable.toImmutableList
|
import kotlinx.collections.immutable.toImmutableList
|
||||||
@@ -114,12 +115,13 @@ class ReaderMenuViewModel @Inject constructor(
|
|||||||
.map { it.toImmutableList() }
|
.map { it.toImmutableList() }
|
||||||
.stateIn(scope, SharingStarted.Eagerly, persistentListOf())
|
.stateIn(scope, SharingStarted.Eagerly, persistentListOf())
|
||||||
val readerMode = combine(readerPreferences.mode().getAsFlow(), _manga) { mode, manga ->
|
val readerMode = combine(readerPreferences.mode().getAsFlow(), _manga) { mode, manga ->
|
||||||
|
val mangaMode = manga?.meta?.juiReaderMode?.decodeURLQueryComponent()
|
||||||
if (
|
if (
|
||||||
manga != null &&
|
mangaMode != null &&
|
||||||
manga.meta.juiReaderMode != MangaMeta.DEFAULT_READER_MODE &&
|
mangaMode != MangaMeta.DEFAULT_READER_MODE &&
|
||||||
manga.meta.juiReaderMode in readerModes.value
|
mangaMode in readerModes.value
|
||||||
) {
|
) {
|
||||||
manga.meta.juiReaderMode
|
mangaMode
|
||||||
} else {
|
} else {
|
||||||
mode
|
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.SkipNext
|
||||||
import androidx.compose.material.icons.rounded.SkipPrevious
|
import androidx.compose.material.icons.rounded.SkipPrevious
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.derivedStateOf
|
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
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.ImmutableList
|
||||||
import kotlinx.collections.immutable.persistentListOf
|
import kotlinx.collections.immutable.persistentListOf
|
||||||
import kotlinx.collections.immutable.plus
|
import kotlinx.collections.immutable.plus
|
||||||
|
import kotlinx.collections.immutable.toPersistentList
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
@@ -221,10 +221,10 @@ fun ReaderSheet(
|
|||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun ReaderModeSetting(readerModes: ImmutableList<String>, selectedMode: String, onSetReaderMode: (String) -> Unit) {
|
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 defaultModeString = stringResource(MR.strings.default_reader_mode)
|
||||||
val displayModes by derivedStateOf { modes.replace(0, defaultModeString) }
|
val displayModes = remember { modes.replace(0, defaultModeString).toPersistentList() }
|
||||||
val selectedModeIndex by derivedStateOf { modes.indexOf(selectedMode) }
|
val selectedModeIndex = remember(selectedMode) { modes.indexOf(selectedMode) }
|
||||||
Row(
|
Row(
|
||||||
Modifier.fillMaxWidth()
|
Modifier.fillMaxWidth()
|
||||||
.defaultMinSize(minHeight = 56.dp)
|
.defaultMinSize(minHeight = 56.dp)
|
||||||
|
|||||||
Reference in New Issue
Block a user