35 lines
1.2 KiB
Kotlin
35 lines
1.2 KiB
Kotlin
package eu.kanade.presentation.util
|
|
|
|
import androidx.compose.runtime.Composable
|
|
import androidx.compose.runtime.DisposableEffect
|
|
import androidx.compose.runtime.getValue
|
|
import androidx.compose.runtime.mutableStateOf
|
|
import androidx.compose.runtime.remember
|
|
import androidx.compose.runtime.setValue
|
|
import androidx.compose.ui.platform.LocalContext
|
|
import androidx.compose.ui.platform.LocalLifecycleOwner
|
|
import androidx.lifecycle.DefaultLifecycleObserver
|
|
import androidx.lifecycle.LifecycleOwner
|
|
|
|
@Composable
|
|
fun rememberRequestPackageInstallsPermissionState(initialValue: Boolean = false): Boolean {
|
|
val context = LocalContext.current
|
|
val lifecycleOwner = LocalLifecycleOwner.current
|
|
|
|
var installGranted by remember { mutableStateOf(initialValue) }
|
|
|
|
DisposableEffect(lifecycleOwner.lifecycle) {
|
|
val observer = object : DefaultLifecycleObserver {
|
|
override fun onResume(owner: LifecycleOwner) {
|
|
installGranted = context.packageManager.canRequestPackageInstalls()
|
|
}
|
|
}
|
|
lifecycleOwner.lifecycle.addObserver(observer)
|
|
onDispose {
|
|
lifecycleOwner.lifecycle.removeObserver(observer)
|
|
}
|
|
}
|
|
|
|
return installGranted
|
|
}
|