feat(PermissionsDialog): reusable dialog (#19)

This commit is contained in:
aliernfrog 2022-12-01 21:19:19 +03:00 committed by GitHub
parent d25b67ceef
commit a0f7e89e7c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -30,54 +30,44 @@ fun PermissionsDialog() {
}
}
@Composable
private fun PermissionsAlertDialog(onSuccess: () -> Unit) {
AlertDialog(onDismissRequest = {}, shape = RoundedCornerShape(12.dp), title = {
Text(stringResource(R.string.permissions))
}, text = {
Text(stringResource(R.string.permission_request))
}, confirmButton = {
TextButton(onClick = onSuccess) {
Text(stringResource(R.string.ok))
}
}, properties = DialogProperties(
dismissOnBackPress = false, dismissOnClickOutside = false
))
}
@SuppressLint("NewApi")
@Composable
fun AllFilesAccess() {
private fun AllFilesAccess() {
var hasAccess by remember { mutableStateOf(Environment.isExternalStorageManager()) }
if (!hasAccess) {
AlertDialog(onDismissRequest = {}, shape = RoundedCornerShape(12.dp), title = {
Text(stringResource(id = R.string.permissions))
}, text = {
Text(stringResource(R.string.permission_request))
}, confirmButton = {
val launcher =
rememberLauncherForActivityResult(ActivityResultContracts.StartActivityForResult()) {
if (Environment.isExternalStorageManager()) {
hasAccess = true
}
}
TextButton(onClick = {
Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION)
.setData("package:${BuildConfig.APPLICATION_ID}".toUri())
.let { launcher.launch(it) }
}) {
Text(text = stringResource(R.string.ok))
}
})
val launcher = rememberLauncherForActivityResult(ActivityResultContracts.StartActivityForResult()) {
hasAccess = Environment.isExternalStorageManager()
}
if (!hasAccess) PermissionsAlertDialog {
Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION)
.setData("package:${BuildConfig.APPLICATION_ID}".toUri())
.let { launcher.launch(it) }
}
}
@OptIn(ExperimentalPermissionsApi::class)
@Composable
fun StoragePermission() {
private fun StoragePermission() {
val permission = rememberMultiplePermissionsState(
listOf(
android.Manifest.permission.READ_EXTERNAL_STORAGE,
android.Manifest.permission.WRITE_EXTERNAL_STORAGE
)
)
if (!permission.allPermissionsGranted) {
AlertDialog(onDismissRequest = {}, shape = RoundedCornerShape(12.dp), title = {
Text(stringResource(id = R.string.permissions))
}, text = {
R.string.permission_request
}, confirmButton = {
TextButton(onClick = permission::launchMultiplePermissionRequest) {
Text(text = stringResource(R.string.ok))
}
}, properties = DialogProperties(
dismissOnBackPress = false, dismissOnClickOutside = false
)
)
}
if (!permission.allPermissionsGranted)
PermissionsAlertDialog(permission::launchMultiplePermissionRequest)
}