From b3349f07ff3846538798356e5dec008e6c1648e4 Mon Sep 17 00:00:00 2001 From: wingio Date: Thu, 30 Mar 2023 14:20:42 -0400 Subject: [PATCH] Feat: Disable install button when downgrading --- .../vendetta/manager/ui/screen/home/HomeScreen.kt | 12 ++++++++---- .../dev/beefers/vendetta/manager/utils/Constants.kt | 2 ++ app/src/main/res/values/strings.xml | 2 ++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/dev/beefers/vendetta/manager/ui/screen/home/HomeScreen.kt b/app/src/main/java/dev/beefers/vendetta/manager/ui/screen/home/HomeScreen.kt index 1c5f4a9..5f9c5c9 100644 --- a/app/src/main/java/dev/beefers/vendetta/manager/ui/screen/home/HomeScreen.kt +++ b/app/src/main/java/dev/beefers/vendetta/manager/ui/screen/home/HomeScreen.kt @@ -54,6 +54,7 @@ import dev.beefers.vendetta.manager.ui.screen.about.AboutScreen import dev.beefers.vendetta.manager.ui.screen.installer.InstallerScreen import dev.beefers.vendetta.manager.ui.viewmodel.home.HomeViewModel import dev.beefers.vendetta.manager.ui.widgets.home.Commit +import dev.beefers.vendetta.manager.utils.Constants import dev.beefers.vendetta.manager.utils.DiscordVersion import dev.beefers.vendetta.manager.utils.ManagerTab import dev.beefers.vendetta.manager.utils.TabOptions @@ -73,6 +74,7 @@ class HomeScreen : ManagerTab { val nav = LocalNavigator.currentOrThrow val prefs: PreferenceManager = get() val viewModel: HomeViewModel = getScreenModel() + val currentVersion = DiscordVersion.fromVersionCode(viewModel.installManager.current?.versionCode.toString()) val latestVersion = when { prefs.discordVersion.isBlank() -> viewModel.discordVersions?.get(prefs.channel) else -> DiscordVersion.fromVersionCode(prefs.discordVersion) @@ -132,13 +134,15 @@ class HomeScreen : ManagerTab { val version = viewModel.discordVersions!![prefs.channel]!! nav.navigate(InstallerScreen(version)) }, - enabled = viewModel.discordVersions != null, + enabled = latestVersion != null && latestVersion >= (currentVersion ?: Constants.DUMMY_VERSION), modifier = Modifier.fillMaxWidth() ) { val label = when { - viewModel.installManager.current == null -> R.string.action_install - viewModel.installManager.current?.versionName == latestVersion.toString() -> R.string.action_reinstall - else -> R.string.action_update + latestVersion == null -> R.string.msg_loading + currentVersion == null -> R.string.action_install + currentVersion == latestVersion -> R.string.action_reinstall + latestVersion > currentVersion -> R.string.action_update + else -> R.string.msg_downgrade } Text(stringResource(label)) } diff --git a/app/src/main/java/dev/beefers/vendetta/manager/utils/Constants.kt b/app/src/main/java/dev/beefers/vendetta/manager/utils/Constants.kt index 001353f..bc0986a 100644 --- a/app/src/main/java/dev/beefers/vendetta/manager/utils/Constants.kt +++ b/app/src/main/java/dev/beefers/vendetta/manager/utils/Constants.kt @@ -11,6 +11,8 @@ object Constants { val VENDETTA_DIR = Environment.getExternalStorageDirectory().resolve("Vendetta") + val DUMMY_VERSION = DiscordVersion(1,0, DiscordVersion.Type.STABLE) + } data class TeamMember( diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8eb25b6..bb40413 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -8,6 +8,8 @@ 7 more taps 5 more taps 2 more taps + Loading… + Cannot downgrade, try uninstalling first You are now a developer In order for Vendetta Manager to function, file permissions are required. Since shared data is stored in ~/Vendetta, permissions are required in order to access it.