Skip to content

Commit 1cddb14

Browse files
committed
feat: detect bitcoin/monero uri's
fix: use uri instead of manual parsing reformat: remove braces and use efficient variables refactor: add forgotten vars
1 parent 7439dbf commit 1cddb14

File tree

1 file changed

+43
-8
lines changed

1 file changed

+43
-8
lines changed

lib/pages/send_view/send_view.dart

Lines changed: 43 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1350,11 +1350,31 @@ class _SendViewState extends ConsumerState<SendView> {
13501350
selectAll: false,
13511351
),
13521352
onChanged: (newValue) {
1353-
_address = newValue.trim();
1353+
final trimmed = newValue.trim();
1354+
1355+
if ((trimmed.length - (_address?.length ?? 0)).abs() > 1) {
1356+
if (coin is Monero && Uri.parse(trimmed).scheme == "monero") {
1357+
final parsedUri = Uri.parse(trimmed);
1358+
final addr = parsedUri.path;
1359+
sendToController.text = addr;
1360+
_address = addr;
1361+
cryptoAmountController.text = parsedUri.queryParameters["tx_amount"] ?? "";
1362+
} else if (coin is Bitcoin && Uri.parse(trimmed).scheme == "bitcoin") {
1363+
final parsedUri = Uri.parse(trimmed);
1364+
final addr = parsedUri.path;
1365+
sendToController.text = addr;
1366+
_address = addr;
1367+
cryptoAmountController.text = parsedUri.queryParameters["amount"] ?? "";
1368+
}
1369+
} else {
1370+
sendToController.text = trimmed;
1371+
_address = trimmed;
1372+
}
1373+
13541374
_setValidAddressProviders(_address);
13551375

13561376
setState(() {
1357-
_addressToggleFlag = newValue.isNotEmpty;
1377+
_addressToggleFlag = trimmed.isNotEmpty;
13581378
});
13591379
},
13601380
focusNode: _addressFocusNode,
@@ -1433,13 +1453,28 @@ class _SendViewState extends ConsumerState<SendView> {
14331453
content,
14341454
);
14351455
}
1436-
sendToController.text =
1437-
content.trim();
1438-
_address = content.trim();
14391456

1440-
_setValidAddressProviders(
1441-
_address,
1442-
);
1457+
final trimmed = content.trim();
1458+
1459+
if (coin is Monero && Uri.parse(trimmed).scheme == "monero") {
1460+
final parsedUri = Uri.parse(trimmed);
1461+
final addr = parsedUri.path;
1462+
sendToController.text = addr;
1463+
_address = addr;
1464+
cryptoAmountController.text = parsedUri.queryParameters["tx_amount"] ?? "";
1465+
} else if (coin is Bitcoin && Uri.parse(trimmed).scheme == "bitcoin") {
1466+
final parsedUri = Uri.parse(trimmed);
1467+
final addr = parsedUri.path;
1468+
sendToController.text = addr;
1469+
_address = addr;
1470+
cryptoAmountController.text = parsedUri.queryParameters["amount"] ?? "";
1471+
} else {
1472+
sendToController.text = trimmed;
1473+
_address = trimmed;
1474+
}
1475+
1476+
_setValidAddressProviders(_address,);
1477+
14431478
setState(() {
14441479
_addressToggleFlag =
14451480
sendToController

0 commit comments

Comments
 (0)