From 03dc8d6e7577e56ebc71692c20dc668992bfb17f Mon Sep 17 00:00:00 2001 From: likho Date: Wed, 7 Feb 2024 17:41:38 +0200 Subject: [PATCH 1/4] Update validateAddress to use the coin's validate address --- lib/utilities/address_utils.dart | 70 +++++++++++++++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/lib/utilities/address_utils.dart b/lib/utilities/address_utils.dart index 4ed59213b..90a5ca487 100644 --- a/lib/utilities/address_utils.dart +++ b/lib/utilities/address_utils.dart @@ -14,6 +14,24 @@ import 'package:bitcoindart/bitcoindart.dart'; import 'package:crypto/crypto.dart'; import 'package:stackwallet/utilities/enums/coin_enum.dart'; import 'package:stackwallet/utilities/logger.dart'; +import 'package:stackwallet/wallets/crypto_currency/coins/bitcoin.dart'; +import 'package:stackwallet/wallets/crypto_currency/crypto_currency.dart'; + +import 'package:stackwallet/wallets/crypto_currency/coins/banano.dart'; +import 'package:stackwallet/wallets/crypto_currency/coins/bitcoincash.dart'; +import 'package:stackwallet/wallets/crypto_currency/coins/dogecoin.dart'; +import 'package:stackwallet/wallets/crypto_currency/coins/ecash.dart'; +import 'package:stackwallet/wallets/crypto_currency/coins/epiccash.dart'; +import 'package:stackwallet/wallets/crypto_currency/coins/ethereum.dart'; +import 'package:stackwallet/wallets/crypto_currency/coins/firo.dart'; +import 'package:stackwallet/wallets/crypto_currency/coins/litecoin.dart'; +import 'package:stackwallet/wallets/crypto_currency/coins/monero.dart'; +import 'package:stackwallet/wallets/crypto_currency/coins/namecoin.dart'; +import 'package:stackwallet/wallets/crypto_currency/coins/nano.dart'; +import 'package:stackwallet/wallets/crypto_currency/coins/particl.dart'; +import 'package:stackwallet/wallets/crypto_currency/coins/stellar.dart'; +import 'package:stackwallet/wallets/crypto_currency/coins/tezos.dart'; +import 'package:stackwallet/wallets/crypto_currency/coins/wownero.dart'; class AddressUtils { static String condenseAddress(String address) { @@ -49,7 +67,57 @@ class AddressUtils { } static bool validateAddress(String address, Coin coin) { - throw Exception("moved"); + //This calls the validate address for each crypto coin, validateAddress is + //only used in 2 places, so I just replaced the old functionality here + switch (coin) { + case Coin.bitcoin: + return Bitcoin(CryptoCurrencyNetwork.main).validateAddress(address); + case Coin.litecoin: + return Litecoin(CryptoCurrencyNetwork.main).validateAddress(address); + case Coin.bitcoincash: + return Bitcoincash(CryptoCurrencyNetwork.main).validateAddress(address); + case Coin.dogecoin: + return Dogecoin(CryptoCurrencyNetwork.main).validateAddress(address); + case Coin.epicCash: + return Epiccash(CryptoCurrencyNetwork.main).validateAddress(address); + case Coin.ethereum: + return Ethereum(CryptoCurrencyNetwork.main).validateAddress(address); + case Coin.firo: + return Firo(CryptoCurrencyNetwork.main).validateAddress(address); + case Coin.eCash: + return Ecash(CryptoCurrencyNetwork.main).validateAddress(address); + case Coin.monero: + return Monero(CryptoCurrencyNetwork.main).validateAddress(address); + case Coin.wownero: + return Wownero(CryptoCurrencyNetwork.main).validateAddress(address); + case Coin.namecoin: + return Namecoin(CryptoCurrencyNetwork.main).validateAddress(address); + case Coin.particl: + return Particl(CryptoCurrencyNetwork.main).validateAddress(address); + case Coin.stellar: + return Stellar(CryptoCurrencyNetwork.main).validateAddress(address); + case Coin.nano: + return Nano(CryptoCurrencyNetwork.main).validateAddress(address); + case Coin.banano: + return Banano(CryptoCurrencyNetwork.main).validateAddress(address); + case Coin.tezos: + return Tezos(CryptoCurrencyNetwork.main).validateAddress(address); + case Coin.bitcoinTestNet: + return Bitcoin(CryptoCurrencyNetwork.test).validateAddress(address); + case Coin.litecoinTestNet: + return Litecoin(CryptoCurrencyNetwork.test).validateAddress(address); + case Coin.bitcoincashTestnet: + return Bitcoincash(CryptoCurrencyNetwork.test).validateAddress(address); + case Coin.firoTestNet: + return Firo(CryptoCurrencyNetwork.test).validateAddress(address); + case Coin.dogecoinTestNet: + return Dogecoin(CryptoCurrencyNetwork.test).validateAddress(address); + case Coin.stellarTestnet: + return Stellar(CryptoCurrencyNetwork.test).validateAddress(address); + case null: + throw Exception("Invalid coin"); + } + // throw Exception("moved"); // switch (coin) { // case Coin.bitcoin: // return Address.validateAddress(address, bitcoin); From 3b66997b88768084592bf3f03009af0b8c26599c Mon Sep 17 00:00:00 2001 From: likho Date: Wed, 7 Feb 2024 17:50:38 +0200 Subject: [PATCH 2/4] Update validateAddress to use the coin's validate address --- lib/utilities/address_utils.dart | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/utilities/address_utils.dart b/lib/utilities/address_utils.dart index 90a5ca487..0e766d28e 100644 --- a/lib/utilities/address_utils.dart +++ b/lib/utilities/address_utils.dart @@ -114,8 +114,6 @@ class AddressUtils { return Dogecoin(CryptoCurrencyNetwork.test).validateAddress(address); case Coin.stellarTestnet: return Stellar(CryptoCurrencyNetwork.test).validateAddress(address); - case null: - throw Exception("Invalid coin"); } // throw Exception("moved"); // switch (coin) { From 0f91ccd7cec72ec678e637abd280fc89363d0a9c Mon Sep 17 00:00:00 2001 From: likho Date: Wed, 7 Feb 2024 18:35:31 +0200 Subject: [PATCH 3/4] Fix Null Pointer error for address entry --- .../address_book_view/subwidgets/desktop_address_card.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pages_desktop_specific/address_book_view/subwidgets/desktop_address_card.dart b/lib/pages_desktop_specific/address_book_view/subwidgets/desktop_address_card.dart index fc626f290..13cdc24e4 100644 --- a/lib/pages_desktop_specific/address_book_view/subwidgets/desktop_address_card.dart +++ b/lib/pages_desktop_specific/address_book_view/subwidgets/desktop_address_card.dart @@ -61,7 +61,7 @@ class DesktopAddressCard extends ConsumerWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ SelectableText( - "${contactId == "default" ? entry.other! : entry.label} (${entry.coin.ticker})", + "${contactId == "default" ? entry.other : entry.label} (${entry.coin.ticker})", style: STextStyles.desktopTextExtraExtraSmall(context).copyWith( color: Theme.of(context).extension()!.textDark, ), From 365b117215734d533cc414822b213efeb06b5bca Mon Sep 17 00:00:00 2001 From: likho Date: Thu, 8 Feb 2024 14:35:51 +0200 Subject: [PATCH 4/4] Fix error with deleting an address book entry --- .../subviews/edit_contact_address_view.dart | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/pages/address_book_views/subviews/edit_contact_address_view.dart b/lib/pages/address_book_views/subviews/edit_contact_address_view.dart index 2448b1e33..a061f1ed5 100644 --- a/lib/pages/address_book_views/subviews/edit_contact_address_view.dart +++ b/lib/pages/address_book_views/subviews/edit_contact_address_view.dart @@ -8,6 +8,8 @@ * */ +import 'dart:convert'; + import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_svg/svg.dart'; @@ -234,9 +236,13 @@ class _EditContactAddressViewState e.coin == addressEntry.coin, ); - _addresses.remove(entry); + //Deleting an entry directly from _addresses gives error + // "Cannot remove from a fixed-length list", so we remove the + // entry from a copy + var tempAddresses = List.from(_addresses); + tempAddresses.remove(entry); ContactEntry editedContact = - contact.copyWith(addresses: _addresses); + contact.copyWith(addresses: tempAddresses); if (await ref .read(addressBookServiceProvider) .editContact(editedContact)) {