Merge branch 'staging' into clear_send_form_validity
What changed, and why it matters
This commit adds a QR code scanner button to two desktop cryptocurrency send forms. It is a straightforward user-interface feature addition with no apparent security relevance.
No security action required. Treat as a normal UI feature merge.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The merge commit imports a QR code icon widget and conditionally displays a scan button when the recipient address text field is empty. The button triggers an existing scanQr() method. No logic changes to validation, cryptography, networking, or data handling are present in the diff.
Changed components
lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/desktop_sol_token_send.dartlib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/desktop_token_send.dartInspect captured patch +16 / −0
### lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/desktop_sol_token_send.dart
@@ -46,6 +46,7 @@ import '../../../../widgets/desktop/qr_code_scanner_dialog.dart';
import '../../../../widgets/desktop/secondary_button.dart';
import '../../../../widgets/icon_widgets/addressbook_icon.dart';
import '../../../../widgets/icon_widgets/clipboard_icon.dart';
+import '../../../../widgets/icon_widgets/qrcode_icon.dart';
import '../../../../widgets/icon_widgets/x_icon.dart';
import '../../../../widgets/stack_text_field.dart';
import '../../../../widgets/textfield_icon_button.dart';
@@ -1044,6 +1045,13 @@ class _DesktopSolTokenSendState extends ConsumerState<DesktopSolTokenSend> {
},
child: const AddressBookIcon(),
),
+ if (sendToController.text.isEmpty)
+ TextFieldIconButton(
+ semanticsLabel: "Scan QR Button. Opens Camera For Scanning QR Code.",
+ key: const Key("sendViewScanQrButtonKey"),
+ onTap: scanQr,
+ child: const QrCodeIcon(),
+ ),
],
),
),
### lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/desktop_token_send.dart
@@ -51,6 +51,7 @@ import '../../../../widgets/desktop/secondary_button.dart';
import '../../../../widgets/eth_fee_form.dart';
import '../../../../widgets/icon_widgets/addressbook_icon.dart';
import '../../../../widgets/icon_widgets/clipboard_icon.dart';
+import '../../../../widgets/icon_widgets/qrcode_icon.dart';
import '../../../../widgets/icon_widgets/x_icon.dart';
import '../../../../widgets/stack_text_field.dart';
import '../../../../widgets/textfield_icon_button.dart';
@@ -1042,6 +1043,13 @@ class _DesktopTokenSendState extends ConsumerState<DesktopTokenSend> {
},
child: const AddressBookIcon(),
),
+ if (sendToController.text.isEmpty)
+ TextFieldIconButton(
+ semanticsLabel: "Scan QR Button. Opens Camera For Scanning QR Code.",
+ key: const Key("sendViewScanQrButtonKey"),
+ onTap: scanQr,
+ child: const QrCodeIcon(),
+ ),
],
),
),Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.