From f5b24b6d5b2703b33844694a0116ad2e06b2211b Mon Sep 17 00:00:00 2001 From: Ushie Date: Fri, 3 Oct 2025 17:08:56 +0300 Subject: [PATCH] feat: Toggle to use pre-release versions of ReVanced Manager --- .../revanced/manager/domain/manager/PreferencesManager.kt | 1 + .../java/app/revanced/manager/network/api/ReVancedAPI.kt | 3 ++- .../ui/screen/settings/update/UpdatesSettingsScreen.kt | 6 ++++++ .../java/app/revanced/manager/ui/viewmodel/MainViewModel.kt | 4 ++++ .../manager/ui/viewmodel/UpdatesSettingsViewModel.kt | 2 ++ app/src/main/res/values/strings.xml | 2 ++ 6 files changed, 17 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/app/revanced/manager/domain/manager/PreferencesManager.kt b/app/src/main/java/app/revanced/manager/domain/manager/PreferencesManager.kt index 1f35d782..c2a40f68 100644 --- a/app/src/main/java/app/revanced/manager/domain/manager/PreferencesManager.kt +++ b/app/src/main/java/app/revanced/manager/domain/manager/PreferencesManager.kt @@ -22,6 +22,7 @@ class PreferencesManager( val firstLaunch = booleanPreference("first_launch", true) val managerAutoUpdates = booleanPreference("manager_auto_updates", false) val showManagerUpdateDialogOnLaunch = booleanPreference("show_manager_update_dialog_on_launch", true) + val useManagerPrereleases = booleanPreference("manager_prereleases", false) val disablePatchVersionCompatCheck = booleanPreference("disable_patch_version_compatibility_check", false) val disableSelectionWarning = booleanPreference("disable_selection_warning", false) diff --git a/app/src/main/java/app/revanced/manager/network/api/ReVancedAPI.kt b/app/src/main/java/app/revanced/manager/network/api/ReVancedAPI.kt index bb365580..dddb2641 100644 --- a/app/src/main/java/app/revanced/manager/network/api/ReVancedAPI.kt +++ b/app/src/main/java/app/revanced/manager/network/api/ReVancedAPI.kt @@ -32,7 +32,8 @@ class ReVancedAPI( suspend fun getAppUpdate() = getLatestAppInfo().getOrThrow().takeIf { it.version != Build.VERSION.RELEASE } - suspend fun getLatestAppInfo() = request("manager") + suspend fun getLatestAppInfo() = + request("manager?prerelease=${prefs.useManagerPrereleases.get()}") suspend fun getPatchesUpdate() = request("patches") diff --git a/app/src/main/java/app/revanced/manager/ui/screen/settings/update/UpdatesSettingsScreen.kt b/app/src/main/java/app/revanced/manager/ui/screen/settings/update/UpdatesSettingsScreen.kt index c613a179..c46d5b25 100644 --- a/app/src/main/java/app/revanced/manager/ui/screen/settings/update/UpdatesSettingsScreen.kt +++ b/app/src/main/java/app/revanced/manager/ui/screen/settings/update/UpdatesSettingsScreen.kt @@ -92,6 +92,12 @@ fun UpdatesSettingsScreen( headline = R.string.show_manager_update_dialog_on_launch, description = R.string.show_manager_update_dialog_on_launch_description ) + + BooleanItem( + preference = vm.useManagerPrereleases, + headline = R.string.manager_prereleases, + description = R.string.manager_prereleases_description + ) } } } \ No newline at end of file diff --git a/app/src/main/java/app/revanced/manager/ui/viewmodel/MainViewModel.kt b/app/src/main/java/app/revanced/manager/ui/viewmodel/MainViewModel.kt index 99c675b1..13244c64 100644 --- a/app/src/main/java/app/revanced/manager/ui/viewmodel/MainViewModel.kt +++ b/app/src/main/java/app/revanced/manager/ui/viewmodel/MainViewModel.kt @@ -120,6 +120,9 @@ class MainViewModel( settings.useDynamicTheme?.let { dynamicColor -> prefs.dynamicColor.update(dynamicColor) } + settings.usePrereleases?.let { prereleases -> + prefs.useManagerPrereleases.update(prereleases) + } settings.apiUrl?.let { api -> prefs.api.update(api.removeSuffix("/")) } @@ -159,6 +162,7 @@ class MainViewModel( val keystorePassword: String, val themeMode: Int? = null, val useDynamicTheme: Boolean? = null, + val usePrereleases: Boolean? = null, val apiUrl: String? = null, val experimentalPatchesEnabled: Boolean? = null, val patchesAutoUpdate: Boolean? = null, diff --git a/app/src/main/java/app/revanced/manager/ui/viewmodel/UpdatesSettingsViewModel.kt b/app/src/main/java/app/revanced/manager/ui/viewmodel/UpdatesSettingsViewModel.kt index 51764e50..eb413d11 100644 --- a/app/src/main/java/app/revanced/manager/ui/viewmodel/UpdatesSettingsViewModel.kt +++ b/app/src/main/java/app/revanced/manager/ui/viewmodel/UpdatesSettingsViewModel.kt @@ -17,6 +17,8 @@ class UpdatesSettingsViewModel( ) : ViewModel() { val managerAutoUpdates = prefs.managerAutoUpdates val showManagerUpdateDialogOnLaunch = prefs.showManagerUpdateDialogOnLaunch + val useManagerPrereleases = prefs.useManagerPrereleases + val isConnected: Boolean get() = network.isConnected() diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c1a3d648..c7067220 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -368,6 +368,8 @@ Manually check for updates Check for updates on launch Check for new versions of ReVanced Manager when the application starts + Use pre-releases + Use pre-release versions of ReVanced Manager View changelogs Loading changelog Failed to download changelog: %s