From 4d1b21acf09e295f902340b59a0d90d1db1f103a Mon Sep 17 00:00:00 2001 From: rushiiMachine <33725716+rushiiMachine@users.noreply.github.com> Date: Sat, 31 May 2025 12:49:53 -0700 Subject: [PATCH] fix(PatchOptions): warn user when missing selected image --- .../ui/screens/iconopts/IconOptionsModel.kt | 19 ++++++++++--------- .../screens/patchopts/PatchOptionsScreen.kt | 10 +++++++--- app/src/main/res/values/strings.xml | 1 + 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/screens/iconopts/IconOptionsModel.kt b/app/src/main/kotlin/com/aliucord/manager/ui/screens/iconopts/IconOptionsModel.kt index 36dbae7..a9026a2 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ui/screens/iconopts/IconOptionsModel.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ui/screens/iconopts/IconOptionsModel.kt @@ -95,14 +95,15 @@ class IconOptionsModel( } } - fun generateConfig(): IconReplacement = when (mode) { - IconOptionsMode.Original -> IconReplacement.Original - IconOptionsMode.OldDiscord -> IconReplacement.OldDiscord - IconOptionsMode.Aliucord -> IconReplacement.CustomColor(IconReplacement.AliucordColor) - IconOptionsMode.CustomColor -> IconReplacement.CustomColor(color = selectedColor.toColor()) - IconOptionsMode.CustomImage -> IconReplacement.CustomImage( - // TODO: fix this? - imageBytes = selectedImage ?: throw IllegalStateException("Cannot generate config without a selected image"), - ) + fun generateConfig(): IconReplacement? { + return when (mode) { + IconOptionsMode.Original -> IconReplacement.Original + IconOptionsMode.OldDiscord -> IconReplacement.OldDiscord + IconOptionsMode.Aliucord -> IconReplacement.CustomColor(IconReplacement.AliucordColor) + IconOptionsMode.CustomColor -> IconReplacement.CustomColor(color = selectedColor.toColor()) + IconOptionsMode.CustomImage -> IconReplacement.CustomImage( + imageBytes = selectedImage ?: return null + ) + } } } diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/screens/patchopts/PatchOptionsScreen.kt b/app/src/main/kotlin/com/aliucord/manager/ui/screens/patchopts/PatchOptionsScreen.kt index ae3e553..3c992eb 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ui/screens/patchopts/PatchOptionsScreen.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ui/screens/patchopts/PatchOptionsScreen.kt @@ -32,8 +32,7 @@ import com.aliucord.manager.ui.screens.patchopts.components.PatchOptionsAppBar import com.aliucord.manager.ui.screens.patchopts.components.options.* import com.aliucord.manager.ui.util.InstallNotifications import com.aliucord.manager.ui.util.spacedByLastAtBottom -import com.aliucord.manager.util.isIgnoringBatteryOptimizations -import com.aliucord.manager.util.requestNoBatteryOptimizations +import com.aliucord.manager.util.* import kotlinx.coroutines.delay import kotlinx.parcelize.IgnoredOnParcel import kotlinx.parcelize.Parcelize @@ -97,8 +96,13 @@ class PatchOptionsScreen( setPackageName = model::changePackageName, isConfigValid = model.isConfigValid, - onInstall = { + onInstall = onInstall@{ val iconConfig = iconModel.generateConfig() + if (iconConfig == null) { + context.showToast(R.string.patchopts_warning_invalid_iconopts) + return@onInstall + } + val patchConfig = model.generateConfig(iconConfig) navigator.push(PatchingScreen(patchConfig)) }, diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 36d18e4..c3e241f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -169,6 +169,7 @@ Change the app\'s icon to Aliucord\'s icon (or a custom one) instead of Discord\'s. Basic Advanced + The selected icon options are invalid! Icon Replacement Old Discord