refactor: rename "preferences" to "settings" to maintain consistency
This commit is contained in:
@@ -50,15 +50,15 @@ class MainActivity : ComponentActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
setContent {
|
setContent {
|
||||||
val preferencesState by settingsViewModel.preferencesState.collectAsStateWithLifecycle()
|
val settingsState by settingsViewModel.settingsState.collectAsStateWithLifecycle()
|
||||||
|
|
||||||
val darkTheme = when (preferencesState.theme) {
|
val darkTheme = when (settingsState.theme) {
|
||||||
"dark" -> true
|
"dark" -> true
|
||||||
"light" -> false
|
"light" -> false
|
||||||
else -> isSystemInDarkTheme()
|
else -> isSystemInDarkTheme()
|
||||||
}
|
}
|
||||||
|
|
||||||
val seed = preferencesState.colorScheme.toColor()
|
val seed = settingsState.colorScheme.toColor()
|
||||||
|
|
||||||
val isPlus by settingsViewModel.isPlus.collectAsStateWithLifecycle()
|
val isPlus by settingsViewModel.isPlus.collectAsStateWithLifecycle()
|
||||||
val isPurchaseStateLoaded by settingsViewModel.isPurchaseStateLoaded.collectAsStateWithLifecycle()
|
val isPurchaseStateLoaded by settingsViewModel.isPurchaseStateLoaded.collectAsStateWithLifecycle()
|
||||||
@@ -77,7 +77,7 @@ class MainActivity : ComponentActivity() {
|
|||||||
TomatoTheme(
|
TomatoTheme(
|
||||||
darkTheme = darkTheme,
|
darkTheme = darkTheme,
|
||||||
seedColor = seed,
|
seedColor = seed,
|
||||||
blackTheme = preferencesState.blackTheme
|
blackTheme = settingsState.blackTheme
|
||||||
) {
|
) {
|
||||||
val colorScheme = colorScheme
|
val colorScheme = colorScheme
|
||||||
LaunchedEffect(colorScheme) {
|
LaunchedEffect(colorScheme) {
|
||||||
@@ -86,7 +86,7 @@ class MainActivity : ComponentActivity() {
|
|||||||
|
|
||||||
AppScreen(
|
AppScreen(
|
||||||
isPlus = isPlus,
|
isPlus = isPlus,
|
||||||
isAODEnabled = preferencesState.aodEnabled,
|
isAODEnabled = settingsState.aodEnabled,
|
||||||
setTimerFrequency = {
|
setTimerFrequency = {
|
||||||
appContainer.appTimerRepository.timerFrequency = it
|
appContainer.appTimerRepository.timerFrequency = it
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,8 +73,8 @@ import org.nsh07.pomodoro.ui.settingsScreen.components.PlusPromo
|
|||||||
import org.nsh07.pomodoro.ui.settingsScreen.screens.AlarmSettings
|
import org.nsh07.pomodoro.ui.settingsScreen.screens.AlarmSettings
|
||||||
import org.nsh07.pomodoro.ui.settingsScreen.screens.AppearanceSettings
|
import org.nsh07.pomodoro.ui.settingsScreen.screens.AppearanceSettings
|
||||||
import org.nsh07.pomodoro.ui.settingsScreen.screens.TimerSettings
|
import org.nsh07.pomodoro.ui.settingsScreen.screens.TimerSettings
|
||||||
import org.nsh07.pomodoro.ui.settingsScreen.viewModel.PreferencesState
|
|
||||||
import org.nsh07.pomodoro.ui.settingsScreen.viewModel.SettingsAction
|
import org.nsh07.pomodoro.ui.settingsScreen.viewModel.SettingsAction
|
||||||
|
import org.nsh07.pomodoro.ui.settingsScreen.viewModel.SettingsState
|
||||||
import org.nsh07.pomodoro.ui.settingsScreen.viewModel.SettingsViewModel
|
import org.nsh07.pomodoro.ui.settingsScreen.viewModel.SettingsViewModel
|
||||||
import org.nsh07.pomodoro.ui.settingsScreens
|
import org.nsh07.pomodoro.ui.settingsScreens
|
||||||
import org.nsh07.pomodoro.ui.theme.AppFonts.robotoFlexTopBar
|
import org.nsh07.pomodoro.ui.theme.AppFonts.robotoFlexTopBar
|
||||||
@@ -106,7 +106,7 @@ fun SettingsScreenRoot(
|
|||||||
val dndEnabled by viewModel.dndEnabled.collectAsStateWithLifecycle(false)
|
val dndEnabled by viewModel.dndEnabled.collectAsStateWithLifecycle(false)
|
||||||
val alarmSound by viewModel.alarmSound.collectAsStateWithLifecycle(viewModel.currentAlarmSound)
|
val alarmSound by viewModel.alarmSound.collectAsStateWithLifecycle(viewModel.currentAlarmSound)
|
||||||
|
|
||||||
val preferencesState by viewModel.preferencesState.collectAsStateWithLifecycle()
|
val settingsState by viewModel.settingsState.collectAsStateWithLifecycle()
|
||||||
|
|
||||||
val sessionsSliderState = rememberSaveable(
|
val sessionsSliderState = rememberSaveable(
|
||||||
saver = SliderState.Saver(
|
saver = SliderState.Saver(
|
||||||
@@ -119,7 +119,7 @@ fun SettingsScreenRoot(
|
|||||||
|
|
||||||
SettingsScreen(
|
SettingsScreen(
|
||||||
isPlus = isPlus,
|
isPlus = isPlus,
|
||||||
preferencesState = preferencesState,
|
settingsState = settingsState,
|
||||||
backStack = backStack,
|
backStack = backStack,
|
||||||
focusTimeInputFieldState = focusTimeInputFieldState,
|
focusTimeInputFieldState = focusTimeInputFieldState,
|
||||||
shortBreakTimeInputFieldState = shortBreakTimeInputFieldState,
|
shortBreakTimeInputFieldState = shortBreakTimeInputFieldState,
|
||||||
@@ -140,7 +140,7 @@ fun SettingsScreenRoot(
|
|||||||
@Composable
|
@Composable
|
||||||
private fun SettingsScreen(
|
private fun SettingsScreen(
|
||||||
isPlus: Boolean,
|
isPlus: Boolean,
|
||||||
preferencesState: PreferencesState,
|
settingsState: SettingsState,
|
||||||
backStack: SnapshotStateList<Screen.Settings>,
|
backStack: SnapshotStateList<Screen.Settings>,
|
||||||
focusTimeInputFieldState: TextFieldState,
|
focusTimeInputFieldState: TextFieldState,
|
||||||
shortBreakTimeInputFieldState: TextFieldState,
|
shortBreakTimeInputFieldState: TextFieldState,
|
||||||
@@ -287,7 +287,7 @@ private fun SettingsScreen(
|
|||||||
|
|
||||||
entry<Screen.Settings.Alarm> {
|
entry<Screen.Settings.Alarm> {
|
||||||
AlarmSettings(
|
AlarmSettings(
|
||||||
preferencesState = preferencesState,
|
settingsState = settingsState,
|
||||||
alarmEnabled = alarmEnabled,
|
alarmEnabled = alarmEnabled,
|
||||||
vibrateEnabled = vibrateEnabled,
|
vibrateEnabled = vibrateEnabled,
|
||||||
alarmSound = alarmSound,
|
alarmSound = alarmSound,
|
||||||
@@ -297,7 +297,7 @@ private fun SettingsScreen(
|
|||||||
}
|
}
|
||||||
entry<Screen.Settings.Appearance> {
|
entry<Screen.Settings.Appearance> {
|
||||||
AppearanceSettings(
|
AppearanceSettings(
|
||||||
preferencesState = preferencesState,
|
settingsState = settingsState,
|
||||||
isPlus = isPlus,
|
isPlus = isPlus,
|
||||||
onAction = onAction,
|
onAction = onAction,
|
||||||
setShowPaywall = setShowPaywall,
|
setShowPaywall = setShowPaywall,
|
||||||
@@ -307,7 +307,7 @@ private fun SettingsScreen(
|
|||||||
entry<Screen.Settings.Timer> {
|
entry<Screen.Settings.Timer> {
|
||||||
TimerSettings(
|
TimerSettings(
|
||||||
isPlus = isPlus,
|
isPlus = isPlus,
|
||||||
aodEnabled = preferencesState.aodEnabled,
|
aodEnabled = settingsState.aodEnabled,
|
||||||
dndEnabled = dndEnabled,
|
dndEnabled = dndEnabled,
|
||||||
focusTimeInputFieldState = focusTimeInputFieldState,
|
focusTimeInputFieldState = focusTimeInputFieldState,
|
||||||
shortBreakTimeInputFieldState = shortBreakTimeInputFieldState,
|
shortBreakTimeInputFieldState = shortBreakTimeInputFieldState,
|
||||||
|
|||||||
@@ -65,8 +65,8 @@ import kotlinx.coroutines.Dispatchers
|
|||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import org.nsh07.pomodoro.R
|
import org.nsh07.pomodoro.R
|
||||||
import org.nsh07.pomodoro.ui.settingsScreen.SettingsSwitchItem
|
import org.nsh07.pomodoro.ui.settingsScreen.SettingsSwitchItem
|
||||||
import org.nsh07.pomodoro.ui.settingsScreen.viewModel.PreferencesState
|
|
||||||
import org.nsh07.pomodoro.ui.settingsScreen.viewModel.SettingsAction
|
import org.nsh07.pomodoro.ui.settingsScreen.viewModel.SettingsAction
|
||||||
|
import org.nsh07.pomodoro.ui.settingsScreen.viewModel.SettingsState
|
||||||
import org.nsh07.pomodoro.ui.theme.AppFonts.robotoFlexTopBar
|
import org.nsh07.pomodoro.ui.theme.AppFonts.robotoFlexTopBar
|
||||||
import org.nsh07.pomodoro.ui.theme.CustomColors.listItemColors
|
import org.nsh07.pomodoro.ui.theme.CustomColors.listItemColors
|
||||||
import org.nsh07.pomodoro.ui.theme.CustomColors.switchColors
|
import org.nsh07.pomodoro.ui.theme.CustomColors.switchColors
|
||||||
@@ -78,7 +78,7 @@ import org.nsh07.pomodoro.ui.theme.TomatoShapeDefaults.topListItemShape
|
|||||||
@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterial3ExpressiveApi::class)
|
@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterial3ExpressiveApi::class)
|
||||||
@Composable
|
@Composable
|
||||||
fun AlarmSettings(
|
fun AlarmSettings(
|
||||||
preferencesState: PreferencesState,
|
settingsState: SettingsState,
|
||||||
alarmEnabled: Boolean,
|
alarmEnabled: Boolean,
|
||||||
vibrateEnabled: Boolean,
|
vibrateEnabled: Boolean,
|
||||||
alarmSound: String,
|
alarmSound: String,
|
||||||
@@ -126,8 +126,8 @@ fun AlarmSettings(
|
|||||||
}
|
}
|
||||||
|
|
||||||
val switchItems = remember(
|
val switchItems = remember(
|
||||||
preferencesState.blackTheme,
|
settingsState.blackTheme,
|
||||||
preferencesState.aodEnabled,
|
settingsState.aodEnabled,
|
||||||
alarmEnabled,
|
alarmEnabled,
|
||||||
vibrateEnabled
|
vibrateEnabled
|
||||||
) {
|
) {
|
||||||
@@ -242,9 +242,9 @@ fun AlarmSettings(
|
|||||||
@Preview
|
@Preview
|
||||||
@Composable
|
@Composable
|
||||||
fun AlarmSettingsPreview() {
|
fun AlarmSettingsPreview() {
|
||||||
val preferencesState = PreferencesState()
|
val settingsState = SettingsState()
|
||||||
AlarmSettings(
|
AlarmSettings(
|
||||||
preferencesState = preferencesState,
|
settingsState = settingsState,
|
||||||
alarmEnabled = true,
|
alarmEnabled = true,
|
||||||
vibrateEnabled = false,
|
vibrateEnabled = false,
|
||||||
alarmSound = "",
|
alarmSound = "",
|
||||||
|
|||||||
@@ -49,8 +49,8 @@ import org.nsh07.pomodoro.ui.settingsScreen.SettingsSwitchItem
|
|||||||
import org.nsh07.pomodoro.ui.settingsScreen.components.ColorSchemePickerListItem
|
import org.nsh07.pomodoro.ui.settingsScreen.components.ColorSchemePickerListItem
|
||||||
import org.nsh07.pomodoro.ui.settingsScreen.components.PlusDivider
|
import org.nsh07.pomodoro.ui.settingsScreen.components.PlusDivider
|
||||||
import org.nsh07.pomodoro.ui.settingsScreen.components.ThemePickerListItem
|
import org.nsh07.pomodoro.ui.settingsScreen.components.ThemePickerListItem
|
||||||
import org.nsh07.pomodoro.ui.settingsScreen.viewModel.PreferencesState
|
|
||||||
import org.nsh07.pomodoro.ui.settingsScreen.viewModel.SettingsAction
|
import org.nsh07.pomodoro.ui.settingsScreen.viewModel.SettingsAction
|
||||||
|
import org.nsh07.pomodoro.ui.settingsScreen.viewModel.SettingsState
|
||||||
import org.nsh07.pomodoro.ui.theme.AppFonts.robotoFlexTopBar
|
import org.nsh07.pomodoro.ui.theme.AppFonts.robotoFlexTopBar
|
||||||
import org.nsh07.pomodoro.ui.theme.CustomColors.listItemColors
|
import org.nsh07.pomodoro.ui.theme.CustomColors.listItemColors
|
||||||
import org.nsh07.pomodoro.ui.theme.CustomColors.switchColors
|
import org.nsh07.pomodoro.ui.theme.CustomColors.switchColors
|
||||||
@@ -62,7 +62,7 @@ import org.nsh07.pomodoro.utils.toColor
|
|||||||
@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterial3ExpressiveApi::class)
|
@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterial3ExpressiveApi::class)
|
||||||
@Composable
|
@Composable
|
||||||
fun AppearanceSettings(
|
fun AppearanceSettings(
|
||||||
preferencesState: PreferencesState,
|
settingsState: SettingsState,
|
||||||
isPlus: Boolean,
|
isPlus: Boolean,
|
||||||
onAction: (SettingsAction) -> Unit,
|
onAction: (SettingsAction) -> Unit,
|
||||||
setShowPaywall: (Boolean) -> Unit,
|
setShowPaywall: (Boolean) -> Unit,
|
||||||
@@ -103,7 +103,7 @@ fun AppearanceSettings(
|
|||||||
}
|
}
|
||||||
item {
|
item {
|
||||||
ThemePickerListItem(
|
ThemePickerListItem(
|
||||||
theme = preferencesState.theme,
|
theme = settingsState.theme,
|
||||||
onThemeChange = { onAction(SettingsAction.SaveTheme(it)) },
|
onThemeChange = { onAction(SettingsAction.SaveTheme(it)) },
|
||||||
items = if (isPlus) 3 else 1,
|
items = if (isPlus) 3 else 1,
|
||||||
index = 0
|
index = 0
|
||||||
@@ -116,7 +116,7 @@ fun AppearanceSettings(
|
|||||||
|
|
||||||
item {
|
item {
|
||||||
ColorSchemePickerListItem(
|
ColorSchemePickerListItem(
|
||||||
color = preferencesState.colorScheme.toColor(),
|
color = settingsState.colorScheme.toColor(),
|
||||||
items = 3,
|
items = 3,
|
||||||
index = if (isPlus) 1 else 0,
|
index = if (isPlus) 1 else 0,
|
||||||
isPlus = isPlus,
|
isPlus = isPlus,
|
||||||
@@ -125,7 +125,7 @@ fun AppearanceSettings(
|
|||||||
}
|
}
|
||||||
item {
|
item {
|
||||||
val item = SettingsSwitchItem(
|
val item = SettingsSwitchItem(
|
||||||
checked = preferencesState.blackTheme,
|
checked = settingsState.blackTheme,
|
||||||
icon = R.drawable.contrast,
|
icon = R.drawable.contrast,
|
||||||
label = R.string.black_theme,
|
label = R.string.black_theme,
|
||||||
description = R.string.black_theme_desc,
|
description = R.string.black_theme_desc,
|
||||||
@@ -173,10 +173,10 @@ fun AppearanceSettings(
|
|||||||
@Preview
|
@Preview
|
||||||
@Composable
|
@Composable
|
||||||
fun AppearanceSettingsPreview() {
|
fun AppearanceSettingsPreview() {
|
||||||
val preferencesState = PreferencesState()
|
val settingsState = SettingsState()
|
||||||
TomatoTheme(dynamicColor = false) {
|
TomatoTheme(dynamicColor = false) {
|
||||||
AppearanceSettings(
|
AppearanceSettings(
|
||||||
preferencesState = preferencesState,
|
settingsState = settingsState,
|
||||||
isPlus = false,
|
isPlus = false,
|
||||||
onAction = {},
|
onAction = {},
|
||||||
setShowPaywall = {},
|
setShowPaywall = {},
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2025 Nishant Mishra
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.nsh07.pomodoro.ui.settingsScreen.viewModel
|
|
||||||
|
|
||||||
import androidx.compose.runtime.Immutable
|
|
||||||
import androidx.compose.ui.graphics.Color
|
|
||||||
|
|
||||||
@Immutable
|
|
||||||
data class PreferencesState(
|
|
||||||
val theme: String = "auto",
|
|
||||||
val colorScheme: String = Color.White.toString(),
|
|
||||||
val blackTheme: Boolean = false,
|
|
||||||
val aodEnabled: Boolean = false
|
|
||||||
)
|
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2025 Nishant Mishra
|
||||||
|
*
|
||||||
|
* This file is part of Tomato - a minimalist pomodoro timer for Android.
|
||||||
|
*
|
||||||
|
* Tomato is free software: you can redistribute it and/or modify it under the terms of the GNU
|
||||||
|
* General Public License as published by the Free Software Foundation, either version 3 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Tomato is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||||
|
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||||
|
* Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License along with Tomato.
|
||||||
|
* If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.nsh07.pomodoro.ui.settingsScreen.viewModel
|
||||||
|
|
||||||
|
import androidx.compose.runtime.Immutable
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
|
||||||
|
@Immutable
|
||||||
|
data class SettingsState(
|
||||||
|
val theme: String = "auto",
|
||||||
|
val colorScheme: String = Color.White.toString(),
|
||||||
|
val blackTheme: Boolean = false,
|
||||||
|
val aodEnabled: Boolean = false
|
||||||
|
)
|
||||||
@@ -59,8 +59,8 @@ class SettingsViewModel(
|
|||||||
private val _isSettingsLoaded = MutableStateFlow(false)
|
private val _isSettingsLoaded = MutableStateFlow(false)
|
||||||
val isSettingsLoaded = _isSettingsLoaded.asStateFlow()
|
val isSettingsLoaded = _isSettingsLoaded.asStateFlow()
|
||||||
|
|
||||||
private val _preferencesState = MutableStateFlow(PreferencesState())
|
private val _settingsState = MutableStateFlow(SettingsState())
|
||||||
val preferencesState = _preferencesState.asStateFlow()
|
val settingsState = _settingsState.asStateFlow()
|
||||||
|
|
||||||
val focusTimeTextFieldState by lazy {
|
val focusTimeTextFieldState by lazy {
|
||||||
TextFieldState((timerRepository.focusTime / 60000).toString())
|
TextFieldState((timerRepository.focusTime / 60000).toString())
|
||||||
@@ -203,7 +203,7 @@ class SettingsViewModel(
|
|||||||
|
|
||||||
private fun saveColorScheme(colorScheme: Color) {
|
private fun saveColorScheme(colorScheme: Color) {
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
_preferencesState.update { currentState ->
|
_settingsState.update { currentState ->
|
||||||
currentState.copy(colorScheme = colorScheme.toString())
|
currentState.copy(colorScheme = colorScheme.toString())
|
||||||
}
|
}
|
||||||
preferenceRepository.saveStringPreference("color_scheme", colorScheme.toString())
|
preferenceRepository.saveStringPreference("color_scheme", colorScheme.toString())
|
||||||
@@ -212,7 +212,7 @@ class SettingsViewModel(
|
|||||||
|
|
||||||
private fun saveTheme(theme: String) {
|
private fun saveTheme(theme: String) {
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
_preferencesState.update { currentState ->
|
_settingsState.update { currentState ->
|
||||||
currentState.copy(theme = theme)
|
currentState.copy(theme = theme)
|
||||||
}
|
}
|
||||||
preferenceRepository.saveStringPreference("theme", theme)
|
preferenceRepository.saveStringPreference("theme", theme)
|
||||||
@@ -221,7 +221,7 @@ class SettingsViewModel(
|
|||||||
|
|
||||||
private fun saveBlackTheme(blackTheme: Boolean) {
|
private fun saveBlackTheme(blackTheme: Boolean) {
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
_preferencesState.update { currentState ->
|
_settingsState.update { currentState ->
|
||||||
currentState.copy(blackTheme = blackTheme)
|
currentState.copy(blackTheme = blackTheme)
|
||||||
}
|
}
|
||||||
preferenceRepository.saveBooleanPreference("black_theme", blackTheme)
|
preferenceRepository.saveBooleanPreference("black_theme", blackTheme)
|
||||||
@@ -230,7 +230,7 @@ class SettingsViewModel(
|
|||||||
|
|
||||||
private fun saveAodEnabled(aodEnabled: Boolean) {
|
private fun saveAodEnabled(aodEnabled: Boolean) {
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
_preferencesState.update { currentState ->
|
_settingsState.update { currentState ->
|
||||||
currentState.copy(aodEnabled = aodEnabled)
|
currentState.copy(aodEnabled = aodEnabled)
|
||||||
}
|
}
|
||||||
preferenceRepository.saveBooleanPreference("aod_enabled", aodEnabled)
|
preferenceRepository.saveBooleanPreference("aod_enabled", aodEnabled)
|
||||||
@@ -238,7 +238,7 @@ class SettingsViewModel(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun resetPaywalledSettings() {
|
fun resetPaywalledSettings() {
|
||||||
_preferencesState.update { currentState ->
|
_settingsState.update { currentState ->
|
||||||
currentState.copy(
|
currentState.copy(
|
||||||
aodEnabled = false,
|
aodEnabled = false,
|
||||||
blackTheme = false,
|
blackTheme = false,
|
||||||
@@ -257,7 +257,7 @@ class SettingsViewModel(
|
|||||||
val aodEnabled = preferenceRepository.getBooleanPreference("aod_enabled")
|
val aodEnabled = preferenceRepository.getBooleanPreference("aod_enabled")
|
||||||
?: preferenceRepository.saveBooleanPreference("aod_enabled", false)
|
?: preferenceRepository.saveBooleanPreference("aod_enabled", false)
|
||||||
|
|
||||||
_preferencesState.update { currentState ->
|
_settingsState.update { currentState ->
|
||||||
currentState.copy(
|
currentState.copy(
|
||||||
theme = theme,
|
theme = theme,
|
||||||
colorScheme = colorScheme,
|
colorScheme = colorScheme,
|
||||||
|
|||||||
Reference in New Issue
Block a user