@@ -67,6 +67,8 @@ import to.bitkit.ui.shared.util.gradientBackground
6767import to.bitkit.ui.theme.Colors
6868import to.bitkit.utils.Logger
6969import java.util.concurrent.Executors
70+ import android.content.ClipboardManager
71+ import android.content.ClipData
7072
7173@Composable
7274fun QrScanningScreen (
@@ -177,6 +179,22 @@ fun QrScanningScreen(
177179 } else {
178180 galleryLauncher.launch(" image/*" )
179181 }
182+ },
183+ onPasteFromClipboard = {
184+ val clipboard = context.getSystemService(Context .CLIPBOARD_SERVICE ) as ClipboardManager
185+ if (clipboard.hasPrimaryClip()) {
186+ val clipData: ClipData = clipboard.primaryClip ? : return @Content
187+ if (clipData.itemCount > 0 ) {
188+ val text = clipData.getItemAt(0 ).text.toString()
189+ if (text.isNotBlank()) {
190+ onScanSuccess(text)
191+ } else {
192+ app.toast(Exception (" Clipboard is empty or doesn't contain text" ))
193+ }
194+ }
195+ } else {
196+ app.toast(Exception (" Clipboard is empty" ))
197+ }
180198 }
181199 )
182200 }
@@ -189,6 +207,7 @@ private fun Content(
189207 previewView : PreviewView ,
190208 onClickFlashlight : () -> Unit ,
191209 onClickGallery : () -> Unit ,
210+ onPasteFromClipboard : () -> Unit ,
192211 modifier : Modifier = Modifier ,
193212) {
194213 Column (
@@ -255,7 +274,7 @@ private fun Content(
255274 )
256275 },
257276 text = stringResource(R .string.other__qr_paste),
258- onClick = {} // TODO IMPLEMENT
277+ onClick = onPasteFromClipboard
259278 )
260279 Spacer (modifier = Modifier .height(16 .dp))
261280 }
0 commit comments