From a995f43b7b0a97e23e25564317261898e97365a5 Mon Sep 17 00:00:00 2001 From: Ax333l Date: Sat, 6 Jul 2024 18:12:27 +0200 Subject: [PATCH] fix: move battery warning to dashboard --- .../manager/ui/screen/DashboardScreen.kt | 21 +++++++++++ .../manager/ui/screen/SettingsScreen.kt | 35 ------------------- .../ui/viewmodel/DashboardViewModel.kt | 20 ++++++++--- app/src/main/res/values/strings.xml | 2 +- 4 files changed, 37 insertions(+), 41 deletions(-) diff --git a/app/src/main/java/app/revanced/manager/ui/screen/DashboardScreen.kt b/app/src/main/java/app/revanced/manager/ui/screen/DashboardScreen.kt index 5f5ff1fa..288bc0e1 100644 --- a/app/src/main/java/app/revanced/manager/ui/screen/DashboardScreen.kt +++ b/app/src/main/java/app/revanced/manager/ui/screen/DashboardScreen.kt @@ -1,5 +1,9 @@ package app.revanced.manager.ui.screen +import android.annotation.SuppressLint +import android.content.Intent +import android.net.Uri +import android.provider.Settings import androidx.activity.compose.BackHandler import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.layout.Arrangement @@ -10,6 +14,7 @@ import androidx.compose.foundation.pager.HorizontalPager import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Add +import androidx.compose.material.icons.filled.BatteryAlert import androidx.compose.material.icons.filled.Close import androidx.compose.material.icons.outlined.Apps import androidx.compose.material.icons.outlined.DeleteOutline @@ -69,6 +74,7 @@ enum class DashboardPage( BUNDLES(R.string.tab_bundles, Icons.Outlined.Source), } +@SuppressLint("BatteryLife") @OptIn(ExperimentalFoundationApi::class, ExperimentalMaterial3Api::class) @Composable fun DashboardScreen( @@ -229,6 +235,21 @@ fun DashboardScreen( ) } } else null, + if (vm.showBatteryOptimizationsWarning) { + { + NotificationCard( + modifier = Modifier.padding(16.dp), + isWarning = true, + icon = Icons.Default.BatteryAlert, + text = stringResource(R.string.battery_optimization_notification), + onClick = { + androidContext.startActivity(Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS).apply { + data = Uri.parse("package:${androidContext.packageName}") + }) + } + ) + } + } else null, vm.updatedManagerVersion?.let { { NotificationCard( diff --git a/app/src/main/java/app/revanced/manager/ui/screen/SettingsScreen.kt b/app/src/main/java/app/revanced/manager/ui/screen/SettingsScreen.kt index 690b2016..f43ecb4b 100644 --- a/app/src/main/java/app/revanced/manager/ui/screen/SettingsScreen.kt +++ b/app/src/main/java/app/revanced/manager/ui/screen/SettingsScreen.kt @@ -1,32 +1,17 @@ package app.revanced.manager.ui.screen -import android.annotation.SuppressLint -import android.content.Context -import android.content.Intent -import android.net.Uri -import android.os.PowerManager -import android.provider.Settings -import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.BatteryAlert import androidx.compose.material.icons.outlined.* import androidx.compose.material3.* import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource -import androidx.compose.ui.unit.dp import app.revanced.manager.R import app.revanced.manager.ui.component.AppTopBar import app.revanced.manager.ui.component.ColumnWithScrollbar -import app.revanced.manager.ui.component.NotificationCard import app.revanced.manager.ui.component.settings.SettingsListItem import app.revanced.manager.ui.destination.SettingsDestination import app.revanced.manager.ui.screen.settings.* @@ -38,7 +23,6 @@ import dev.olshevski.navigation.reimagined.* import org.koin.androidx.compose.koinViewModel import org.koin.core.parameter.parametersOf -@SuppressLint("BatteryLife") @OptIn(ExperimentalMaterial3Api::class) @Composable fun SettingsScreen( @@ -54,10 +38,6 @@ fun SettingsScreen( else navController.pop() } - val context = LocalContext.current - val pm = context.getSystemService(Context.POWER_SERVICE) as PowerManager - var showBatteryButton by remember { mutableStateOf(!pm.isIgnoringBatteryOptimizations(context.packageName)) } - val settingsSections = listOf( Triple( R.string.general, @@ -163,21 +143,6 @@ fun SettingsScreen( .padding(paddingValues) .fillMaxSize() ) { - AnimatedVisibility(visible = showBatteryButton) { - NotificationCard( - modifier = Modifier.padding(16.dp), - isWarning = true, - icon = Icons.Default.BatteryAlert, - text = stringResource(R.string.battery_optimization_notification), - onClick = { - context.startActivity(Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS).apply { - data = Uri.parse("package:${context.packageName}") - }) - showBatteryButton = - !pm.isIgnoringBatteryOptimizations(context.packageName) - } - ) - } settingsSections.forEach { (titleDescIcon, destination) -> SettingsListItem( modifier = Modifier.clickable { navController.navigate(destination) }, diff --git a/app/src/main/java/app/revanced/manager/ui/viewmodel/DashboardViewModel.kt b/app/src/main/java/app/revanced/manager/ui/viewmodel/DashboardViewModel.kt index c2dd6d64..9d2e1224 100644 --- a/app/src/main/java/app/revanced/manager/ui/viewmodel/DashboardViewModel.kt +++ b/app/src/main/java/app/revanced/manager/ui/viewmodel/DashboardViewModel.kt @@ -3,10 +3,12 @@ package app.revanced.manager.ui.viewmodel import android.app.Application import android.content.ContentResolver import android.net.Uri +import android.os.PowerManager import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateListOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue +import androidx.core.content.getSystemService import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import app.revanced.manager.R @@ -33,15 +35,21 @@ class DashboardViewModel( val availablePatches = patchBundleRepository.bundles.map { it.values.sumOf { bundle -> bundle.patches.size } } private val contentResolver: ContentResolver = app.contentResolver + private val powerManager = app.getSystemService()!! val sources = patchBundleRepository.sources val selectedSources = mutableStateListOf() - var updatedManagerVersion: String? by mutableStateOf(null) private set + var showBatteryOptimizationsWarning by mutableStateOf(false) + private set init { - viewModelScope.launch { checkForManagerUpdates() } + viewModelScope.launch { + checkForManagerUpdates() + showBatteryOptimizationsWarning = + !powerManager.isIgnoringBatteryOptimizations(app.packageName) + } } fun dismissUpdateDialog() { @@ -80,12 +88,14 @@ class DashboardViewModel( fun cancelSourceSelection() { selectedSources.clear() } + fun createLocalSource(patchBundle: Uri, integrations: Uri?) = viewModelScope.launch { contentResolver.openInputStream(patchBundle)!!.use { patchesStream -> - integrations?.let { contentResolver.openInputStream(it) }.use { integrationsStream -> - patchBundleRepository.createLocal(patchesStream, integrationsStream) - } + integrations?.let { contentResolver.openInputStream(it) } + .use { integrationsStream -> + patchBundleRepository.createLocal(patchesStream, integrationsStream) + } } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a1451563..80743ccc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -323,7 +323,7 @@ Loading changelog Failed to download changelog: %s Check out the latest changes in this update - Battery optimization must be turned off in order for ReVanced Manager to work correctly in the background. Click here to turn off. + Battery optimizations must be turned off in order for ReVanced Manager to work correctly in the background. Click here to turn off optimizations. Installing update… Downloading update… Failed to download update: %s