From 71bf60ccc148096007f8445d64557f72baaf53ed Mon Sep 17 00:00:00 2001 From: Ushie Date: Thu, 16 Jan 2025 03:22:57 +0300 Subject: [PATCH 1/2] feat: Temporarily use DEFAULT if SHIZUKU permissions are not granted --- .../installer/step/installing/InstallStep.kt | 12 +++++++++- .../manager/ui/activity/MainActivity.kt | 22 ++----------------- .../ui/viewmodel/home/HomeViewModel.kt | 21 ++++++++++++++---- 3 files changed, 30 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/app/revenge/manager/installer/step/installing/InstallStep.kt b/app/src/main/java/app/revenge/manager/installer/step/installing/InstallStep.kt index cc474ff..b1f0398 100644 --- a/app/src/main/java/app/revenge/manager/installer/step/installing/InstallStep.kt +++ b/app/src/main/java/app/revenge/manager/installer/step/installing/InstallStep.kt @@ -7,10 +7,12 @@ import app.revenge.manager.domain.manager.PreferenceManager import app.revenge.manager.installer.Installer import app.revenge.manager.installer.session.SessionInstaller import app.revenge.manager.installer.shizuku.ShizukuInstaller +import app.revenge.manager.installer.shizuku.ShizukuPermissions import app.revenge.manager.installer.step.Step import app.revenge.manager.installer.step.StepGroup import app.revenge.manager.installer.step.StepRunner import app.revenge.manager.utils.isMiui +import app.revenge.manager.utils.showToast import org.koin.core.component.inject import java.io.File @@ -38,7 +40,15 @@ class InstallStep( ?.takeIf { it.isNotEmpty() } ?: throw Error("Missing APKs from LSPatch step; failure likely") - val installer: Installer = when (preferences.installMethod) { + val installMethod = if (preferences.installMethod == InstallMethod.SHIZUKU && !ShizukuPermissions.waitShizukuPermissions()) { + // Temporarily use DEFAULT if SHIZUKU permissions are not granted + InstallMethod.DEFAULT + } else { + context.showToast(R.string.msg_shizuku_denied) + preferences.installMethod + } + + val installer: Installer = when (installMethod) { InstallMethod.DEFAULT -> SessionInstaller(context) InstallMethod.SHIZUKU -> ShizukuInstaller(context) } diff --git a/app/src/main/java/app/revenge/manager/ui/activity/MainActivity.kt b/app/src/main/java/app/revenge/manager/ui/activity/MainActivity.kt index 2c7a583..478980f 100644 --- a/app/src/main/java/app/revenge/manager/ui/activity/MainActivity.kt +++ b/app/src/main/java/app/revenge/manager/ui/activity/MainActivity.kt @@ -8,24 +8,15 @@ import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.core.app.ActivityCompat import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen -import androidx.lifecycle.lifecycleScope -import cafe.adriel.voyager.navigator.Navigator -import cafe.adriel.voyager.transitions.SlideTransition -import app.revenge.manager.domain.manager.InstallMethod -import app.revenge.manager.domain.manager.PreferenceManager -import app.revenge.manager.installer.shizuku.ShizukuPermissions import app.revenge.manager.ui.screen.home.HomeScreen import app.revenge.manager.ui.screen.installer.InstallerScreen import app.revenge.manager.ui.theme.RevengeManagerTheme import app.revenge.manager.utils.DiscordVersion import app.revenge.manager.utils.Intents -import kotlinx.coroutines.launch -import org.koin.android.ext.android.inject +import cafe.adriel.voyager.navigator.Navigator +import cafe.adriel.voyager.transitions.SlideTransition class MainActivity : ComponentActivity() { - - private val preferences: PreferenceManager by inject() - override fun onCreate(savedInstanceState: Bundle?) { installSplashScreen() enableEdgeToEdge() @@ -40,14 +31,6 @@ class MainActivity : ComponentActivity() { ) } - if (preferences.installMethod == InstallMethod.SHIZUKU) { - lifecycleScope.launch { - if (!ShizukuPermissions.waitShizukuPermissions()) { - preferences.installMethod = InstallMethod.DEFAULT - } - } - } - val screen = if (intent.action == Intents.Actions.INSTALL && version != null) { InstallerScreen(DiscordVersion.fromVersionCode(version)!!) } else { @@ -62,5 +45,4 @@ class MainActivity : ComponentActivity() { } } } - } diff --git a/app/src/main/java/app/revenge/manager/ui/viewmodel/home/HomeViewModel.kt b/app/src/main/java/app/revenge/manager/ui/viewmodel/home/HomeViewModel.kt index f706e66..2a9733d 100644 --- a/app/src/main/java/app/revenge/manager/ui/viewmodel/home/HomeViewModel.kt +++ b/app/src/main/java/app/revenge/manager/ui/viewmodel/home/HomeViewModel.kt @@ -12,8 +12,7 @@ import androidx.paging.Pager import androidx.paging.PagingConfig import androidx.paging.cachedIn import app.revenge.manager.BuildConfig -import cafe.adriel.voyager.core.model.ScreenModel -import cafe.adriel.voyager.core.model.screenModelScope +import app.revenge.manager.R import app.revenge.manager.domain.manager.DownloadManager import app.revenge.manager.domain.manager.InstallManager import app.revenge.manager.domain.manager.InstallMethod @@ -22,12 +21,16 @@ import app.revenge.manager.domain.repository.RestRepository import app.revenge.manager.installer.Installer import app.revenge.manager.installer.session.SessionInstaller import app.revenge.manager.installer.shizuku.ShizukuInstaller +import app.revenge.manager.installer.shizuku.ShizukuPermissions import app.revenge.manager.network.dto.Release import app.revenge.manager.network.utils.CommitsPagingSource import app.revenge.manager.network.utils.dataOrNull import app.revenge.manager.network.utils.ifSuccessful import app.revenge.manager.utils.DiscordVersion import app.revenge.manager.utils.isMiui +import app.revenge.manager.utils.showToast +import cafe.adriel.voyager.core.model.ScreenModel +import cafe.adriel.voyager.core.model.screenModelScope import kotlinx.coroutines.launch import java.io.File @@ -52,7 +55,9 @@ class HomeViewModel( var showUpdateDialog by mutableStateOf(false) var isUpdating by mutableStateOf(false) - val commits = Pager(PagingConfig(pageSize = 30)) { CommitsPagingSource(repo) }.flow.cachedIn(screenModelScope) + val commits = Pager(PagingConfig(pageSize = 30)) { CommitsPagingSource(repo) }.flow.cachedIn( + screenModelScope + ) init { getDiscordVersions() @@ -129,7 +134,15 @@ class HomeViewModel( downloadManager.downloadUpdate(update) isUpdating = false - val installer: Installer = when (prefs.installMethod) { + val installMethod = if (prefs.installMethod == InstallMethod.SHIZUKU && !ShizukuPermissions.waitShizukuPermissions()) { + // Temporarily use DEFAULT if SHIZUKU permissions are not granted + InstallMethod.DEFAULT + } else { + context.showToast(R.string.msg_shizuku_denied) + prefs.installMethod + } + + val installer: Installer = when (installMethod) { InstallMethod.DEFAULT -> SessionInstaller(context) InstallMethod.SHIZUKU -> ShizukuInstaller(context) } From c539311ecdf478beed7098c16bb65813bba2a8a5 Mon Sep 17 00:00:00 2001 From: Ushie Date: Thu, 16 Jan 2025 03:50:27 +0300 Subject: [PATCH 2/2] fix: Inverted toast condition --- .../revenge/manager/installer/step/installing/InstallStep.kt | 2 +- .../java/app/revenge/manager/ui/viewmodel/home/HomeViewModel.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/app/revenge/manager/installer/step/installing/InstallStep.kt b/app/src/main/java/app/revenge/manager/installer/step/installing/InstallStep.kt index b1f0398..bf761c4 100644 --- a/app/src/main/java/app/revenge/manager/installer/step/installing/InstallStep.kt +++ b/app/src/main/java/app/revenge/manager/installer/step/installing/InstallStep.kt @@ -42,9 +42,9 @@ class InstallStep( val installMethod = if (preferences.installMethod == InstallMethod.SHIZUKU && !ShizukuPermissions.waitShizukuPermissions()) { // Temporarily use DEFAULT if SHIZUKU permissions are not granted + context.showToast(R.string.msg_shizuku_denied) InstallMethod.DEFAULT } else { - context.showToast(R.string.msg_shizuku_denied) preferences.installMethod } diff --git a/app/src/main/java/app/revenge/manager/ui/viewmodel/home/HomeViewModel.kt b/app/src/main/java/app/revenge/manager/ui/viewmodel/home/HomeViewModel.kt index 2a9733d..faf29fc 100644 --- a/app/src/main/java/app/revenge/manager/ui/viewmodel/home/HomeViewModel.kt +++ b/app/src/main/java/app/revenge/manager/ui/viewmodel/home/HomeViewModel.kt @@ -136,9 +136,9 @@ class HomeViewModel( val installMethod = if (prefs.installMethod == InstallMethod.SHIZUKU && !ShizukuPermissions.waitShizukuPermissions()) { // Temporarily use DEFAULT if SHIZUKU permissions are not granted + context.showToast(R.string.msg_shizuku_denied) InstallMethod.DEFAULT } else { - context.showToast(R.string.msg_shizuku_denied) prefs.installMethod }