Fix crashing issues with Screen
This commit is contained in:
parent
1c61efd8e9
commit
2bbda8c0bd
5 changed files with 30 additions and 37 deletions
|
|
@ -36,7 +36,6 @@ import dev.chrisbanes.haze.HazeState
|
|||
import dev.chrisbanes.haze.hazeChild
|
||||
import eu.kanade.domain.manga.model.hasCustomCover
|
||||
import eu.kanade.domain.manga.model.toSManga
|
||||
import eu.kanade.domain.ui.UiPreferences
|
||||
import eu.kanade.presentation.category.components.ChangeCategoryDialog
|
||||
import eu.kanade.presentation.components.NavigatorAdaptiveSheet
|
||||
import eu.kanade.presentation.manga.ChapterSettingsDialog
|
||||
|
|
@ -124,13 +123,6 @@ class MangaScreen(
|
|||
|
||||
override fun onProvideAssistUrl() = assistUrl
|
||||
|
||||
// KMK -->
|
||||
private val uiPreferences = Injekt.get<UiPreferences>()
|
||||
private val themeCoverBased = uiPreferences.themeCoverBased().get()
|
||||
private val themeDarkAmoled = uiPreferences.themeDarkAmoled().get()
|
||||
private val themeCoverBasedStyle = uiPreferences.themeCoverBasedStyle().get()
|
||||
// KMK <--
|
||||
|
||||
@Composable
|
||||
override fun Content() {
|
||||
if (!ifSourcesLoaded()) {
|
||||
|
|
@ -202,12 +194,12 @@ class MangaScreen(
|
|||
}
|
||||
|
||||
val seedColor = successState.seedColor
|
||||
if (themeCoverBased && seedColor != null) {
|
||||
if (screenModel.themeCoverBased && seedColor != null) {
|
||||
DynamicMaterialTheme(
|
||||
seedColor = seedColor,
|
||||
useDarkTheme = isSystemInDarkTheme(),
|
||||
withAmoled = themeDarkAmoled,
|
||||
style = themeCoverBasedStyle,
|
||||
withAmoled = screenModel.themeDarkAmoled,
|
||||
style = screenModel.themeCoverBasedStyle,
|
||||
animate = true,
|
||||
content = { content() },
|
||||
)
|
||||
|
|
@ -387,7 +379,9 @@ class MangaScreen(
|
|||
navigator.push(ExtensionsScreen(searchSource = successState.source.name))
|
||||
}
|
||||
},
|
||||
onCoverLoaded = { if (themeCoverBased || successState.manga.favorite) screenModel.setPaletteColor(it) },
|
||||
onCoverLoaded = {
|
||||
if (screenModel.themeCoverBased || successState.manga.favorite) screenModel.setPaletteColor(it)
|
||||
},
|
||||
onPaletteScreenClick = { navigator.push(PaletteScreen(successState.seedColor?.toArgb())) },
|
||||
hazeState = hazeState,
|
||||
// KMK <--
|
||||
|
|
@ -691,7 +685,7 @@ class MangaScreen(
|
|||
seedColor: Color?,
|
||||
// KMK <--
|
||||
) {
|
||||
navigator.push(MetadataViewScreen(manga.id, manga.source, seedColor))
|
||||
navigator.push(MetadataViewScreen(manga.id, manga.source, seedColor?.toArgb()))
|
||||
}
|
||||
|
||||
private fun openMergedMangaWebview(context: Context, navigator: Navigator, mergedMangaData: MergedMangaData) {
|
||||
|
|
|
|||
|
|
@ -223,6 +223,9 @@ class MangaScreenModel(
|
|||
|
||||
// KMK -->
|
||||
val useNewSourceNavigation by uiPreferences.useNewSourceNavigation().asState(screenModelScope)
|
||||
val themeCoverBased = uiPreferences.themeCoverBased().get()
|
||||
val themeDarkAmoled = uiPreferences.themeDarkAmoled().get()
|
||||
val themeCoverBasedStyle = uiPreferences.themeCoverBasedStyle().get()
|
||||
// KMK <--
|
||||
|
||||
val manga: Manga?
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@ import androidx.compose.material3.MaterialTheme
|
|||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.contentColorFor
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.unit.dp
|
||||
|
|
@ -33,15 +32,13 @@ class PaletteScreen(
|
|||
@ColorInt private val seedColor: Int?,
|
||||
) : Screen() {
|
||||
|
||||
// KMK -->
|
||||
private val uiPreferences = Injekt.get<UiPreferences>()
|
||||
private val themeCoverBased = uiPreferences.themeCoverBased().get()
|
||||
private val themeDarkAmoled = uiPreferences.themeDarkAmoled().get()
|
||||
private val themeCoverBasedStyle = uiPreferences.themeCoverBasedStyle().get()
|
||||
// KMK <--
|
||||
|
||||
@Composable
|
||||
override fun Content() {
|
||||
val uiPreferences = Injekt.get<UiPreferences>()
|
||||
val themeCoverBased = uiPreferences.themeCoverBased().get()
|
||||
val themeDarkAmoled = uiPreferences.themeDarkAmoled().get()
|
||||
val themeCoverBasedStyle = uiPreferences.themeCoverBasedStyle().get()
|
||||
|
||||
val seedColor = seedColor?.let { Color(it) } ?: MaterialTheme.colorScheme.primary
|
||||
|
||||
if (themeCoverBased) {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package exh.ui.metadata
|
||||
|
||||
import androidx.annotation.ColorInt
|
||||
import androidx.compose.foundation.isSystemInDarkTheme
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.WindowInsets
|
||||
|
|
@ -24,7 +25,6 @@ import cafe.adriel.voyager.core.model.rememberScreenModel
|
|||
import cafe.adriel.voyager.navigator.LocalNavigator
|
||||
import cafe.adriel.voyager.navigator.currentOrThrow
|
||||
import com.materialkolor.DynamicMaterialTheme
|
||||
import eu.kanade.domain.ui.UiPreferences
|
||||
import eu.kanade.presentation.components.AppBar
|
||||
import eu.kanade.presentation.util.Screen
|
||||
import eu.kanade.tachiyomi.util.system.copyToClipboard
|
||||
|
|
@ -36,24 +36,14 @@ import tachiyomi.presentation.core.screens.EmptyScreen
|
|||
import tachiyomi.presentation.core.screens.LoadingScreen
|
||||
import tachiyomi.presentation.core.util.clickableNoIndication
|
||||
import tachiyomi.presentation.core.util.plus
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
|
||||
class MetadataViewScreen(
|
||||
private val mangaId: Long,
|
||||
private val sourceId: Long,
|
||||
// KMK -->
|
||||
private val seedColor: Color?,
|
||||
@ColorInt private val seedColor: Int?,
|
||||
// KMK <--
|
||||
) : Screen() {
|
||||
|
||||
// KMK -->
|
||||
private val uiPreferences = Injekt.get<UiPreferences>()
|
||||
private val themeCoverBased = uiPreferences.themeCoverBased().get()
|
||||
private val themeDarkAmoled = uiPreferences.themeDarkAmoled().get()
|
||||
private val themeCoverBasedStyle = uiPreferences.themeCoverBasedStyle().get()
|
||||
// KMK <--
|
||||
|
||||
@Composable
|
||||
override fun Content() {
|
||||
val screenModel = rememberScreenModel { MetadataViewScreenModel(mangaId, sourceId) }
|
||||
|
|
@ -119,12 +109,12 @@ class MetadataViewScreen(
|
|||
}
|
||||
|
||||
// KMK -->
|
||||
if (themeCoverBased && seedColor != null) {
|
||||
if (screenModel.themeCoverBased && seedColor != null) {
|
||||
DynamicMaterialTheme(
|
||||
seedColor = seedColor,
|
||||
seedColor = Color(seedColor),
|
||||
useDarkTheme = isSystemInDarkTheme(),
|
||||
withAmoled = themeDarkAmoled,
|
||||
style = themeCoverBasedStyle,
|
||||
withAmoled = screenModel.themeDarkAmoled,
|
||||
style = screenModel.themeCoverBasedStyle,
|
||||
animate = true,
|
||||
content = { content() },
|
||||
)
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package exh.ui.metadata
|
|||
|
||||
import cafe.adriel.voyager.core.model.StateScreenModel
|
||||
import cafe.adriel.voyager.core.model.screenModelScope
|
||||
import eu.kanade.domain.ui.UiPreferences
|
||||
import eu.kanade.tachiyomi.source.online.MetadataSource
|
||||
import exh.metadata.metadata.RaisedSearchMetadata
|
||||
import exh.source.getMainSource
|
||||
|
|
@ -22,6 +23,14 @@ class MetadataViewScreenModel(
|
|||
private val sourceManager: SourceManager = Injekt.get(),
|
||||
private val getManga: GetManga = Injekt.get(),
|
||||
) : StateScreenModel<MetadataViewState>(MetadataViewState.Loading) {
|
||||
|
||||
// KMK -->
|
||||
private val uiPreferences = Injekt.get<UiPreferences>()
|
||||
val themeCoverBased = uiPreferences.themeCoverBased().get()
|
||||
val themeDarkAmoled = uiPreferences.themeDarkAmoled().get()
|
||||
val themeCoverBasedStyle = uiPreferences.themeCoverBasedStyle().get()
|
||||
// KMK <--
|
||||
|
||||
private val _manga = MutableStateFlow<Manga?>(null)
|
||||
val manga = _manga.asStateFlow()
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue