Co-authored-by: Ivan Iskandar <12537387+ivaniskandar@users.noreply.github.com> (cherry picked from commit e473c7f09fc009161145aca94bd70027f042b0bf) # Conflicts: # app/src/main/java/eu/kanade/presentation/browse/ExtensionFilterScreen.kt # app/src/main/java/eu/kanade/presentation/browse/ExtensionsScreen.kt # app/src/main/java/eu/kanade/presentation/browse/GlobalSearchScreen.kt # app/src/main/java/eu/kanade/presentation/browse/SourcesFilterScreen.kt # app/src/main/java/eu/kanade/presentation/browse/components/GlobalSearchResultItems.kt # app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt # app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt # gradle/compose.versions.toml
34 lines
1.2 KiB
Kotlin
34 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.lifecycle.DefaultLifecycleObserver
|
|
import androidx.lifecycle.LifecycleOwner
|
|
import androidx.lifecycle.compose.LocalLifecycleOwner
|
|
|
|
@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
|
|
}
|