From 80e858e1ed1e8c8a0037d7548e71389199993d47 Mon Sep 17 00:00:00 2001 From: Sad Ellie Date: Tue, 16 Jan 2024 18:22:34 +0300 Subject: [PATCH] Themmo update --- .../main/java/com/sadellie/unitto/UnittoApp.kt | 18 ++---------------- data/backup/build.gradle.kts | 1 + .../unitto/data/backup/BackupManager.kt | 4 ++-- data/model/build.gradle.kts | 2 ++ .../repository/UserPreferencesRepository.kt | 6 ++++-- .../data/model/userprefs/AppPreferences.kt | 7 +++++-- data/userprefs/build.gradle.kts | 2 +- .../unitto/data/userprefs/PreferenceExt.kt | 14 ++++++++++---- .../unitto/data/userprefs/PreferenceModels.kt | 6 ++++-- .../unitto/data/userprefs/UserPreferences.kt | 10 ++++++---- .../settings/components/MonetModeSelector.kt | 4 ++-- .../feature/settings/display/DisplayScreen.kt | 4 ++-- .../settings/display/DisplayViewModel.kt | 8 ++++---- gradle/libs.versions.toml | 5 +++-- 14 files changed, 48 insertions(+), 43 deletions(-) diff --git a/app/src/main/java/com/sadellie/unitto/UnittoApp.kt b/app/src/main/java/com/sadellie/unitto/UnittoApp.kt index 27a6a1f1..fa71e06f 100644 --- a/app/src/main/java/com/sadellie/unitto/UnittoApp.kt +++ b/app/src/main/java/com/sadellie/unitto/UnittoApp.kt @@ -43,8 +43,6 @@ import com.sadellie.unitto.core.ui.theme.DarkThemeColors import com.sadellie.unitto.core.ui.theme.LightThemeColors import com.sadellie.unitto.core.ui.theme.TypographySystem import com.sadellie.unitto.data.model.userprefs.AppPreferences -import io.github.sadellie.themmo.MonetMode -import io.github.sadellie.themmo.ThemingMode import io.github.sadellie.themmo.Themmo import io.github.sadellie.themmo.ThemmoController import kotlinx.coroutines.launch @@ -74,11 +72,11 @@ internal fun UnittoApp(prefs: AppPreferences?) { ThemmoController( lightColorScheme = LightThemeColors, darkColorScheme = DarkThemeColors, - themingMode = prefs.themingMode.toThemingMode(), + themingMode = prefs.themingMode, dynamicThemeEnabled = prefs.enableDynamicTheme, amoledThemeEnabled = prefs.enableAmoledTheme, customColor = prefs.customColor.toColor(), - monetMode = prefs.monetMode.toMonetMode() + monetMode = prefs.monetMode ) } @@ -132,18 +130,6 @@ internal fun UnittoApp(prefs: AppPreferences?) { } } -private fun String.toThemingMode(): ThemingMode = try { - ThemingMode.valueOf(this) -} catch (e: Exception) { - ThemingMode.AUTO -} - -private fun String.toMonetMode(): MonetMode = try { - MonetMode.valueOf(this) -} catch (e: Exception) { - MonetMode.TonalSpot -} - private fun Long.toColor(): Color = try { Color(this.toULong()) } catch (e: Exception) { diff --git a/data/backup/build.gradle.kts b/data/backup/build.gradle.kts index 39951244..e52de217 100644 --- a/data/backup/build.gradle.kts +++ b/data/backup/build.gradle.kts @@ -28,6 +28,7 @@ android.namespace = "com.sadellie.unitto.data.backup" dependencies { implementation(libs.androidx.datastore.datastore.preferences) implementation(libs.com.squareup.moshi.moshi.kotlin) + implementation(libs.com.github.sadellie.themmo.core) ksp(libs.com.squareup.moshi.moshi.kotlin.codegen) implementation(project(":data:database")) diff --git a/data/backup/src/main/java/com/sadellie/unitto/data/backup/BackupManager.kt b/data/backup/src/main/java/com/sadellie/unitto/data/backup/BackupManager.kt index 94f08b19..d07d4a42 100644 --- a/data/backup/src/main/java/com/sadellie/unitto/data/backup/BackupManager.kt +++ b/data/backup/src/main/java/com/sadellie/unitto/data/backup/BackupManager.kt @@ -121,11 +121,11 @@ class BackupManager @Inject constructor( val timeZoneTableData = timeZoneDao.getFavorites().first() return UserData( - themingMode = data.getThemingMode(), + themingMode = data.getThemingMode().name, enableDynamicTheme = data.getEnableDynamicTheme(), enableAmoledTheme = data.getEnableAmoledTheme(), customColor = data.getCustomColor(), - monetMode = data.getMonetMode(), + monetMode = data.getMonetMode().name, startingScreen = data.getStartingScreen(), enableToolsExperiment = data.getEnableToolsExperiment(), systemFont = data.getSystemFont(), diff --git a/data/model/build.gradle.kts b/data/model/build.gradle.kts index 560c78ab..c984c3b7 100644 --- a/data/model/build.gradle.kts +++ b/data/model/build.gradle.kts @@ -24,6 +24,8 @@ plugins { android.namespace = "com.sadellie.unitto.data.model" dependencies { + implementation(libs.com.github.sadellie.themmo.core) + implementation(project(":core:base")) implementation(project(":data:common")) } \ No newline at end of file diff --git a/data/model/src/main/java/com/sadellie/unitto/data/model/repository/UserPreferencesRepository.kt b/data/model/src/main/java/com/sadellie/unitto/data/model/repository/UserPreferencesRepository.kt index afb993bd..0965245d 100644 --- a/data/model/src/main/java/com/sadellie/unitto/data/model/repository/UserPreferencesRepository.kt +++ b/data/model/src/main/java/com/sadellie/unitto/data/model/repository/UserPreferencesRepository.kt @@ -32,6 +32,8 @@ import com.sadellie.unitto.data.model.userprefs.FormattingPreferences import com.sadellie.unitto.data.model.userprefs.GeneralPreferences import com.sadellie.unitto.data.model.userprefs.StartingScreenPreferences import com.sadellie.unitto.data.model.userprefs.UnitGroupsPreferences +import io.github.sadellie.themmo.core.MonetMode +import io.github.sadellie.themmo.core.ThemingMode import kotlinx.coroutines.flow.Flow interface UserPreferencesRepository { @@ -55,7 +57,7 @@ interface UserPreferencesRepository { suspend fun updateLatestPairOfUnits(unitFrom: AbstractUnit, unitTo: AbstractUnit) - suspend fun updateThemingMode(themingMode: String) + suspend fun updateThemingMode(themingMode: ThemingMode) suspend fun updateDynamicTheme(enabled: Boolean) @@ -63,7 +65,7 @@ interface UserPreferencesRepository { suspend fun updateCustomColor(color: Long) - suspend fun updateMonetMode(monetMode: String) + suspend fun updateMonetMode(monetMode: MonetMode) suspend fun updateStartingScreen(startingScreen: String) diff --git a/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/AppPreferences.kt b/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/AppPreferences.kt index 82ba34fa..3890a93d 100644 --- a/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/AppPreferences.kt +++ b/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/AppPreferences.kt @@ -18,12 +18,15 @@ package com.sadellie.unitto.data.model.userprefs +import io.github.sadellie.themmo.core.MonetMode +import io.github.sadellie.themmo.core.ThemingMode + interface AppPreferences { - val themingMode: String + val themingMode: ThemingMode val enableDynamicTheme: Boolean val enableAmoledTheme: Boolean val customColor: Long - val monetMode: String + val monetMode: MonetMode val startingScreen: String val enableToolsExperiment: Boolean val systemFont: Boolean diff --git a/data/userprefs/build.gradle.kts b/data/userprefs/build.gradle.kts index 9552ed88..e8f94727 100644 --- a/data/userprefs/build.gradle.kts +++ b/data/userprefs/build.gradle.kts @@ -26,7 +26,7 @@ android.namespace = "com.sadellie.unitto.data.userprefs" dependencies { implementation(libs.androidx.datastore.datastore.preferences) - implementation(libs.com.github.sadellie.themmo) + implementation(libs.com.github.sadellie.themmo.core) implementation(project(":core:base")) implementation(project(":data:model")) diff --git a/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/PreferenceExt.kt b/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/PreferenceExt.kt index 3b12a7c7..c4662adc 100644 --- a/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/PreferenceExt.kt +++ b/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/PreferenceExt.kt @@ -26,13 +26,17 @@ import com.sadellie.unitto.data.converter.MyUnitIDS import com.sadellie.unitto.data.model.ALL_UNIT_GROUPS import com.sadellie.unitto.data.model.UnitGroup import com.sadellie.unitto.data.model.UnitsListSorting +import io.github.sadellie.themmo.core.MonetMode +import io.github.sadellie.themmo.core.ThemingMode fun Preferences.getEnableDynamicTheme(): Boolean { return this[PrefsKeys.ENABLE_DYNAMIC_THEME] ?: true } -fun Preferences.getThemingMode(): String { - return this[PrefsKeys.THEMING_MODE] ?: "" +fun Preferences.getThemingMode(): ThemingMode { + return this[PrefsKeys.THEMING_MODE] + ?.letTryOrNull { ThemingMode.valueOf(it) } + ?: ThemingMode.AUTO } fun Preferences.getEnableAmoledTheme(): Boolean { @@ -43,8 +47,10 @@ fun Preferences.getCustomColor(): Long { return this[PrefsKeys.CUSTOM_COLOR] ?: 16L // From Color.Unspecified } -fun Preferences.getMonetMode(): String { - return this[PrefsKeys.MONET_MODE] ?: "" +fun Preferences.getMonetMode(): MonetMode { + return this[PrefsKeys.MONET_MODE] + ?.letTryOrNull { MonetMode.valueOf(it) } + ?: MonetMode.TonalSpot } fun Preferences.getStartingScreen(): String { diff --git a/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/PreferenceModels.kt b/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/PreferenceModels.kt index 6d61e053..7390b603 100644 --- a/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/PreferenceModels.kt +++ b/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/PreferenceModels.kt @@ -32,13 +32,15 @@ import com.sadellie.unitto.data.model.userprefs.FormattingPreferences import com.sadellie.unitto.data.model.userprefs.GeneralPreferences import com.sadellie.unitto.data.model.userprefs.StartingScreenPreferences import com.sadellie.unitto.data.model.userprefs.UnitGroupsPreferences +import io.github.sadellie.themmo.core.MonetMode +import io.github.sadellie.themmo.core.ThemingMode data class AppPreferencesImpl( - override val themingMode: String, + override val themingMode: ThemingMode, override val enableDynamicTheme: Boolean, override val enableAmoledTheme: Boolean, override val customColor: Long, - override val monetMode: String, + override val monetMode: MonetMode, override val startingScreen: String, override val enableToolsExperiment: Boolean, override val systemFont: Boolean, diff --git a/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/UserPreferences.kt b/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/UserPreferences.kt index 467224c1..047f0807 100644 --- a/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/UserPreferences.kt +++ b/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/UserPreferences.kt @@ -37,6 +37,8 @@ import com.sadellie.unitto.data.model.userprefs.FormattingPreferences import com.sadellie.unitto.data.model.userprefs.GeneralPreferences import com.sadellie.unitto.data.model.userprefs.StartingScreenPreferences import com.sadellie.unitto.data.model.userprefs.UnitGroupsPreferences +import io.github.sadellie.themmo.core.MonetMode +import io.github.sadellie.themmo.core.ThemingMode import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.catch import kotlinx.coroutines.flow.map @@ -185,9 +187,9 @@ class UserPreferencesRepositoryImpl @Inject constructor( } } - override suspend fun updateThemingMode(themingMode: String) { + override suspend fun updateThemingMode(themingMode: ThemingMode) { dataStore.edit { preferences -> - preferences[PrefsKeys.THEMING_MODE] = themingMode + preferences[PrefsKeys.THEMING_MODE] = themingMode.name } } @@ -209,9 +211,9 @@ class UserPreferencesRepositoryImpl @Inject constructor( } } - override suspend fun updateMonetMode(monetMode: String) { + override suspend fun updateMonetMode(monetMode: MonetMode) { dataStore.edit { preferences -> - preferences[PrefsKeys.MONET_MODE] = monetMode + preferences[PrefsKeys.MONET_MODE] = monetMode.name } } diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/MonetModeSelector.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/MonetModeSelector.kt index bfd418ff..0014c231 100644 --- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/MonetModeSelector.kt +++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/MonetModeSelector.kt @@ -55,10 +55,10 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp -import io.github.sadellie.themmo.MonetMode -import io.github.sadellie.themmo.ThemingMode import io.github.sadellie.themmo.Themmo import io.github.sadellie.themmo.ThemmoController +import io.github.sadellie.themmo.core.MonetMode +import io.github.sadellie.themmo.core.ThemingMode @Composable internal fun MonetModeSelector( diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/display/DisplayScreen.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/display/DisplayScreen.kt index 4bdd9eda..e78d5070 100644 --- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/display/DisplayScreen.kt +++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/display/DisplayScreen.kt @@ -67,10 +67,10 @@ import com.sadellie.unitto.core.ui.common.key.UnittoIcons import com.sadellie.unitto.core.ui.common.key.unittoicons.Clear import com.sadellie.unitto.feature.settings.components.ColorSelector import com.sadellie.unitto.feature.settings.components.MonetModeSelector -import io.github.sadellie.themmo.MonetMode -import io.github.sadellie.themmo.ThemingMode import io.github.sadellie.themmo.Themmo import io.github.sadellie.themmo.ThemmoController +import io.github.sadellie.themmo.core.MonetMode +import io.github.sadellie.themmo.core.ThemingMode @Composable internal fun DisplayRoute( diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/display/DisplayViewModel.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/display/DisplayViewModel.kt index d56198bf..cb8ad7f0 100644 --- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/display/DisplayViewModel.kt +++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/display/DisplayViewModel.kt @@ -24,8 +24,8 @@ import androidx.lifecycle.viewModelScope import com.sadellie.unitto.data.common.stateIn import com.sadellie.unitto.data.model.repository.UserPreferencesRepository import dagger.hilt.android.lifecycle.HiltViewModel -import io.github.sadellie.themmo.MonetMode -import io.github.sadellie.themmo.ThemingMode +import io.github.sadellie.themmo.core.MonetMode +import io.github.sadellie.themmo.core.ThemingMode import kotlinx.coroutines.launch import javax.inject.Inject @@ -39,7 +39,7 @@ class DisplayViewModel @Inject constructor( fun updateThemingMode(themingMode: ThemingMode) { viewModelScope.launch { - userPrefsRepository.updateThemingMode(themingMode.name) + userPrefsRepository.updateThemingMode(themingMode) } } @@ -63,7 +63,7 @@ class DisplayViewModel @Inject constructor( fun updateMonetMode(monetMode: MonetMode) { viewModelScope.launch { - userPrefsRepository.updateMonetMode(monetMode.name) + userPrefsRepository.updateMonetMode(monetMode) } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c4faa1a8..ffcd9634 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -24,7 +24,7 @@ androidxUiAutomator = "2.2.0" androidxWindowWindow = "1.2.0" androidxWorkWorkRuntimeKtx = "2.9.0" comAndroidToolsDesugarJdkLibs = "2.0.4" -comGithubSadellieThemmo = "1.2.0" +comGithubSadellieThemmo = "1.3.0" comGoogleAccompanistAccompanistSystemuicontroller = "0.30.1" comGoogleDagger = "2.48.1" comSquareupMoshiMoshiKotlin = "1.15.0" @@ -69,7 +69,8 @@ androidx-test-uiautomator = { group = "androidx.test.uiautomator", name = "uiaut androidx-window-window = { group = "androidx.window", name = "window", version.ref = "androidxWindowWindow" } androidx-work-work-runtime-ktx = { group = "androidx.work", name = "work-runtime-ktx", version.ref = "androidxWorkWorkRuntimeKtx" } com-android-tools-desugar-jdk-libs = { group = "com.android.tools", name = "desugar_jdk_libs", version.ref = "comAndroidToolsDesugarJdkLibs" } -com-github-sadellie-themmo = { group = "com.github.sadellie", name = "themmo", version.ref = "comGithubSadellieThemmo" } +com-github-sadellie-themmo = { group = "com.github.sadellie.themmo", name = "themmo", version.ref = "comGithubSadellieThemmo" } +com-github-sadellie-themmo-core = { group = "com.github.sadellie.themmo", name = "themmo-core", version.ref = "comGithubSadellieThemmo" } com-google-accompanist-accompanist-systemuicontroller = { group = "com.google.accompanist", name = "accompanist-systemuicontroller", version.ref = "comGoogleAccompanistAccompanistSystemuicontroller" } com-google-dagger-android-hilt-android = { group = "com.google.dagger", name = "hilt-android", version.ref = "comGoogleDagger" } com-google-dagger-dagger-android-processor = { group = "com.google.dagger", name = "dagger-android-processor", version.ref = "comGoogleDagger" }