From 459a0b18bac81fe294ff745dea8c54d2b3894344 Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Sat, 16 Dec 2023 21:07:12 +0100 Subject: [PATCH] feat: Add permission check --- .../VideoRecorderPreparationSheet.kt | 64 +++++++++++-------- .../molecules/VideoRecordingStart.kt | 14 +++- 2 files changed, 49 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/app/myzel394/alibi/ui/components/RecorderScreen/molecules/VideoRecorderPreparationSheet.kt b/app/src/main/java/app/myzel394/alibi/ui/components/RecorderScreen/molecules/VideoRecorderPreparationSheet.kt index 3ad5961..062a8ab 100644 --- a/app/src/main/java/app/myzel394/alibi/ui/components/RecorderScreen/molecules/VideoRecorderPreparationSheet.kt +++ b/app/src/main/java/app/myzel394/alibi/ui/components/RecorderScreen/molecules/VideoRecorderPreparationSheet.kt @@ -170,34 +170,42 @@ fun VideoRecorderPreparationSheet( verticalArrangement = Arrangement.spacedBy(8.dp), horizontalAlignment = Alignment.CenterHorizontally, ) { - Row( - modifier = Modifier - .fillMaxWidth() - .height(BIG_PRIMARY_BUTTON_SIZE) - .clip(CircleShape) - .background(MaterialTheme.colorScheme.primary) - .padding(16.dp) - .semantics { - contentDescription = label - } - .pointerInput(Unit) { - detectTapGestures( - onLongPress = { - onPreviewVisible() - }, - onTap = { - onStartRecording() - } - ) - }, - horizontalArrangement = Arrangement.Center, - verticalAlignment = Alignment.CenterVertically, - ) { - Text( - label, - style = MaterialTheme.typography.labelLarge, - color = MaterialTheme.colorScheme.onPrimary, - ) + PermissionRequester( + permission = Manifest.permission.CAMERA, + icon = Icons.Default.CameraAlt, + onPermissionAvailable = { + onStartRecording() + } + ) { trigger -> + Row( + modifier = Modifier + .fillMaxWidth() + .height(BIG_PRIMARY_BUTTON_SIZE) + .clip(CircleShape) + .background(MaterialTheme.colorScheme.primary) + .padding(16.dp) + .semantics { + contentDescription = label + } + .pointerInput(Unit) { + detectTapGestures( + onLongPress = { + onPreviewVisible() + }, + onTap = { + trigger() + } + ) + }, + horizontalArrangement = Arrangement.Center, + verticalAlignment = Alignment.CenterVertically, + ) { + Text( + label, + style = MaterialTheme.typography.labelLarge, + color = MaterialTheme.colorScheme.onPrimary, + ) + } } Text( stringResource( diff --git a/app/src/main/java/app/myzel394/alibi/ui/components/RecorderScreen/molecules/VideoRecordingStart.kt b/app/src/main/java/app/myzel394/alibi/ui/components/RecorderScreen/molecules/VideoRecordingStart.kt index 883e842..60b529f 100644 --- a/app/src/main/java/app/myzel394/alibi/ui/components/RecorderScreen/molecules/VideoRecordingStart.kt +++ b/app/src/main/java/app/myzel394/alibi/ui/components/RecorderScreen/molecules/VideoRecordingStart.kt @@ -46,6 +46,7 @@ import app.myzel394.alibi.db.AppSettings import app.myzel394.alibi.ui.BIG_PRIMARY_BUTTON_SIZE import app.myzel394.alibi.ui.components.atoms.PermissionRequester import app.myzel394.alibi.ui.models.VideoRecorderModel +import app.myzel394.alibi.ui.utils.PermissionHelper @OptIn(ExperimentalFoundationApi::class) @Composable @@ -97,7 +98,18 @@ fun VideoRecordingStart( interactionSource = remember { MutableInteractionSource() }, indication = rememberRipple(color = MaterialTheme.colorScheme.primary), onClick = { - videoRecorder.startRecording(context, appSettings) + if (PermissionHelper.hasGranted( + context, + Manifest.permission.CAMERA + ) && PermissionHelper.hasGranted( + context, + Manifest.permission.RECORD_AUDIO + ) + ) { + videoRecorder.startRecording(context, appSettings) + } else { + showSheet = true + } }, onLongClick = { showSheet = true