feat: detect bitcoin/monero uri's

fix: use uri instead of manual parsing

reformat: remove braces and use efficient variables

refactor: add forgotten vars
This commit is contained in:
dethe 2025-03-17 18:34:08 +03:00
parent 7439dbf9fc
commit 1cddb14bf1

View file

@ -1350,11 +1350,31 @@ class _SendViewState extends ConsumerState<SendView> {
selectAll: false,
),
onChanged: (newValue) {
_address = newValue.trim();
final trimmed = newValue.trim();
if ((trimmed.length - (_address?.length ?? 0)).abs() > 1) {
if (coin is Monero && Uri.parse(trimmed).scheme == "monero") {
final parsedUri = Uri.parse(trimmed);
final addr = parsedUri.path;
sendToController.text = addr;
_address = addr;
cryptoAmountController.text = parsedUri.queryParameters["tx_amount"] ?? "";
} else if (coin is Bitcoin && Uri.parse(trimmed).scheme == "bitcoin") {
final parsedUri = Uri.parse(trimmed);
final addr = parsedUri.path;
sendToController.text = addr;
_address = addr;
cryptoAmountController.text = parsedUri.queryParameters["amount"] ?? "";
}
} else {
sendToController.text = trimmed;
_address = trimmed;
}
_setValidAddressProviders(_address);
setState(() {
_addressToggleFlag = newValue.isNotEmpty;
_addressToggleFlag = trimmed.isNotEmpty;
});
},
focusNode: _addressFocusNode,
@ -1433,13 +1453,28 @@ class _SendViewState extends ConsumerState<SendView> {
content,
);
}
sendToController.text =
content.trim();
_address = content.trim();
_setValidAddressProviders(
_address,
);
final trimmed = content.trim();
if (coin is Monero && Uri.parse(trimmed).scheme == "monero") {
final parsedUri = Uri.parse(trimmed);
final addr = parsedUri.path;
sendToController.text = addr;
_address = addr;
cryptoAmountController.text = parsedUri.queryParameters["tx_amount"] ?? "";
} else if (coin is Bitcoin && Uri.parse(trimmed).scheme == "bitcoin") {
final parsedUri = Uri.parse(trimmed);
final addr = parsedUri.path;
sendToController.text = addr;
_address = addr;
cryptoAmountController.text = parsedUri.queryParameters["amount"] ?? "";
} else {
sendToController.text = trimmed;
_address = trimmed;
}
_setValidAddressProviders(_address,);
setState(() {
_addressToggleFlag =
sendToController