@@ -115,7 +115,7 @@ fun SendRecipientScreen(
115115 }
116116
117117 // QR code analyzer with auto-proceed callback
118- val analyzer = remember {
118+ val analyzer = remember(onEvent) {
119119 QrCodeAnalyzer { result ->
120120 if (result.isSuccess) {
121121 val qrCode = result.getOrThrow()
@@ -185,20 +185,29 @@ fun SendRecipientScreen(
185185 }
186186
187187 // Gallery picker launchers
188+ val handleGalleryScanSuccess = remember(onEvent) {
189+ { qrCode: String ->
190+ Logger .debug(" QR from gallery: $qrCode " )
191+ onEvent(SendEvent .AddressContinue (qrCode))
192+ }
193+ }
194+
195+ val handleGalleryError = remember(app) {
196+ { e: Exception ->
197+ app?.toast(e)
198+ Unit
199+ }
200+ }
201+
188202 val galleryLauncher = rememberLauncherForActivityResult(
189203 contract = ActivityResultContracts .GetContent (),
190204 onResult = { uri ->
191205 uri?.let {
192206 processImageFromGallery(
193207 context = context,
194208 uri = it,
195- onScanSuccess = { qrCode ->
196- Logger .debug(" QR from gallery: $qrCode " )
197- onEvent(SendEvent .AddressContinue (qrCode))
198- },
199- onError = { e ->
200- app?.toast(e)
201- }
209+ onScanSuccess = handleGalleryScanSuccess,
210+ onError = handleGalleryError
202211 )
203212 }
204213 }
@@ -211,13 +220,8 @@ fun SendRecipientScreen(
211220 processImageFromGallery(
212221 context = context,
213222 uri = it,
214- onScanSuccess = { qrCode ->
215- Logger .debug(" QR from photo picker: $qrCode " )
216- onEvent(SendEvent .AddressContinue (qrCode))
217- },
218- onError = { e ->
219- app?.toast(e)
220- }
223+ onScanSuccess = handleGalleryScanSuccess,
224+ onError = handleGalleryError
221225 )
222226 }
223227 }
0 commit comments