Resume action once persmission has been granted.

This commit is contained in:
Benoit Marty
2023-09-21 12:16:30 +02:00
parent 7e587f9a9e
commit e4ca2484ba
3 changed files with 29 additions and 0 deletions
@@ -55,6 +55,7 @@ class RoomDetailsEditPresenter @Inject constructor(
) : Presenter<RoomDetailsEditState> {
private val cameraPermissionPresenter = permissionsPresenterFactory.create(android.Manifest.permission.CAMERA)
private var pendingPermissionRequest = false
@Composable
override fun present(): RoomDetailsEditState {
@@ -98,6 +99,13 @@ class RoomDetailsEditPresenter @Inject constructor(
onResult = { uri -> if (uri != null) roomAvatarUri = uri }
)
LaunchedEffect(cameraPermissionState.permissionGranted) {
if (cameraPermissionState.permissionGranted && pendingPermissionRequest) {
pendingPermissionRequest = false
cameraPhotoPicker.launch()
}
}
val avatarActions by remember(roomAvatarUri) {
derivedStateOf {
listOfNotNull(
@@ -119,6 +127,7 @@ class RoomDetailsEditPresenter @Inject constructor(
AvatarAction.TakePhoto -> if (cameraPermissionState.permissionGranted) {
cameraPhotoPicker.launch()
} else {
pendingPermissionRequest = true
cameraPermissionState.eventSink(PermissionsEvents.AskPermissionToUser)
}
AvatarAction.Remove -> roomAvatarUri = null