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