mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
fix: Granted perms didn't update the UI
This commit is contained in:
parent
66b61f8c41
commit
bde3f25fe9
1 changed files with 19 additions and 32 deletions
|
@ -24,16 +24,15 @@ import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.DisposableEffect
|
import androidx.compose.runtime.DisposableEffect
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
|
||||||
import androidx.compose.runtime.setValue
|
import androidx.compose.runtime.setValue
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.platform.LocalLifecycleOwner
|
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.core.content.getSystemService
|
import androidx.core.content.getSystemService
|
||||||
import androidx.lifecycle.Lifecycle
|
import androidx.lifecycle.DefaultLifecycleObserver
|
||||||
import androidx.lifecycle.LifecycleEventObserver
|
import androidx.lifecycle.LifecycleOwner
|
||||||
|
import androidx.lifecycle.compose.LocalLifecycleOwner
|
||||||
import dev.yokai.presentation.component.Gap
|
import dev.yokai.presentation.component.Gap
|
||||||
import dev.yokai.presentation.theme.Size
|
import dev.yokai.presentation.theme.Size
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
|
@ -41,6 +40,8 @@ import eu.kanade.tachiyomi.R
|
||||||
internal class PermissionStep : OnboardingStep {
|
internal class PermissionStep : OnboardingStep {
|
||||||
|
|
||||||
private var installGranted by mutableStateOf(false)
|
private var installGranted by mutableStateOf(false)
|
||||||
|
private var notificationGranted by mutableStateOf(false)
|
||||||
|
private var batteryGranted by mutableStateOf(false)
|
||||||
|
|
||||||
override val isComplete: Boolean
|
override val isComplete: Boolean
|
||||||
get() = installGranted
|
get() = installGranted
|
||||||
|
@ -50,28 +51,9 @@ internal class PermissionStep : OnboardingStep {
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
val lifecycleOwner = LocalLifecycleOwner.current
|
val lifecycleOwner = LocalLifecycleOwner.current
|
||||||
|
|
||||||
var notificationGranted by remember {
|
|
||||||
mutableStateOf(
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
|
||||||
context.checkSelfPermission(Manifest.permission.POST_NOTIFICATIONS) ==
|
|
||||||
PackageManager.PERMISSION_GRANTED
|
|
||||||
} else {
|
|
||||||
true
|
|
||||||
}
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
var batteryGranted by remember {
|
|
||||||
mutableStateOf(
|
|
||||||
context
|
|
||||||
.getSystemService<PowerManager>()!!
|
|
||||||
.isIgnoringBatteryOptimizations(context.packageName)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
DisposableEffect(lifecycleOwner.lifecycle) {
|
DisposableEffect(lifecycleOwner.lifecycle) {
|
||||||
val observer = LifecycleEventObserver { _, event ->
|
val observer = object : DefaultLifecycleObserver {
|
||||||
if (event == Lifecycle.Event.ON_RESUME) {
|
override fun onResume(owner: LifecycleOwner) {
|
||||||
installGranted =
|
installGranted =
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
context.packageManager.canRequestPackageInstalls()
|
context.packageManager.canRequestPackageInstalls()
|
||||||
|
@ -82,15 +64,20 @@ internal class PermissionStep : OnboardingStep {
|
||||||
Settings.Secure.INSTALL_NON_MARKET_APPS
|
Settings.Secure.INSTALL_NON_MARKET_APPS
|
||||||
) != 0
|
) != 0
|
||||||
}
|
}
|
||||||
batteryGranted =
|
notificationGranted = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||||
context
|
context.checkSelfPermission(Manifest.permission.POST_NOTIFICATIONS) ==
|
||||||
.getSystemService<PowerManager>()!!
|
PackageManager.PERMISSION_GRANTED
|
||||||
|
} else {
|
||||||
|
true
|
||||||
|
}
|
||||||
|
batteryGranted = context.getSystemService<PowerManager>()!!
|
||||||
.isIgnoringBatteryOptimizations(context.packageName)
|
.isIgnoringBatteryOptimizations(context.packageName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lifecycleOwner.lifecycle.addObserver(observer)
|
lifecycleOwner.lifecycle.addObserver(observer)
|
||||||
onDispose { lifecycleOwner.lifecycle.removeObserver(observer) }
|
onDispose {
|
||||||
|
lifecycleOwner.lifecycle.removeObserver(observer)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Column(
|
Column(
|
||||||
|
@ -123,7 +110,7 @@ internal class PermissionStep : OnboardingStep {
|
||||||
val permissionRequester =
|
val permissionRequester =
|
||||||
rememberLauncherForActivityResult(
|
rememberLauncherForActivityResult(
|
||||||
contract = ActivityResultContracts.RequestPermission(),
|
contract = ActivityResultContracts.RequestPermission(),
|
||||||
onResult = { bool -> notificationGranted = bool },
|
onResult = { /* No-op, handled on resume */ },
|
||||||
)
|
)
|
||||||
PermissionItem(
|
PermissionItem(
|
||||||
title = stringResource(R.string.onboarding_permission_notifications),
|
title = stringResource(R.string.onboarding_permission_notifications),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue