@@ -17,6 +17,7 @@ import androidx.compose.foundation.background
1717import androidx.compose.foundation.layout.Arrangement
1818import androidx.compose.foundation.layout.Box
1919import androidx.compose.foundation.layout.Column
20+ import androidx.compose.foundation.layout.fillMaxHeight
2021import androidx.compose.foundation.layout.fillMaxSize
2122import androidx.compose.foundation.layout.fillMaxWidth
2223import androidx.compose.foundation.layout.navigationBarsPadding
@@ -49,7 +50,6 @@ import androidx.lifecycle.LifecycleEventObserver
4950import androidx.lifecycle.compose.LocalLifecycleOwner
5051import com.google.accompanist.permissions.ExperimentalPermissionsApi
5152import com.google.accompanist.permissions.rememberPermissionState
52- import com.google.accompanist.permissions.shouldShowRationale
5353import com.google.mlkit.vision.barcode.BarcodeScannerOptions
5454import com.google.mlkit.vision.barcode.BarcodeScanning
5555import com.google.mlkit.vision.barcode.common.Barcode
@@ -58,21 +58,24 @@ import kotlinx.coroutines.Dispatchers
5858import kotlinx.coroutines.launch
5959import kotlinx.coroutines.withContext
6060import to.bitkit.R
61- import to.bitkit.ext.getClipboardText
6261import to.bitkit.ext.startActivityAppSettings
6362import to.bitkit.models.Toast
6463import to.bitkit.ui.appViewModel
64+ import to.bitkit.ui.components.BodyM
6565import to.bitkit.ui.components.BottomSheetPreview
66+ import to.bitkit.ui.components.Display
67+ import to.bitkit.ui.components.PrimaryButton
6668import to.bitkit.ui.components.RectangleButton
69+ import to.bitkit.ui.components.VerticalSpacer
6770import to.bitkit.ui.scaffold.SheetTopBar
6871import to.bitkit.ui.screens.scanner.CameraPermissionView
69- import to.bitkit.ui.screens.scanner.DeniedContent
7072import to.bitkit.ui.screens.scanner.QrCodeAnalyzer
7173import to.bitkit.ui.shared.modifiers.sheetHeight
7274import to.bitkit.ui.shared.util.gradientBackground
7375import to.bitkit.ui.theme.AppThemeSurface
7476import to.bitkit.ui.theme.Colors
7577import to.bitkit.ui.theme.Shapes
78+ import to.bitkit.ui.utils.withAccent
7679import to.bitkit.utils.Logger
7780import to.bitkit.viewmodels.SendEvent
7881import java.util.concurrent.Executors
@@ -219,33 +222,21 @@ fun SendRecipientScreen(
219222 .fillMaxSize()
220223 .padding(horizontal = 16 .dp)
221224 ) {
222- Box (modifier = Modifier
223- .fillMaxWidth()
224- .weight(1f )
225+ Box (
226+ modifier = Modifier
227+ .fillMaxWidth()
228+ .weight(1f )
225229 ) {
226230 CameraPermissionView (
227231 permissionState = cameraPermissionState,
228232 deniedContent = {
229- DeniedContent (
230- shouldShowRationale = cameraPermissionState.status.shouldShowRationale,
231- inSheet = true ,
232- onClickOpenSettings = {
233+ PermissionDenied (
234+ onClickRetry = {
233235 context.startActivityAppSettings()
234236 },
235- onClickRetry = cameraPermissionState::launchPermissionRequest,
236- onClickPaste = {
237- val clipboard = context.getClipboardText()?.trim()
238- if (clipboard.isNullOrBlank()) {
239- app?.toast(
240- type = Toast .ToastType .WARNING ,
241- title = context.getString(R .string.wallet__send_clipboard_empty_title),
242- description = context.getString(R .string.wallet__send_clipboard_empty_text),
243- )
244- } else {
245- onEvent(SendEvent .AddressContinue (clipboard))
246- }
247- },
248- onBack = { /* No back needed in sheet */ },
237+ modifier = Modifier
238+ .fillMaxWidth()
239+ .fillMaxHeight()
249240 )
250241 },
251242 grantedContent = {
@@ -403,6 +394,41 @@ private fun CameraPreviewWithControls(
403394 }
404395}
405396
397+
398+ @Composable
399+ private fun PermissionDenied (
400+ onClickRetry : () -> Unit ,
401+ modifier : Modifier = Modifier ,
402+ ) {
403+ Column (
404+ modifier = modifier
405+ .clip(Shapes .medium)
406+ .background(Colors .Black )
407+ .padding(32 .dp)
408+ ) {
409+ Display (" SCAN\n <accent>QR CODE</accent>" .withAccent(accentColor = Colors .Brand ), color = Colors .White )
410+
411+ VerticalSpacer (8 .dp)
412+
413+ BodyM (
414+ " Allow camera access to scan bitcoin invoices and pay more quickly." ,
415+ color = Colors .White64 ,
416+ modifier = Modifier .fillMaxWidth()
417+ )
418+
419+ VerticalSpacer (32 .dp)
420+
421+ PrimaryButton (
422+ text = " Enable camera" ,
423+ icon = {
424+ Icon (painter = painterResource(R .drawable.ic_camera), contentDescription = null )
425+ },
426+ onClick = onClickRetry,
427+ )
428+ }
429+ }
430+
431+
406432private fun processImageFromGallery (
407433 context : Context ,
408434 uri : Uri ,
0 commit comments