v5.5.0 Release candidate (#2574)
What changed, and why it matters
This is a routine version-bump release candidate (v5.5.0) for the Cake Wallet/Monero.com apps. It mainly adds support for new hardware wallets (Trezor, BitBox), a Base coin wallet, a new theme, many new token/stock icons, and fixes missing icons. There is no clear security vulnerability in the visible changes. The only notable functional change is that the app now preserves a user's existing token enable/disable preference when updating built-in token lists, instead of resetting it.
No immediate security action required. Treat as a normal release-candidate review; verify the new token contract addresses and icons match official sources before release, and ensure the pinned bitbox_flutter commit is from a trusted repository.
Security signals we found
No explicit security fix or CVE referenced in commit message or diff
Token-list update logic now preserves user-enabled state, reducing risk of unwanted tokens being silently enabled
BitBox hardware wallet support disables Litecoin, which is a compatibility/reliability change, not a security fix
New dependency pin for bitbox_flutter build script (5a6e6dd...) improves reproducibility
Evidence from the diff
The commit is a large release-candidate merge for v5.5.0. Code changes are dominated by asset additions (stock token icons), version bumps across platforms, and token-list plumbing. Functional code changes include: (1) removing the isMigration flag from addInitialTokens() across EVM and Solana/Tron wallets and preserving the existing enabled state when a default token already exists; (2) changing Erc20Token.copyWith, SPLToken.copyWith, and TronToken.copyWith to use named optional parameters and preserve enabled/tag/iconPath when not supplied; (3) adding a usde CryptoCurrency and many xStock token definitions; (4) disabling Litecoin for BitBox; (5) pinning the bitbox_flutter dependency to a specific commit. No cryptographic, authorization, or input-validation flaws are visible in the diff.
Changed components
cw_base/lib/base_wallet.dartcw_base/lib/base_wallet_service.dartcw_ethereum/lib/ethereum_wallet.dartcw_ethereum/lib/ethereum_wallet_service.dartcw_polygon/lib/polygon_wallet.dartcw_polygon/lib/polygon_wallet_service.dartcw_solana/lib/solana_wallet.dartcw_solana/lib/solana_wallet_service.dartcw_tron/lib/tron_wallet.dartcw_core/lib/erc20_token.dartcw_core/lib/spl_token.dartcw_core/lib/tron_token.dartcw_core/lib/hardware/device_connection_type.dartscripts/build_bitbox_flutter.shInspect captured patch +1234 / −549
diff --git a/assets/images/crypto/ethena-usde-logo.png b/assets/images/crypto/ethena-usde-logo.png
new file mode 100644
index 0000000..cbbd69e
Binary files /dev/null and b/assets/images/crypto/ethena-usde-logo.png differ
diff --git a/assets/images/stocks/abbv.webp b/assets/images/stocks/abbv.webp
new file mode 100644
index 0000000..ae2cb4a
Binary files /dev/null and b/assets/images/stocks/abbv.webp differ
diff --git a/assets/images/stocks/abtx.webp b/assets/images/stocks/abtx.webp
new file mode 100644
index 0000000..42469b5
Binary files /dev/null and b/assets/images/stocks/abtx.webp differ
diff --git a/assets/images/stocks/acnx.webp b/assets/images/stocks/acnx.webp
new file mode 100644
index 0000000..b960e92
Binary files /dev/null and b/assets/images/stocks/acnx.webp differ
diff --git a/assets/images/stocks/ambrx.webp b/assets/images/stocks/ambrx.webp
new file mode 100644
index 0000000..214385f
Binary files /dev/null and b/assets/images/stocks/ambrx.webp differ
diff --git a/assets/images/stocks/amznx.webp b/assets/images/stocks/amznx.webp
new file mode 100644
index 0000000..a3f5b97
Binary files /dev/null and b/assets/images/stocks/amznx.webp differ
diff --git a/assets/images/stocks/apple.webp b/assets/images/stocks/apple.webp
new file mode 100644
index 0000000..c73754b
Binary files /dev/null and b/assets/images/stocks/apple.webp differ
diff --git a/assets/images/stocks/appx.webp b/assets/images/stocks/appx.webp
new file mode 100644
index 0000000..7842d23
Binary files /dev/null and b/assets/images/stocks/appx.webp differ
diff --git a/assets/images/stocks/avgox.webp b/assets/images/stocks/avgox.webp
new file mode 100644
index 0000000..2e7cc6c
Binary files /dev/null and b/assets/images/stocks/avgox.webp differ
diff --git a/assets/images/stocks/aznx.webp b/assets/images/stocks/aznx.webp
new file mode 100644
index 0000000..46fefb3
Binary files /dev/null and b/assets/images/stocks/aznx.webp differ
diff --git a/assets/images/stocks/bacx.webp b/assets/images/stocks/bacx.webp
new file mode 100644
index 0000000..ad5c2f3
Binary files /dev/null and b/assets/images/stocks/bacx.webp differ
diff --git a/assets/images/stocks/brkbx.webp b/assets/images/stocks/brkbx.webp
new file mode 100644
index 0000000..88f4d24
Binary files /dev/null and b/assets/images/stocks/brkbx.webp differ
diff --git a/assets/images/stocks/cmcsax.webp b/assets/images/stocks/cmcsax.webp
new file mode 100644
index 0000000..096da52
Binary files /dev/null and b/assets/images/stocks/cmcsax.webp differ
diff --git a/assets/images/stocks/coinx.webp b/assets/images/stocks/coinx.webp
new file mode 100644
index 0000000..9760ecf
Binary files /dev/null and b/assets/images/stocks/coinx.webp differ
diff --git a/assets/images/stocks/crclx.webp b/assets/images/stocks/crclx.webp
new file mode 100644
index 0000000..4f8614b
Binary files /dev/null and b/assets/images/stocks/crclx.webp differ
diff --git a/assets/images/stocks/crmx.webp b/assets/images/stocks/crmx.webp
new file mode 100644
index 0000000..8af53af
Binary files /dev/null and b/assets/images/stocks/crmx.webp differ
diff --git a/assets/images/stocks/crwdx.webp b/assets/images/stocks/crwdx.webp
new file mode 100644
index 0000000..7f4fad9
Binary files /dev/null and b/assets/images/stocks/crwdx.webp differ
diff --git a/assets/images/stocks/cscox.webp b/assets/images/stocks/cscox.webp
new file mode 100644
index 0000000..b1832ca
Binary files /dev/null and b/assets/images/stocks/cscox.webp differ
diff --git a/assets/images/stocks/cvxx.webp b/assets/images/stocks/cvxx.webp
new file mode 100644
index 0000000..acad91d
Binary files /dev/null and b/assets/images/stocks/cvxx.webp differ
diff --git a/assets/images/stocks/dfdvx.webp b/assets/images/stocks/dfdvx.webp
new file mode 100644
index 0000000..5cb3081
Binary files /dev/null and b/assets/images/stocks/dfdvx.webp differ
diff --git a/assets/images/stocks/dhrx.webp b/assets/images/stocks/dhrx.webp
new file mode 100644
index 0000000..7e93e63
Binary files /dev/null and b/assets/images/stocks/dhrx.webp differ
diff --git a/assets/images/stocks/gldx.webp b/assets/images/stocks/gldx.webp
new file mode 100644
index 0000000..c8e086c
Binary files /dev/null and b/assets/images/stocks/gldx.webp differ
diff --git a/assets/images/stocks/gmex.webp b/assets/images/stocks/gmex.webp
new file mode 100644
index 0000000..74a68fc
Binary files /dev/null and b/assets/images/stocks/gmex.webp differ
diff --git a/assets/images/stocks/googlx.webp b/assets/images/stocks/googlx.webp
new file mode 100644
index 0000000..0e09276
Binary files /dev/null and b/assets/images/stocks/googlx.webp differ
diff --git a/assets/images/stocks/gsx.webp b/assets/images/stocks/gsx.webp
new file mode 100644
index 0000000..0e996b2
Binary files /dev/null and b/assets/images/stocks/gsx.webp differ
diff --git a/assets/images/stocks/hdx.webp b/assets/images/stocks/hdx.webp
new file mode 100644
index 0000000..be992e9
Binary files /dev/null and b/assets/images/stocks/hdx.webp differ
diff --git a/assets/images/stocks/honx.webp b/assets/images/stocks/honx.webp
new file mode 100644
index 0000000..fc4fa34
Binary files /dev/null and b/assets/images/stocks/honx.webp differ
diff --git a/assets/images/stocks/hoodx.webp b/assets/images/stocks/hoodx.webp
new file mode 100644
index 0000000..66dc813
Binary files /dev/null and b/assets/images/stocks/hoodx.webp differ
diff --git a/assets/images/stocks/ibmx.webp b/assets/images/stocks/ibmx.webp
new file mode 100644
index 0000000..a49e007
Binary files /dev/null and b/assets/images/stocks/ibmx.webp differ
diff --git a/assets/images/stocks/imbx.webp b/assets/images/stocks/imbx.webp
new file mode 100644
index 0000000..a58c71d
Binary files /dev/null and b/assets/images/stocks/imbx.webp differ
diff --git a/assets/images/stocks/intcx.webp b/assets/images/stocks/intcx.webp
new file mode 100644
index 0000000..24b3be9
Binary files /dev/null and b/assets/images/stocks/intcx.webp differ
diff --git a/assets/images/stocks/jnjx.webp b/assets/images/stocks/jnjx.webp
new file mode 100644
index 0000000..32afecb
Binary files /dev/null and b/assets/images/stocks/jnjx.webp differ
diff --git a/assets/images/stocks/jpmx.webp b/assets/images/stocks/jpmx.webp
new file mode 100644
index 0000000..79bb301
Binary files /dev/null and b/assets/images/stocks/jpmx.webp differ
diff --git a/assets/images/stocks/kox.webp b/assets/images/stocks/kox.webp
new file mode 100644
index 0000000..3759909
Binary files /dev/null and b/assets/images/stocks/kox.webp differ
diff --git a/assets/images/stocks/linx.webp b/assets/images/stocks/linx.webp
new file mode 100644
index 0000000..567fef3
Binary files /dev/null and b/assets/images/stocks/linx.webp differ
diff --git a/assets/images/stocks/llyx.webp b/assets/images/stocks/llyx.webp
new file mode 100644
index 0000000..8d190ee
Binary files /dev/null and b/assets/images/stocks/llyx.webp differ
diff --git a/assets/images/stocks/mastercard.webp b/assets/images/stocks/mastercard.webp
new file mode 100644
index 0000000..94e62c1
Binary files /dev/null and b/assets/images/stocks/mastercard.webp differ
diff --git a/assets/images/stocks/mcdonalds.webp b/assets/images/stocks/mcdonalds.webp
new file mode 100644
index 0000000..d3dae1f
Binary files /dev/null and b/assets/images/stocks/mcdonalds.webp differ
diff --git a/assets/images/stocks/mdtx.webp b/assets/images/stocks/mdtx.webp
new file mode 100644
index 0000000..370914a
Binary files /dev/null and b/assets/images/stocks/mdtx.webp differ
diff --git a/assets/images/stocks/metax.webp b/assets/images/stocks/metax.webp
new file mode 100644
index 0000000..d04b581
Binary files /dev/null and b/assets/images/stocks/metax.webp differ
diff --git a/assets/images/stocks/mrkx.webp b/assets/images/stocks/mrkx.webp
new file mode 100644
index 0000000..7f12631
Binary files /dev/null and b/assets/images/stocks/mrkx.webp differ
diff --git a/assets/images/stocks/mrvlx.webp b/assets/images/stocks/mrvlx.webp
new file mode 100644
index 0000000..5346ee6
Binary files /dev/null and b/assets/images/stocks/mrvlx.webp differ
diff --git a/assets/images/stocks/msftx.webp b/assets/images/stocks/msftx.webp
new file mode 100644
index 0000000..62592f3
Binary files /dev/null and b/assets/images/stocks/msftx.webp differ
diff --git a/assets/images/stocks/mstrx.webp b/assets/images/stocks/mstrx.webp
new file mode 100644
index 0000000..7eb32d6
Binary files /dev/null and b/assets/images/stocks/mstrx.webp differ
diff --git a/assets/images/stocks/nflxx.webp b/assets/images/stocks/nflxx.webp
new file mode 100644
index 0000000..ca232a1
Binary files /dev/null and b/assets/images/stocks/nflxx.webp differ
diff --git a/assets/images/stocks/nvdax.webp b/assets/images/stocks/nvdax.webp
new file mode 100644
index 0000000..a44099f
Binary files /dev/null and b/assets/images/stocks/nvdax.webp differ
diff --git a/assets/images/stocks/nvox.webp b/assets/images/stocks/nvox.webp
new file mode 100644
index 0000000..431bd38
Binary files /dev/null and b/assets/images/stocks/nvox.webp differ
diff --git a/assets/images/stocks/openx.webp b/assets/images/stocks/openx.webp
new file mode 100644
index 0000000..dd4c7eb
Binary files /dev/null and b/assets/images/stocks/openx.webp differ
diff --git a/assets/images/stocks/orclx.webp b/assets/images/stocks/orclx.webp
new file mode 100644
index 0000000..112ddca
Binary files /dev/null and b/assets/images/stocks/orclx.webp differ
diff --git a/assets/images/stocks/pepx.webp b/assets/images/stocks/pepx.webp
new file mode 100644
index 0000000..858970c
Binary files /dev/null and b/assets/images/stocks/pepx.webp differ
diff --git a/assets/images/stocks/pfex.webp b/assets/images/stocks/pfex.webp
new file mode 100644
index 0000000..3751377
Binary files /dev/null and b/assets/images/stocks/pfex.webp differ
diff --git a/assets/images/stocks/pgx.webp b/assets/images/stocks/pgx.webp
new file mode 100644
index 0000000..6de536b
Binary files /dev/null and b/assets/images/stocks/pgx.webp differ
diff --git a/assets/images/stocks/pltrx.webp b/assets/images/stocks/pltrx.webp
new file mode 100644
index 0000000..82d7573
Binary files /dev/null and b/assets/images/stocks/pltrx.webp differ
diff --git a/assets/images/stocks/pmx.webp b/assets/images/stocks/pmx.webp
new file mode 100644
index 0000000..4a842c4
Binary files /dev/null and b/assets/images/stocks/pmx.webp differ
diff --git a/assets/images/stocks/qqqx.webp b/assets/images/stocks/qqqx.webp
new file mode 100644
index 0000000..140b7f8
Binary files /dev/null and b/assets/images/stocks/qqqx.webp differ
diff --git a/assets/images/stocks/spyx.webp b/assets/images/stocks/spyx.webp
new file mode 100644
index 0000000..fbb0250
Binary files /dev/null and b/assets/images/stocks/spyx.webp differ
diff --git a/assets/images/stocks/tbllx.webp b/assets/images/stocks/tbllx.webp
new file mode 100644
index 0000000..89e6eb8
Binary files /dev/null and b/assets/images/stocks/tbllx.webp differ
diff --git a/assets/images/stocks/tmox.webp b/assets/images/stocks/tmox.webp
new file mode 100644
index 0000000..6426600
Binary files /dev/null and b/assets/images/stocks/tmox.webp differ
diff --git a/assets/images/stocks/tonxx.webp b/assets/images/stocks/tonxx.webp
new file mode 100644
index 0000000..60bd856
Binary files /dev/null and b/assets/images/stocks/tonxx.webp differ
diff --git a/assets/images/stocks/tqqqx.webp b/assets/images/stocks/tqqqx.webp
new file mode 100644
index 0000000..48297ea
Binary files /dev/null and b/assets/images/stocks/tqqqx.webp differ
diff --git a/assets/images/stocks/tslax.webp b/assets/images/stocks/tslax.webp
new file mode 100644
index 0000000..8c21b0a
Binary files /dev/null and b/assets/images/stocks/tslax.webp differ
diff --git a/assets/images/stocks/uhnx.webp b/assets/images/stocks/uhnx.webp
new file mode 100644
index 0000000..cf3bf2c
Binary files /dev/null and b/assets/images/stocks/uhnx.webp differ
diff --git a/assets/images/stocks/unhx.webp b/assets/images/stocks/unhx.webp
new file mode 100644
index 0000000..6a4e269
Binary files /dev/null and b/assets/images/stocks/unhx.webp differ
diff --git a/assets/images/stocks/vtix.webp b/assets/images/stocks/vtix.webp
new file mode 100644
index 0000000..02d697e
Binary files /dev/null and b/assets/images/stocks/vtix.webp differ
diff --git a/assets/images/stocks/vx.webp b/assets/images/stocks/vx.webp
new file mode 100644
index 0000000..375a7c9
Binary files /dev/null and b/assets/images/stocks/vx.webp differ
diff --git a/assets/images/stocks/wmtx.webp b/assets/images/stocks/wmtx.webp
new file mode 100644
index 0000000..567a2c3
Binary files /dev/null and b/assets/images/stocks/wmtx.webp differ
diff --git a/assets/images/stocks/xomx.webp b/assets/images/stocks/xomx.webp
new file mode 100644
index 0000000..0c3999c
Binary files /dev/null and b/assets/images/stocks/xomx.webp differ
diff --git a/assets/text/Monerocom_Release_Notes.txt b/assets/text/Monerocom_Release_Notes.txt
index 22fdaf6..7770de5 100644
--- a/assets/text/Monerocom_Release_Notes.txt
+++ b/assets/text/Monerocom_Release_Notes.txt
@@ -1,3 +1,6 @@
-Connectivity improvements
-UI enhancements
+Add support for Trezor
+Add support for Bitbox
+Hardware wallets flow enhancements
+New Themes
+New designs
Bug fixes
\ No newline at end of file
diff --git a/assets/text/Release_Notes.txt b/assets/text/Release_Notes.txt
index 45f2cfb..61bc46c 100644
--- a/assets/text/Release_Notes.txt
+++ b/assets/text/Release_Notes.txt
@@ -1,4 +1,7 @@
-Payjoin enhancements
-Connectivity improvements
-UI enhancements
+Add Base coin wallet
+Add support for Trezor
+Add support for Bitbox
+Hardware wallets flow enhancements
+New Themes
+New designs
Bug fixes
\ No newline at end of file
diff --git a/cw_base/devtools_options.yaml b/cw_base/devtools_options.yaml
new file mode 100644
index 0000000..fa0b357
--- /dev/null
+++ b/cw_base/devtools_options.yaml
@@ -0,0 +1,3 @@
+description: This file stores settings for Dart & Flutter DevTools.
+documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
+extensions:
diff --git a/cw_base/lib/base_wallet.dart b/cw_base/lib/base_wallet.dart
index 6b26fda..accb336 100644
--- a/cw_base/lib/base_wallet.dart
+++ b/cw_base/lib/base_wallet.dart
@@ -32,24 +32,21 @@ class BaseWallet extends EVMChainWallet {
@override
Future<void> initErc20TokensBox() async {
- final boxName = "${walletInfo.name.replaceAll(" ", "_")}_ ${Erc20Token.baseBoxName}";
+ final boxName = "${walletInfo.name.replaceAll(" ", "_")}_${Erc20Token.baseBoxName}";
evmChainErc20TokensBox = await CakeHive.openBox<Erc20Token>(boxName);
}
@override
- void addInitialTokens([bool isMigration = false]) {
+ void addInitialTokens() {
final initialErc20Tokens = DefaultBaseErc20Tokens().initialBaseErc20Tokens;
for (final token in initialErc20Tokens) {
- if (evmChainErc20TokensBox.containsKey(token.contractAddress)) {
- final existingToken = evmChainErc20TokensBox.get(token.contractAddress);
- if (existingToken?.tag != token.tag) {
- evmChainErc20TokensBox.put(token.contractAddress, token);
- }
- } else {
- if (isMigration) token.enabled = false;
+ if (!evmChainErc20TokensBox.containsKey(token.contractAddress)) {
evmChainErc20TokensBox.put(token.contractAddress, token);
+ } else { // update existing token
+ final existingToken = evmChainErc20TokensBox.get(token.contractAddress);
+ evmChainErc20TokensBox.put(token.contractAddress, Erc20Token.copyWith(token, enabled: existingToken!.enabled));
}
}
}
diff --git a/cw_base/lib/base_wallet_service.dart b/cw_base/lib/base_wallet_service.dart
index b6ad9e4..f7ef5e9 100644
--- a/cw_base/lib/base_wallet_service.dart
+++ b/cw_base/lib/base_wallet_service.dart
@@ -56,7 +56,7 @@ class BaseWalletService extends EVMChainWalletService<BaseWallet> {
);
await wallet.init();
- wallet.addInitialTokens(true);
+ wallet.addInitialTokens();
await wallet.save();
saveBackup(name);
return wallet;
@@ -71,7 +71,7 @@ class BaseWalletService extends EVMChainWalletService<BaseWallet> {
);
await wallet.init();
- wallet.addInitialTokens(true);
+ wallet.addInitialTokens();
await wallet.save();
return wallet;
}
diff --git a/cw_base/lib/default_base_erc20_tokens.dart b/cw_base/lib/default_base_erc20_tokens.dart
index 3f89992..9677183 100644
--- a/cw_base/lib/default_base_erc20_tokens.dart
+++ b/cw_base/lib/default_base_erc20_tokens.dart
@@ -56,12 +56,16 @@ class DefaultBaseErc20Tokens {
List<Erc20Token> get initialBaseErc20Tokens => _defaultTokens.map((token) {
String? iconPath;
- try {
- iconPath = CryptoCurrency.all
- .firstWhere((element) => element.title.toUpperCase() == token.symbol.toUpperCase())
- .iconPath;
- } catch (_) {}
+ if (token.iconPath?.isEmpty ?? true) {
+ try {
+ iconPath = CryptoCurrency.all
+ .firstWhere((element) => element.title.toUpperCase() == token.symbol.toUpperCase())
+ .iconPath;
+ } catch (_) {}
+ } else {
+ iconPath = token.iconPath;
+ }
- return Erc20Token.copyWith(token, iconPath, 'BASE');
+ return Erc20Token.copyWith(token, icon: iconPath, tag: 'BASE');
}).toList();
}
diff --git a/cw_core/lib/crypto_currency.dart b/cw_core/lib/crypto_currency.dart
index 5440bdd..5593822 100644
--- a/cw_core/lib/crypto_currency.dart
+++ b/cw_core/lib/crypto_currency.dart
@@ -116,6 +116,7 @@ class CryptoCurrency extends EnumerableItem<int> with Serializable<int> implemen
CryptoCurrency.ndeps,
CryptoCurrency.deps,
CryptoCurrency.baseEth,
+ CryptoCurrency.usde,
];
static const havenCurrencies = [
@@ -243,6 +244,7 @@ class CryptoCurrency extends EnumerableItem<int> with Serializable<int> implemen
static const kbtc = CryptoCurrency(title: 'KBTC', tag: 'ETH', fullName: 'Kraken Wrapped Bitcoin', raw: 102, name: 'kbtc', iconPath: 'assets/images/kbtc_icon.png', decimals: 8);
static const cbbtc = CryptoCurrency(title: 'CBBTC', tag: 'ETH', fullName: 'Coinbase Wrapped BTC', raw: 103, name: 'cbbtc', iconPath: 'assets/images/cbbtc_icon.png', decimals: 8);
static const baseEth = CryptoCurrency(title: 'ETH', tag: 'BASE', fullName: 'Ethereum', raw: 104, name: 'baseth', iconPath: 'assets/images/crypto/base_icon.webp', decimals: 18);
+ static const usde = CryptoCurrency(title: 'USDE', tag: 'BASE', fullName: 'Ethena USDE', raw: 105, name: 'usde', iconPath: 'assets/images/crypto/ethena-usde-logo.png', decimals: 18);
static final Map<int, CryptoCurrency> _rawCurrencyMap =
[...all, ...havenCurrencies].fold<Map<int, CryptoCurrency>>(<int, CryptoCurrency>{}, (acc, item) {
diff --git a/cw_core/lib/currency_for_wallet_type.dart b/cw_core/lib/currency_for_wallet_type.dart
index f1ae636..5bceeb1 100644
--- a/cw_core/lib/currency_for_wallet_type.dart
+++ b/cw_core/lib/currency_for_wallet_type.dart
@@ -43,12 +43,3 @@ CryptoCurrency walletTypeToCryptoCurrency(WalletType type, {bool isTestnet = fal
'Unexpected wallet type: ${type.toString()} for CryptoCurrency walletTypeToCryptoCurrency');
}
}
-
-extension CryptoCurrencyForWalletType on CryptoCurrency {
- String? get normalizedIconPath {
- if (this == CryptoCurrency.baseEth) {
- return 'assets/images/crypto/base_icon.webp';
- }
- return iconPath;
- }
-}
diff --git a/cw_core/lib/erc20_token.dart b/cw_core/lib/erc20_token.dart
index 7302d4e..d090acd 100644
--- a/cw_core/lib/erc20_token.dart
+++ b/cw_core/lib/erc20_token.dart
@@ -47,14 +47,14 @@ class Erc20Token extends CryptoCurrency with HiveObjectMixin {
isPotentialScam: isPotentialScam,
);
- Erc20Token.copyWith(Erc20Token other, String? icon, String? tag)
+ Erc20Token.copyWith(Erc20Token other, {String? icon, String? tag, bool? enabled})
: this.name = other.name,
this.symbol = other.symbol,
this.contractAddress = other.contractAddress,
this.decimal = other.decimal,
- this._enabled = other.enabled,
- this.tag = tag,
- this.iconPath = icon,
+ this._enabled = enabled ?? other.enabled,
+ this.tag = tag ?? other.tag,
+ this.iconPath = icon ?? other.iconPath,
this.isPotentialScam = other.isPotentialScam,
super(
name: other.name,
diff --git a/cw_core/lib/hardware/device_connection_type.dart b/cw_core/lib/hardware/device_connection_type.dart
index fa04bd1..76f07ed 100644
--- a/cw_core/lib/hardware/device_connection_type.dart
+++ b/cw_core/lib/hardware/device_connection_type.dart
@@ -13,7 +13,7 @@ enum DeviceConnectionType {
case HardwareWalletType.bitbox:
isSupported = [
WalletType.bitcoin,
- WalletType.litecoin,
+ // WalletType.litecoin,
WalletType.ethereum,
WalletType.polygon
].contains(walletType);
diff --git a/cw_core/lib/spl_token.dart b/cw_core/lib/spl_token.dart
index fe793bb..145d7bd 100644
--- a/cw_core/lib/spl_token.dart
+++ b/cw_core/lib/spl_token.dart
@@ -83,15 +83,15 @@ class SPLToken extends CryptoCurrency with HiveObjectMixin {
@override
set enabled(bool value) => _enabled = value;
- SPLToken.copyWith(SPLToken other, String? icon, String? tag)
+ SPLToken.copyWith(SPLToken other, {String? icon, String? tag, bool? enabled})
: name = other.name,
symbol = other.symbol,
mintAddress = other.mintAddress,
decimal = other.decimal,
- _enabled = other.enabled,
+ _enabled = enabled ?? other.enabled,
mint = other.mint,
- tag = other.tag,
- iconPath = icon,
+ tag = tag ?? other.tag,
+ iconPath = icon ?? other.iconPath,
isPotentialScam = other.isPotentialScam,
super(
title: other.symbol.toUpperCase(),
diff --git a/cw_core/lib/tron_token.dart b/cw_core/lib/tron_token.dart
index 182b848..3d891be 100644
--- a/cw_core/lib/tron_token.dart
+++ b/cw_core/lib/tron_token.dart
@@ -56,12 +56,12 @@ class TronToken extends CryptoCurrency with HiveObjectMixin {
isPotentialScam: isPotentialScam,
);
- TronToken.copyWith(TronToken other, String? icon, String? tag)
+ TronToken.copyWith(TronToken other, {String? icon, String? tag, bool? enabled})
: name = other.name,
symbol = other.symbol,
contractAddress = other.contractAddress,
decimal = other.decimal,
- _enabled = other.enabled,
+ _enabled = enabled ?? other.enabled,
tag = tag ?? other.tag,
iconPath = icon ?? other.iconPath,
isPotentialScam = other.isPotentialScam,
diff --git a/cw_decred/devtools_options.yaml b/cw_decred/devtools_options.yaml
new file mode 100644
index 0000000..fa0b357
--- /dev/null
+++ b/cw_decred/devtools_options.yaml
@@ -0,0 +1,3 @@
+description: This file stores settings for Dart & Flutter DevTools.
+documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
+extensions:
diff --git a/cw_ethereum/lib/default_ethereum_erc20_tokens.dart b/cw_ethereum/lib/default_ethereum_erc20_tokens.dart
index c143274..4bb9033 100644
--- a/cw_ethereum/lib/default_ethereum_erc20_tokens.dart
+++ b/cw_ethereum/lib/default_ethereum_erc20_tokens.dart
@@ -332,16 +332,532 @@ class DefaultEthereumErc20Tokens {
decimal: 8,
enabled: false,
),
+ Erc20Token(
+ name: 'Abbott xStock',
+ symbol: 'ABTx',
+ contractAddress: '0x89233399708c18ac6887f90a2b4cd8ba5fedd06e',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/abtx.webp',
+ ),
+ Erc20Token(
+ name: 'AbbVie xStock',
+ symbol: 'ABBVx',
+ contractAddress: '0xfbf2398df672cee4afcc2a4a733222331c742a6a',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/abbv.webp',
+ ),
+ Erc20Token(
+ name: 'Accenture xStock',
+ symbol: 'ACNx',
+ contractAddress: '0x03183ce31b1656b72a55fa6056e287f50c35bbeb',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/acnx.webp',
+ ),
+ Erc20Token(
+ name: 'Alphabet xStock',
+ symbol: 'GOOGLx',
+ contractAddress: '0xe92f673ca36c5e2efd2de7628f815f84807e803f',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/googlx.webp',
+ ),
+ Erc20Token(
+ name: 'Amazon xStock',
+ symbol: 'AMZNx',
+ contractAddress: '0x3557ba345b01efa20a1bddc61f573bfd87195081',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/amznx.webp',
+ ),
+ Erc20Token(
+ name: 'Amber xStock',
+ symbol: 'AMBRx',
+ contractAddress: '0x2f9a35ab5ddfbc49927bfdeab98a86c53dc6e763',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/ambrx.webp',
+ ),
+ Erc20Token(
+ name: 'Apple xStock',
+ symbol: 'AAPLx',
+ contractAddress: '0x9d275685dc284c8eb1c79f6aba7a63dc75ec890a',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/apple.webp',
+ ),
+ Erc20Token(
+ name: 'AppLovin xStock',
+ symbol: 'APPx',
+ contractAddress: '0x50a1291f69d9d3853def8209cfb1af0b46927be1',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/appx.webp',
+ ),
+ Erc20Token(
+ name: 'AstraZeneca xStock',
+ symbol: 'AZNx',
+ contractAddress: '0x5d642505fe1a28897eb3baba665f454755d8daa2',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/aznx.webp',
+ ),
+ Erc20Token(
+ name: 'Bank of America xStock',
+ symbol: 'BACx',
+ contractAddress: '0x314938c596f5ce31c3f75307d2979338c346d7f2',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/bacx.webp',
+ ),
+ Erc20Token(
+ name: 'Berkshire Hathaway xStock',
+ symbol: 'BRK.Bx',
+ contractAddress: '0x12992613fdd35abe95dec5a4964331b1ee23b50d',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/brkbx.webp',
+ ),
+ Erc20Token(
+ name: 'Broadcom xStock',
+ symbol: 'AVGOx',
+ contractAddress: '0x38bac69cbbd28156796e4163b2b6dcb81e336565',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/avgox.webp',
+ ),
+ Erc20Token(
+ name: 'Chevron xStock',
+ symbol: 'CVXx',
+ contractAddress: '0xad5cdc3340904285b8159089974a99a1a09eb4c0',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/cvxx.webp',
+ ),
+ Erc20Token(
+ name: 'Circle xStock',
+ symbol: 'CRCLx',
+ contractAddress: '0xfebded1b0986a8ee107f5ab1a1c5a813491deceb',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/crclx.webp',
+ ),
+ Erc20Token(
+ name: 'Cisco xStock',
+ symbol: 'CSCOx',
+ contractAddress: '0x053c784cd87b74f42e0c089f98643e79c1a3ff16',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/cscox.webp',
+ ),
+ Erc20Token(
+ name: 'Coca-Cola xStock',
+ symbol: 'KOx',
+ contractAddress: '0xdcc1a2699441079da889b1f49e12b69cc791129b',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/kox.webp',
+ ),
+ Erc20Token(
+ name: 'Coinbase xStock',
+ symbol: 'COINx',
+ contractAddress: '0x364f210f430ec2448fc68a49203040f6124096f0',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/coinx.webp',
+ ),
+ Erc20Token(
+ name: 'Comcast xStock',
+ symbol: 'CMCSAx',
+ contractAddress: '0xbc7170a1280be28513b4e940c681537eb25e39f4',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/cmcsax.webp',
+ ),
+ Erc20Token(
+ name: 'CrowdStrike xStock',
+ symbol: 'CRWDx',
+ contractAddress: '0x214151022c2a5e380ab80cdac31f23ae554a7345',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/crwdx.webp',
+ ),
+ Erc20Token(
+ name: 'Danaher xStock',
+ symbol: 'DHRx',
+ contractAddress: '0xdba228936f4079daf9aa906fd48a87f2300405f4',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/dhrx.webp',
+ ),
+ Erc20Token(
+ name: 'DFDV xStock',
+ symbol: 'DFDVx',
+ contractAddress: '0x521860bb5df5468358875266b89bfe90d990c6e7',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/dfdvx.webp',
+ ),
+ Erc20Token(
+ name: 'Eli Lilly xStock',
+ symbol: 'LLYx',
+ contractAddress: '0x19c41ea77b34bbdee61c3a87a75d1abda2ed0be4',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/llyx.webp',
+ ),
+ Erc20Token(
+ name: 'Exxon Mobil xStock',
+ symbol: 'XOMx',
+ contractAddress: '0xeedb0273c5af792745180e9ff568cd01550ffa13',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/xomx.webp',
+ ),
+ Erc20Token(
+ name: 'Gamestop xStock',
+ symbol: 'GMEx',
+ contractAddress: '0xe5f6d3b2405abdfe6f660e63202b25d23763160d',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/gmex.webp',
+ ),
+ Erc20Token(
+ name: 'Gold xStock',
+ symbol: 'GLDx',
+ contractAddress: '0x2380f2673c640fb67e2d6b55b44c62f0e0e69da9',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/gldx.webp',
+ ),
+ Erc20Token(
+ name: 'Goldman Sachs xStock',
+ symbol: 'GSx',
+ contractAddress: '0x3ee7e9b3a992fd23cd1c363b0e296856b04ab149',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/gsx.webp',
+ ),
+ Erc20Token(
+ name: 'Home Depot xStock',
+ symbol: 'HDx',
+ contractAddress: '0x766b0cd6ed6d90b5d49d2c36a3761e9728501ba9',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/hdx.webp',
+ ),
+ Erc20Token(
+ name: 'Honeywell xStock',
+ symbol: 'HONx',
+ contractAddress: '0x62a48560861b0b451654bfffdb5be6e47aa8ff1b',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/honx.webp',
+ ),
+ Erc20Token(
+ name: 'Intel xStock',
+ symbol: 'INTCx',
+ contractAddress: '0xf8a80d1cb9cfd70d03d655d9df42339846f3b3c8',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/intcx.webp',
+ ),
+ Erc20Token(
+ name: 'International Business Machines xStock',
+ symbol: 'IBMx',
+ contractAddress: '0xd9913208647671fe0f48f7f260076b2c6f310aac',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/ibmx.webp',
+ ),
+ Erc20Token(
+ name: 'Johnson & Johnson xStock',
+ symbol: 'JNJx',
+ contractAddress: '0xdb0482cfad4789798623e64b15eeba01b16e917c',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/jnjx.webp',
+ ),
+ Erc20Token(
+ name: 'JPMorgan Chase xStock',
+ symbol: 'JPMx',
+ contractAddress: '0xd9fc3e075d45254a1d834fea18af8041207dea0a',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/jpmx.webp',
+ ),
+ Erc20Token(
+ name: 'Linde xStock',
+ symbol: 'LINx',
+ contractAddress: '0x15059c599c16fd8f70b633ade165502d6402cd49',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/linx.webp',
+ ),
+ Erc20Token(
+ name: 'Marvell xStock',
+ symbol: 'MRVLx',
+ contractAddress: '0xeaad46f4146ded5a47b55aa7f6c48c191deaec88',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/mrvlx.webp',
+ ),
+ Erc20Token(
+ name: 'Mastercard xStock',
+ symbol: 'MAx',
+ contractAddress: '0xb365cd2588065f522d379ad19e903304f6b622c6',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/mastercard.webp',
+ ),
+ Erc20Token(
+ name: 'McDonald\'s xStock',
+ symbol: 'MCDx',
+ contractAddress: '0x80a77a372c1e12accda84299492f404902e2da67',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/mcdonalds.webp',
+ ),
+ Erc20Token(
+ name: 'Medtronic xStock',
+ symbol: 'MDTx',
+ contractAddress: '0x0588e851ec0418d660bee81230d6c678daf21d46',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/mdtx.webp',
+ ),
+ Erc20Token(
+ name: 'Merck xStock',
+ symbol: 'MRKx',
+ contractAddress: '0x17d8186ed8f68059124190d147174d0f6697dc40',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/mrkx.webp',
+ ),
+ Erc20Token(
+ name: 'Meta xStock',
+ symbol: 'METAx',
+ contractAddress: '0x96702be57cd9777f835117a809c7124fe4ec989a',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/metax.webp',
+ ),
+ Erc20Token(
+ name: 'Microsoft xStock',
+ symbol: 'MSFTx',
+ contractAddress: '0x5621737f42dae558b81269fcb9e9e70c19aa6b35',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/msftx.webp',
+ ),
+ Erc20Token(
+ name: 'MicroStrategy xStock',
+ symbol: 'MSTRx',
+ contractAddress: '0xae2f842ef90c0d5213259ab82639d5bbf649b08e',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/mstrx.webp',
+ ),
+ Erc20Token(
+ name: 'Nasdaq xStock',
+ symbol: 'QQQx',
+ contractAddress: '0xa753a7395cae905cd615da0b82a53e0560f250af',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/qqqx.webp',
+ ),
+ Erc20Token(
+ name: 'Netflix xStock',
+ symbol: 'NFLXx',
+ contractAddress: '0xa6a65ac27e76cd53cb790473e4345c46e5ebf961',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/nflxx.webp',
+ ),
+ Erc20Token(
+ name: 'Novo Nordisk xStock',
+ symbol: 'NVOx',
+ contractAddress: '0xf9523e369c5f55ad72dbaa75b0a9b92b3d8b147e',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/nvox.webp',
+ ),
+ Erc20Token(
+ name: 'NVIDIA xStock',
+ symbol: 'NVDAx',
+ contractAddress: '0xc845b2894dbddd03858fd2d643b4ef725fe0849d',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/nvdax.webp',
+ ),
+ Erc20Token(
+ name: 'OPEN xStock',
+ symbol: 'OPENx',
+ contractAddress: '0xbee6b69345f376598fe16abd5592c6f844825e66',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/openx.webp',
+ ),
+ Erc20Token(
+ name: 'Oracle xStock',
+ symbol: 'ORCLx',
+ contractAddress: '0x548308e91ec9f285c7bff05295badbd56a6e4971',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/orclx.webp',
+ ),
+ Erc20Token(
+ name: 'Palantir xStock',
+ symbol: 'PLTRx',
+ contractAddress: '0x6d482cec5f9dd1f05ccee9fd3ff79b246170f8e2',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/pltrx.webp',
+ ),
+ Erc20Token(
+ name: 'PepsiCo xStock',
+ symbol: 'PEPx',
+ contractAddress: '0x36c424a6ec0e264b1616102ad63ed2ad7857413e',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/pepx.webp',
+ ),
+ Erc20Token(
+ name: 'Pfizer xStock',
+ symbol: 'PFEx',
+ contractAddress: '0x1ac765b5bea23184802c7d2d497f7c33f1444a9e',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/pfex.webp',
+ ),
+ Erc20Token(
+ name: 'Philip Morris xStock',
+ symbol: 'PMx',
+ contractAddress: '0x02a6c1789c3b4fdb1a7a3dfa39f90e5d3c94f4f9',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/pmx.webp',
+ ),
+ Erc20Token(
+ name: 'Procter & Gamble xStock',
+ symbol: 'PGx',
+ contractAddress: '0xa90424d5d3e770e8644103ab503ed775dd1318fd',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/pgx.webp',
+ ),
+ Erc20Token(
+ name: 'Robinhood xStock',
+ symbol: 'HOODx',
+ contractAddress: '0xe1385fdd5ffb10081cd52c56584f25efa9084015',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/hoodx.webp',
+ ),
+ Erc20Token(
+ name: 'Salesforce xStock',
+ symbol: 'CRMx',
+ contractAddress: '0x4a4073f2eaf299a1be22254dcd2c41727f6f54a2',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/crmx.webp',
+ ),
+ Erc20Token(
+ name: 'SP500 xStock',
+ symbol: 'SPYx',
+ contractAddress: '0x90a2a4c76b5d8c0bc892a69ea28aa775a8f2dd48',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/spyx.webp',
+ ),
+ Erc20Token(
+ name: 'TBLL xStock',
+ symbol: 'TBLLx',
+ contractAddress: '0x4cbf89ed7bb30b8a860fa86d3c96e9c72931299b',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/tbllx.webp',
+ ),
+ Erc20Token(
+ name: 'Tesla xStock',
+ symbol: 'TSLAx',
+ contractAddress: '0x8ad3c73f833d3f9a523ab01476625f269aeb7cf0',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/tslax.webp',
+ ),
+ Erc20Token(
+ name: 'Thermo Fisher xStock',
+ symbol: 'TMOx',
+ contractAddress: '0xaf072f109a2c173d822a4fe9af311a1b18f83d19',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/tmox.webp',
+ ),
+ Erc20Token(
+ name: 'TON xStock',
+ symbol: 'TONXx',
+ contractAddress: '0xe95ab205e333443d7970336d5fd827ef9ed97608',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/tonxx.webp',
+ ),
+ Erc20Token(
+ name: 'TQQQ xStock',
+ symbol: 'TQQQx',
+ contractAddress: '0xfdddb57878ef9d6f681ec4381dcb626b9e69ac86',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/tqqqx.webp',
+ ),
+ Erc20Token(
+ name: 'UnitedHealth xStock',
+ symbol: 'UNHx',
+ contractAddress: '0x167a6375da1efc4a5be0f470e73ecefd66245048',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/unhx.webp',
+ ),
+ Erc20Token(
+ name: 'Vanguard xStock',
+ symbol: 'VTIx',
+ contractAddress: '0xbd730e618bcd88c82ddee52e10275cf2f88a4777',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/vtix.webp',
+ ),
+ Erc20Token(
+ name: 'Visa xStock',
+ symbol: 'Vx',
+ contractAddress: '0x2363fd1235c1b6d3a5088ddf8df3a0b3a30c5293',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/vx.webp',
+ ),
+ Erc20Token(
+ name: 'Walmart xStock',
+ symbol: 'WMTx',
+ contractAddress: '0x7aefc9965699fbea943e03264d96e50cd4a97b21',
+ decimal: 8,
+ enabled: false,
+ iconPath: 'assets/images/stocks/wmtx.webp',
+ ),
];
List<Erc20Token> get initialErc20Tokens => _defaultTokens.map((token) {
String? iconPath;
- try {
- iconPath = CryptoCurrency.all
- .firstWhere((element) => element.title.toUpperCase() == token.symbol.toUpperCase())
- .iconPath;
- } catch (_) {}
+ if (token.iconPath?.isEmpty ?? true) {
+ try {
+ iconPath = CryptoCurrency.all
+ .firstWhere((element) => element.title.toUpperCase() == token.symbol.toUpperCase())
+ .iconPath;
+ } catch (_) {}
+ } else {
+ iconPath = token.iconPath;
+ }
- return Erc20Token.copyWith(token, iconPath, 'ETH');
+ return Erc20Token.copyWith(token, icon: iconPath, tag: 'ETH');
}).toList();
}
diff --git a/cw_ethereum/lib/ethereum_wallet.dart b/cw_ethereum/lib/ethereum_wallet.dart
index b488357..48cd678 100644
--- a/cw_ethereum/lib/ethereum_wallet.dart
+++ b/cw_ethereum/lib/ethereum_wallet.dart
@@ -31,13 +31,15 @@ class EthereumWallet extends EVMChainWallet {
}) : super(nativeCurrency: CryptoCurrency.eth);
@override
- void addInitialTokens([bool isMigration = false]) {
+ void addInitialTokens() {
final initialErc20Tokens = DefaultEthereumErc20Tokens().initialErc20Tokens;
for (final token in initialErc20Tokens) {
if (!evmChainErc20TokensBox.containsKey(token.contractAddress)) {
- if (isMigration) token.enabled = false;
evmChainErc20TokensBox.put(token.contractAddress, token);
+ } else { // update existing token
+ final existingToken = evmChainErc20TokensBox.get(token.contractAddress);
+ evmChainErc20TokensBox.put(token.contractAddress, Erc20Token.copyWith(token, enabled: existingToken!.enabled));
}
}
}
diff --git a/cw_ethereum/lib/ethereum_wallet_service.dart b/cw_ethereum/lib/ethereum_wallet_service.dart
index f889c8d..d208fdc 100644
--- a/cw_ethereum/lib/ethereum_wallet_service.dart
+++ b/cw_ethereum/lib/ethereum_wallet_service.dart
@@ -53,7 +53,7 @@ class EthereumWalletService extends EVMChainWalletService<EthereumWallet> {
);
await wallet.init();
- wallet.addInitialTokens(true);
+ wallet.addInitialTokens();
await wallet.save();
saveBackup(name);
return wallet;
@@ -67,7 +67,7 @@ class EthereumWalletService extends EVMChainWalletService<EthereumWallet> {
encryptionFileUtils: encryptionFileUtilsFor(isDirect),
);
await wallet.init();
- wallet.addInitialTokens(true);
+ wallet.addInitialTokens();
await wallet.save();
return wallet;
}
diff --git a/cw_evm/lib/evm_chain_wallet.dart b/cw_evm/lib/evm_chain_wallet.dart
index bc6bd37..b752aef 100644
--- a/cw_evm/lib/evm_chain_wallet.dart
+++ b/cw_evm/lib/evm_chain_wallet.dart
@@ -139,7 +139,7 @@ abstract class EVMChainWalletBase
//! Methods to be overridden by every child
- void addInitialTokens([bool isMigration]);
+ void addInitialTokens();
// Future<EVMChainWallet> open({
// required String name,
diff --git a/cw_polygon/devtools_options.yaml b/cw_polygon/devtools_options.yaml
new file mode 100644
index 0000000..fa0b357
--- /dev/null
+++ b/cw_polygon/devtools_options.yaml
@@ -0,0 +1,3 @@
+description: This file stores settings for Dart & Flutter DevTools.
+documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
+extensions:
diff --git a/cw_polygon/lib/default_polygon_erc20_tokens.dart b/cw_polygon/lib/default_polygon_erc20_tokens.dart
index 208a633..01ea2d7 100644
--- a/cw_polygon/lib/default_polygon_erc20_tokens.dart
+++ b/cw_polygon/lib/default_polygon_erc20_tokens.dart
@@ -77,13 +77,17 @@ class DefaultPolygonErc20Tokens {
List<Erc20Token> get initialPolygonErc20Tokens => _defaultTokens.map((token) {
String? iconPath;
- try {
- iconPath = CryptoCurrency.all
- .firstWhere((element) =>
- element.title.toUpperCase() == token.symbol.split(".").first.toUpperCase())
- .iconPath;
- } catch (_) {}
+ if (token.iconPath?.isEmpty ?? true) {
+ try {
+ iconPath = CryptoCurrency.all
+ .firstWhere((element) =>
+ element.title.toUpperCase() == token.symbol.split(".").first.toUpperCase())
+ .iconPath;
+ } catch (_) {}
+ } else {
+ iconPath = token.iconPath;
+ }
- return Erc20Token.copyWith(token, iconPath, 'POL');
+ return Erc20Token.copyWith(token, icon: iconPath, tag: 'POL');
}).toList();
}
diff --git a/cw_polygon/lib/polygon_wallet.dart b/cw_polygon/lib/polygon_wallet.dart
index c0055c7..ed0e54e 100644
--- a/cw_polygon/lib/polygon_wallet.dart
+++ b/cw_polygon/lib/polygon_wallet.dart
@@ -41,18 +41,15 @@ class PolygonWallet extends EVMChainWallet {
}
@override
- void addInitialTokens([bool isMigration = false]) {
+ void addInitialTokens() {
final initialErc20Tokens = DefaultPolygonErc20Tokens().initialPolygonErc20Tokens;
for (final token in initialErc20Tokens) {
- if (evmChainErc20TokensBox.containsKey(token.contractAddress)) {
- final existingToken = evmChainErc20TokensBox.get(token.contractAddress);
- if (existingToken?.tag != token.tag) {
- evmChainErc20TokensBox.put(token.contractAddress, token);
- }
- } else {
- if (isMigration) token.enabled = false;
+ if (!evmChainErc20TokensBox.containsKey(token.contractAddress)) {
evmChainErc20TokensBox.put(token.contractAddress, token);
+ } else { // update existing token
+ final existingToken = evmChainErc20TokensBox.get(token.contractAddress);
+ evmChainErc20TokensBox.put(token.contractAddress, Erc20Token.copyWith(token, enabled: existingToken!.enabled));
}
}
}
diff --git a/cw_polygon/lib/polygon_wallet_service.dart b/cw_polygon/lib/polygon_wallet_service.dart
index 05af311..ece7a6b 100644
--- a/cw_polygon/lib/polygon_wallet_service.dart
+++ b/cw_polygon/lib/polygon_wallet_service.dart
@@ -55,7 +55,7 @@ class PolygonWalletService extends EVMChainWalletService<PolygonWallet> {
);
await wallet.init();
- wallet.addInitialTokens(true);
+ wallet.addInitialTokens();
await wallet.save();
saveBackup(name);
return wallet;
diff --git a/cw_solana/lib/default_spl_tokens.dart b/cw_solana/lib/default_spl_tokens.dart
index 9b61418..5831540 100644
--- a/cw_solana/lib/default_spl_tokens.dart
+++ b/cw_solana/lib/default_spl_tokens.dart
@@ -100,459 +100,595 @@ class DefaultSPLTokens {
enabled: false,
),
SPLToken(
- name: 'Abbott xStock',
- symbol: 'ABTx',
- mintAddress: 'XsHtf5RpxsQ7jeJ9ivNewouZKJHbPxhPoEy6yYvULr7',
- decimal: 8,
- mint: 'abtx',
- enabled: false),
- SPLToken(
- name: 'AbbVie xStock',
- symbol: 'ABBVx',
- mintAddress: 'XswbinNKyPmzTa5CskMbCPvMW6G5CMnZXZEeQSSQoie',
- decimal: 8,
- mint: 'abbvx',
- enabled: false),
- SPLToken(
- name: 'Accenture xStock',
- symbol: 'ACNx',
- mintAddress: 'Xs5UJzmCRQ8DWZjskExdSQDnbE6iLkRu2jjrRAB1JSU',
- decimal: 8,
- mint: 'acnx',
- enabled: false),
- SPLToken(
- name: 'Alphabet xStock',
- symbol: 'GOOGLx',
- mintAddress: 'XsCPL9dNWBMvFtTmwcCA5v3xWPSMEBCszbQdiLLq6aN',
- decimal: 8,
- mint: 'googlx',
- enabled: false),
- SPLToken(
- name: 'Amazon xStock',
- symbol: 'AMZNx',
- mintAddress: 'Xs3eBt7uRfJX8QUs4suhyU8p2M6DoUDrJyWBa8LLZsg',
- decimal: 8,
- mint: 'amznx',
- enabled: false),
- SPLToken(
- name: 'Amber xStock',
- symbol: 'AMBRx',
- mintAddress: 'XsaQTCgebC2KPbf27KUhdv5JFvHhQ4GDAPURwrEhAzb',
- decimal: 8,
- mint: 'ambrx',
- enabled: false),
- SPLToken(
- name: 'Apple xStock',
- symbol: 'AAPLx',
- mintAddress: 'XsbEhLAtcf6HdfpFZ5xEMdqW8nfAvcsP5bdudRLJzJp',
- decimal: 8,
- mint: 'aaplx',
- enabled: false),
- SPLToken(
- name: 'AppLovin xStock',
- symbol: 'APPx',
- mintAddress: 'XsPdAVBi8Zc1xvv53k4JcMrQaEDTgkGqKYeh7AYgPHV',
- decimal: 8,
- mint: 'appx',
- enabled: false),
- SPLToken(
- name: 'AstraZeneca xStock',
- symbol: 'AZNx',
- mintAddress: 'Xs3ZFkPYT2BN7qBMqf1j1bfTeTm1rFzEFSsQ1z3wAKU',
- decimal: 8,
- mint: 'aznx',
- enabled: false),
- SPLToken(
- name: 'Bank of America xStock',
- symbol: 'BACx',
- mintAddress: 'XswsQk4duEQmCbGzfqUUWYmi7pV7xpJ9eEmLHXCaEQP',
- decimal: 8,
- mint: 'bacx',
- enabled: false),
- SPLToken(
- name: 'Berkshire Hathaway xStock',
- symbol: 'BRK.Bx',
- mintAddress: 'Xs6B6zawENwAbWVi7w92rjazLuAr5Az59qgWKcNb45x',
- decimal: 8,
- mint: 'brkbx',
- enabled: false),
- SPLToken(
- name: 'Broadcom xStock',
- symbol: 'AVGOx',
- mintAddress: 'XsgSaSvNSqLTtFuyWPBhK9196Xb9Bbdyjj4fH3cPJGo',
- decimal: 8,
- mint: 'avgox',
- enabled: false),
- SPLToken(
- name: 'Chevron xStock',
- symbol: 'CVXx',
- mintAddress: 'XsNNMt7WTNA2sV3jrb1NNfNgapxRF5i4i6GcnTRRHts',
- decimal: 8,
- mint: 'cvxx',
- enabled: false),
- SPLToken(
- name: 'Circle xStock',
- symbol: 'CRCLx',
- mintAddress: 'XsueG8BtpquVJX9LVLLEGuViXUungE6WmK5YZ3p3bd1',
- decimal: 8,
- mint: 'crclx',
- enabled: false),
- SPLToken(
- name: 'Cisco xStock',
- symbol: 'CSCOx',
- mintAddress: 'Xsr3pdLQyXvDJBFgpR5nexCEZwXvigb8wbPYp4YoNFf',
- decimal: 8,
- mint: 'cscx',
- enabled: false),
- SPLToken(
- name: 'Coca-Cola xStock',
- symbol: 'KOx',
- mintAddress: 'XsaBXg8dU5cPM6ehmVctMkVqoiRG2ZjMo1cyBJ3AykQ',
- decimal: 8,
- mint: 'kox',
- enabled: false),
- SPLToken(
- name: 'Coinbase xStock',
- symbol: 'COINx',
- mintAddress: 'Xs7ZdzSHLU9ftNJsii5fCeJhoRWSC32SQGzGQtePxNu',
- decimal: 8,
- mint: 'coinx',
- enabled: false),
- SPLToken(
- name: 'Comcast xStock',
- symbol: 'CMCSAx',
- mintAddress: 'XsvKCaNsxg2GN8jjUmq71qukMJr7Q1c5R2Mk9P8kcS8',
- decimal: 8,
- mint: 'cmcsax',
- enabled: false),
- SPLToken(
- name: 'CrowdStrike xStock',
- symbol: 'CRWDx',
- mintAddress: 'Xs7xXqkcK7K8urEqGg52SECi79dRp2cEKKuYjUePYDw',
- decimal: 8,
- mint: 'crwdx',
- enabled: false),
- SPLToken(
- name: 'Danaher xStock',
- symbol: 'DHRx',
- mintAddress: 'Xseo8tgCZfkHxWS9xbFYeKFyMSbWEvZGFV1Gh53GtCV',
- decimal: 8,
- mint: 'dhrx',
- enabled: false),
- SPLToken(
- name: 'DFDV xStock',
- symbol: 'DFDVx',
- mintAddress: 'Xs2yquAgsHByNzx68WJC55WHjHBvG9JsMB7CWjTLyPy',
- decimal: 8,
- mint: 'dfdvx',
- enabled: false),
- SPLToken(
- name: 'Eli Lilly xStock',
- symbol: 'LLYx',
- mintAddress: 'Xsnuv4omNoHozR6EEW5mXkw8Nrny5rB3jVfLqi6gKMH',
- decimal: 8,
- mint: 'llyx',
- enabled: false),
- SPLToken(
- name: 'Exxon Mobil xStock',
- symbol: 'XOMx',
- mintAddress: 'XsaHND8sHyfMfsWPj6kSdd5VwvCayZvjYgKmmcNL5qh',
- decimal: 8,
- mint: 'xomx',
- enabled: false),
- SPLToken(
- name: 'Gamestop xStock',
- symbol: 'GMEx',
- mintAddress: 'Xsf9mBktVB9BSU5kf4nHxPq5hCBJ2j2ui3ecFGxPRGc',
- decimal: 8,
- mint: 'gmex',
- enabled: false),
- SPLToken(
- name: 'Gold xStock',
- symbol: 'GLDx',
- mintAddress: 'Xsv9hRk1z5ystj9MhnA7Lq4vjSsLwzL2nxrwmwtD3re',
- decimal: 8,
- mint: 'gldx',
- enabled: false),
- SPLToken(
- name: 'Goldman Sachs xStock',
- symbol: 'GSx',
- mintAddress: 'XsgaUyp4jd1fNBCxgtTKkW64xnnhQcvgaxzsbAq5ZD1',
- decimal: 8,
- mint: 'gsx',
- enabled: false),
- SPLToken(
- name: 'Home Depot xStock',
- symbol: 'HDx',
- mintAddress: 'XszjVtyhowGjSC5odCqBpW1CtXXwXjYokymrk7fGKD3',
- decimal: 8,
- mint: 'hdx',
- enabled: false),
- SPLToken(
- name: 'Honeywell xStock',
- symbol: 'HONx',
- mintAddress: 'XsRbLZthfABAPAfumWNEJhPyiKDW6TvDVeAeW7oKqA2',
- decimal: 8,
- mint: 'honx',
- enabled: false),
- SPLToken(
- name: 'Intel xStock',
- symbol: 'INTCx',
- mintAddress: 'XshPgPdXFRWB8tP1j82rebb2Q9rPgGX37RuqzohmArM',
- decimal: 8,
- mint: 'intcx',
- enabled: false),
- SPLToken(
- name: 'International Business Machines xStock',
- symbol: 'IBMx',
- mintAddress: 'XspwhyYPdWVM8XBHZnpS9hgyag9MKjLRyE3tVfmCbSr',
- decimal: 8,
- mint: 'ibmx',
- enabled: false),
- SPLToken(
- name: 'Johnson & Johnson xStock',
- symbol: 'JNJx',
- mintAddress: 'XsGVi5eo1Dh2zUpic4qACcjuWGjNv8GCt3dm5XcX6Dn',
- decimal: 8,
- mint: 'jnjx',
- enabled: false),
- SPLToken(
- name: 'JPMorgan Chase xStock',
- symbol: 'JPMx',
- mintAddress: 'XsMAqkcKsUewDrzVkait4e5u4y8REgtyS7jWgCpLV2C',
- decimal: 8,
- mint: 'jpmx',
- enabled: false),
- SPLToken(
- name: 'Linde xStock',
- symbol: 'LINx',
- mintAddress: 'XsSr8anD1hkvNMu8XQiVcmiaTP7XGvYu7Q58LdmtE8Z',
- decimal: 8,
- mint: 'linx',
- enabled: false),
- SPLToken(
- name: 'Marvell xStock',
- symbol: 'MRVLx',
- mintAddress: 'XsuxRGDzbLjnJ72v74b7p9VY6N66uYgTCyfwwRjVCJA',
- decimal: 8,
- mint: 'mrvlx',
- enabled: false),
- SPLToken(
- name: 'Mastercard xStock',
- symbol: 'MAx',
- mintAddress: 'XsApJFV9MAktqnAc6jqzsHVujxkGm9xcSUffaBoYLKC',
- decimal: 8,
- mint: 'max',
- enabled: false),
- SPLToken(
- name: 'McDonald\'s xStock',
- symbol: 'MCDx',
- mintAddress: 'XsqE9cRRpzxcGKDXj1BJ7Xmg4GRhZoyY1KpmGSxAWT2',
- decimal: 8,
- mint: 'mcdx',
- enabled: false),
- SPLToken(
- name: 'Medtronic xStock',
- symbol: 'MDTx',
- mintAddress: 'XsDgw22qRLTv5Uwuzn6T63cW69exG41T6gwQhEK22u2',
- decimal: 8,
- mint: 'mdtx',
- enabled: false),
- SPLToken(
- name: 'Merck xStock',
- symbol: 'MRKx',
- mintAddress: 'XsnQnU7AdbRZYe2akqqpibDdXjkieGFfSkbkjX1Sd1X',
- decimal: 8,
- mint: 'mrkx',
- enabled: false),
- SPLToken(
- name: 'Meta xStock',
- symbol: 'METAx',
- mintAddress: 'Xsa62P5mvPszXL1krVUnU5ar38bBSVcWAB6fmPCo5Zu',
- decimal: 8,
- mint: 'metax',
- enabled: false),
- SPLToken(
- name: 'Microsoft xStock',
- symbol: 'MSFTx',
- mintAddress: 'XspzcW1PRtgf6Wj92HCiZdjzKCyFekVD8P5Ueh3dRMX',
- decimal: 8,
- mint: 'msftx',
- enabled: false),
- SPLToken(
- name: 'MicroStrategy xStock',
- symbol: 'MSTRx',
- mintAddress: 'XsP7xzNPvEHS1m6qfanPUGjNmdnmsLKEoNAnHjdxxyZ',
- decimal: 8,
- mint: 'mstrx',
- enabled: false),
- SPLToken(
- name: 'Nasdaq xStock',
- symbol: 'QQQx',
- mintAddress: 'Xs8S1uUs1zvS2p7iwtsG3b6fkhpvmwz4GYU3gWAmWHZ',
- decimal: 8,
- mint: 'qqqx',
- enabled: false),
- SPLToken(
- name: 'Netflix xStock',
- symbol: 'NFLXx',
- mintAddress: 'XsEH7wWfJJu2ZT3UCFeVfALnVA6CP5ur7Ee11KmzVpL',
- decimal: 8,
- mint: 'nflxx',
- enabled: false),
- SPLToken(
- name: 'Novo Nordisk xStock',
- symbol: 'NVOx',
- mintAddress: 'XsfAzPzYrYjd4Dpa9BU3cusBsvWfVB9gBcyGC87S57n',
- decimal: 8,
- mint: 'nvox',
- enabled: false),
- SPLToken(
- name: 'NVIDIA xStock',
- symbol: 'NVDAx',
- mintAddress: 'Xsc9qvGR1efVDFGLrVsmkzv3qi45LTBjeUKSPmx9qEh',
- decimal: 8,
- mint: 'nvdax',
- enabled: false),
- SPLToken(
- name: 'OPEN xStock',
- symbol: 'OPENx',
- mintAddress: 'XsGtpmjhmC8kyjVSWL4VicGu36ceq9u55PTgF8bhGv6',
- decimal: 8,
- mint: 'openx',
- enabled: false),
- SPLToken(
- name: 'Oracle xStock',
- symbol: 'ORCLx',
- mintAddress: 'XsjFwUPiLofddX5cWFHW35GCbXcSu1BCUGfxoQAQjeL',
- decimal: 8,
- mint: 'orclx',
- enabled: false),
- SPLToken(
- name: 'Palantir xStock',
- symbol: 'PLTRx',
- mintAddress: 'XsoBhf2ufR8fTyNSjqfU71DYGaE6Z3SUGAidpzriAA4',
- decimal: 8,
- mint: 'pltrx',
- enabled: false),
- SPLToken(
- name: 'PepsiCo xStock',
- symbol: 'PEPx',
- mintAddress: 'Xsv99frTRUeornyvCfvhnDesQDWuvns1M852Pez91vF',
- decimal: 8,
- mint: 'pepx',
- enabled: false),
- SPLToken(
- name: 'Pfizer xStock',
- symbol: 'PFEx',
- mintAddress: 'XsAtbqkAP1HJxy7hFDeq7ok6yM43DQ9mQ1Rh861X8rw',
- decimal: 8,
- mint: 'pfex',
- enabled: false),
- SPLToken(
- name: 'Philip Morris xStock',
- symbol: 'PMx',
- mintAddress: 'Xsba6tUnSjDae2VcopDB6FGGDaxRrewFCDa5hKn5vT3',
- decimal: 8,
- mint: 'pmx',
- enabled: false),
- SPLToken(
- name: 'Procter & Gamble xStock',
- symbol: 'PGx',
- mintAddress: 'XsYdjDjNUygZ7yGKfQaB6TxLh2gC6RRjzLtLAGJrhzV',
- decimal: 8,
- mint: 'pgx',
- enabled: false),
- SPLToken(
- name: 'Robinhood xStock',
- symbol: 'HOODx',
- mintAddress: 'XsvNBAYkrDRNhA7wPHQfX3ZUXZyZLdnCQDfHZ56bzpg',
- decimal: 8,
- mint: 'hoodx',
- enabled: false),
- SPLToken(
- name: 'Salesforce xStock',
- symbol: 'CRMx',
- mintAddress: 'XsczbcQ3zfcgAEt9qHQES8pxKAVG5rujPSHQEXi4kaN',
- decimal: 8,
- mint: 'crmx',
- enabled: false),
- SPLToken(
- name: 'SP500 xStock',
- symbol: 'SPYx',
- mintAddress: 'XsoCS1TfEyfFhfvj8EtZ528L3CaKBDBRqRapnBbDF2W',
- decimal: 8,
- mint: 'spyx',
- enabled: false),
- SPLToken(
- name: 'TBLL xStock',
- symbol: 'TBLLx',
- mintAddress: 'XsqBC5tcVQLYt8wqGCHRnAUUecbRYXoJCReD6w7QEKp',
- decimal: 8,
- mint: 'tbllx',
- enabled: false),
- SPLToken(
- name: 'Tesla xStock',
- symbol: 'TSLAx',
- mintAddress: 'XsDoVfqeBukxuZHWhdvWHBhgEHjGNst4MLodqsJHzoB',
- decimal: 8,
- mint: 'tslax',
- enabled: false),
- SPLToken(
- name: 'Thermo Fisher xStock',
- symbol: 'TMOx',
- mintAddress: 'Xs8drBWy3Sd5QY3aifG9kt9KFs2K3PGZmx7jWrsrk57',
- decimal: 8,
- mint: 'tmox',
- enabled: false),
- SPLToken(
- name: 'TQQQ xStock',
- symbol: 'TQQQx',
- mintAddress: 'XsjQP3iMAaQ3kQScQKthQpx9ALRbjKAjQtHg6TFomoc',
- decimal: 8,
- mint: 'tqqqx',
- enabled: false),
- SPLToken(
- name: 'UnitedHealth xStock',
- symbol: 'UNHx',
- mintAddress: 'XszvaiXGPwvk2nwb3o9C1CX4K6zH8sez11E6uyup6fe',
- decimal: 8,
- mint: 'unhx',
- enabled: false),
- SPLToken(
- name: 'Vanguard xStock',
- symbol: 'VTIx',
- mintAddress: 'XsssYEQjzxBCFgvYFFNuhJFBeHNdLWYeUSP8F45cDr9',
- decimal: 8,
- mint: 'vtix',
- enabled: false),
- SPLToken(
- name: 'Visa xStock',
- symbol: 'Vx',
- mintAddress: 'XsqgsbXwWogGJsNcVZ3TyVouy2MbTkfCFhCGGGcQZ2p',
- decimal: 8,
- mint: 'vx',
- enabled: false),
- SPLToken(
- name: 'Walmart xStock',
- symbol: 'WMTx',
- mintAddress: 'Xs151QeqTCiuKtinzfRATnUESM2xTU6V9Wy8Vy538ci',
- decimal: 8,
- mint: 'wmtx',
- enabled: false),
-
+ name: 'Abbott xStock',
+ symbol: 'ABTx',
+ mintAddress: 'XsHtf5RpxsQ7jeJ9ivNewouZKJHbPxhPoEy6yYvULr7',
+ decimal: 8,
+ mint: 'abtx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/abtx.webp',
+ ),
+ SPLToken(
+ name: 'AbbVie xStock',
+ symbol: 'ABBVx',
+ mintAddress: 'XswbinNKyPmzTa5CskMbCPvMW6G5CMnZXZEeQSSQoie',
+ decimal: 8,
+ mint: 'abbvx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/abbv.webp',
+ ),
+ SPLToken(
+ name: 'Accenture xStock',
+ symbol: 'ACNx',
+ mintAddress: 'Xs5UJzmCRQ8DWZjskExdSQDnbE6iLkRu2jjrRAB1JSU',
+ decimal: 8,
+ mint: 'acnx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/acnx.webp',
+ ),
+ SPLToken(
+ name: 'Alphabet xStock',
+ symbol: 'GOOGLx',
+ mintAddress: 'XsCPL9dNWBMvFtTmwcCA5v3xWPSMEBCszbQdiLLq6aN',
+ decimal: 8,
+ mint: 'googlx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/googlx.webp',
+ ),
+ SPLToken(
+ name: 'Amazon xStock',
+ symbol: 'AMZNx',
+ mintAddress: 'Xs3eBt7uRfJX8QUs4suhyU8p2M6DoUDrJyWBa8LLZsg',
+ decimal: 8,
+ mint: 'amznx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/amznx.webp',
+ ),
+ SPLToken(
+ name: 'Amber xStock',
+ symbol: 'AMBRx',
+ mintAddress: 'XsaQTCgebC2KPbf27KUhdv5JFvHhQ4GDAPURwrEhAzb',
+ decimal: 8,
+ mint: 'ambrx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/ambrx.webp',
+ ),
+ SPLToken(
+ name: 'Apple xStock',
+ symbol: 'AAPLx',
+ mintAddress: 'XsbEhLAtcf6HdfpFZ5xEMdqW8nfAvcsP5bdudRLJzJp',
+ decimal: 8,
+ mint: 'aaplx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/apple.webp',
+ ),
+ SPLToken(
+ name: 'AppLovin xStock',
+ symbol: 'APPx',
+ mintAddress: 'XsPdAVBi8Zc1xvv53k4JcMrQaEDTgkGqKYeh7AYgPHV',
+ decimal: 8,
+ mint: 'appx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/appx.webp',
+ ),
+ SPLToken(
+ name: 'AstraZeneca xStock',
+ symbol: 'AZNx',
+ mintAddress: 'Xs3ZFkPYT2BN7qBMqf1j1bfTeTm1rFzEFSsQ1z3wAKU',
+ decimal: 8,
+ mint: 'aznx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/aznx.webp',
+ ),
+ SPLToken(
+ name: 'Bank of America xStock',
+ symbol: 'BACx',
+ mintAddress: 'XswsQk4duEQmCbGzfqUUWYmi7pV7xpJ9eEmLHXCaEQP',
+ decimal: 8,
+ mint: 'bacx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/bacx.webp',
+ ),
+ SPLToken(
+ name: 'Berkshire Hathaway xStock',
+ symbol: 'BRK.Bx',
+ mintAddress: 'Xs6B6zawENwAbWVi7w92rjazLuAr5Az59qgWKcNb45x',
+ decimal: 8,
+ mint: 'brkbx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/brkbx.webp',
+ ),
+ SPLToken(
+ name: 'Broadcom xStock',
+ symbol: 'AVGOx',
+ mintAddress: 'XsgSaSvNSqLTtFuyWPBhK9196Xb9Bbdyjj4fH3cPJGo',
+ decimal: 8,
+ mint: 'avgox',
+ enabled: false,
+ iconPath: 'assets/images/stocks/avgox.webp',
+ ),
+ SPLToken(
+ name: 'Chevron xStock',
+ symbol: 'CVXx',
+ mintAddress: 'XsNNMt7WTNA2sV3jrb1NNfNgapxRF5i4i6GcnTRRHts',
+ decimal: 8,
+ mint: 'cvxx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/cvxx.webp',
+ ),
+ SPLToken(
+ name: 'Circle xStock',
+ symbol: 'CRCLx',
+ mintAddress: 'XsueG8BtpquVJX9LVLLEGuViXUungE6WmK5YZ3p3bd1',
+ decimal: 8,
+ mint: 'crclx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/crclx.webp',
+ ),
+ SPLToken(
+ name: 'Cisco xStock',
+ symbol: 'CSCOx',
+ mintAddress: 'Xsr3pdLQyXvDJBFgpR5nexCEZwXvigb8wbPYp4YoNFf',
+ decimal: 8,
+ mint: 'cscx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/cscox.webp',
+ ),
+ SPLToken(
+ name: 'Coca-Cola xStock',
+ symbol: 'KOx',
+ mintAddress: 'XsaBXg8dU5cPM6ehmVctMkVqoiRG2ZjMo1cyBJ3AykQ',
+ decimal: 8,
+ mint: 'kox',
+ enabled: false,
+ iconPath: 'assets/images/stocks/kox.webp',
+ ),
+ SPLToken(
+ name: 'Coinbase xStock',
+ symbol: 'COINx',
+ mintAddress: 'Xs7ZdzSHLU9ftNJsii5fCeJhoRWSC32SQGzGQtePxNu',
+ decimal: 8,
+ mint: 'coinx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/coinx.webp',
+ ),
+ SPLToken(
+ name: 'Comcast xStock',
+ symbol: 'CMCSAx',
+ mintAddress: 'XsvKCaNsxg2GN8jjUmq71qukMJr7Q1c5R2Mk9P8kcS8',
+ decimal: 8,
+ mint: 'cmcsax',
+ enabled: false,
+ iconPath: 'assets/images/stocks/cmcsax.webp',
+ ),
+ SPLToken(
+ name: 'CrowdStrike xStock',
+ symbol: 'CRWDx',
+ mintAddress: 'Xs7xXqkcK7K8urEqGg52SECi79dRp2cEKKuYjUePYDw',
+ decimal: 8,
+ mint: 'crwdx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/crwdx.webp',
+ ),
+ SPLToken(
+ name: 'Danaher xStock',
+ symbol: 'DHRx',
+ mintAddress: 'Xseo8tgCZfkHxWS9xbFYeKFyMSbWEvZGFV1Gh53GtCV',
+ decimal: 8,
+ mint: 'dhrx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/dhrx.webp',
+ ),
+ SPLToken(
+ name: 'DFDV xStock',
+ symbol: 'DFDVx',
+ mintAddress: 'Xs2yquAgsHByNzx68WJC55WHjHBvG9JsMB7CWjTLyPy',
+ decimal: 8,
+ mint: 'dfdvx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/dfdvx.webp',
+ ),
+ SPLToken(
+ name: 'Eli Lilly xStock',
+ symbol: 'LLYx',
+ mintAddress: 'Xsnuv4omNoHozR6EEW5mXkw8Nrny5rB3jVfLqi6gKMH',
+ decimal: 8,
+ mint: 'llyx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/llyx.webp',
+ ),
+ SPLToken(
+ name: 'Exxon Mobil xStock',
+ symbol: 'XOMx',
+ mintAddress: 'XsaHND8sHyfMfsWPj6kSdd5VwvCayZvjYgKmmcNL5qh',
+ decimal: 8,
+ mint: 'xomx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/xomx.webp',
+ ),
+ SPLToken(
+ name: 'Gamestop xStock',
+ symbol: 'GMEx',
+ mintAddress: 'Xsf9mBktVB9BSU5kf4nHxPq5hCBJ2j2ui3ecFGxPRGc',
+ decimal: 8,
+ mint: 'gmex',
+ enabled: false,
+ iconPath: 'assets/images/stocks/gmex.webp',
+ ),
+ SPLToken(
+ name: 'Gold xStock',
+ symbol: 'GLDx',
+ mintAddress: 'Xsv9hRk1z5ystj9MhnA7Lq4vjSsLwzL2nxrwmwtD3re',
+ decimal: 8,
+ mint: 'gldx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/gldx.webp',
+ ),
+ SPLToken(
+ name: 'Goldman Sachs xStock',
+ symbol: 'GSx',
+ mintAddress: 'XsgaUyp4jd1fNBCxgtTKkW64xnnhQcvgaxzsbAq5ZD1',
+ decimal: 8,
+ mint: 'gsx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/gsx.webp',
+ ),
+ SPLToken(
+ name: 'Home Depot xStock',
+ symbol: 'HDx',
+ mintAddress: 'XszjVtyhowGjSC5odCqBpW1CtXXwXjYokymrk7fGKD3',
+ decimal: 8,
+ mint: 'hdx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/hdx.webp',
+ ),
+ SPLToken(
+ name: 'Honeywell xStock',
+ symbol: 'HONx',
+ mintAddress: 'XsRbLZthfABAPAfumWNEJhPyiKDW6TvDVeAeW7oKqA2',
+ decimal: 8,
+ mint: 'honx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/honx.webp',
+ ),
+ SPLToken(
+ name: 'Intel xStock',
+ symbol: 'INTCx',
+ mintAddress: 'XshPgPdXFRWB8tP1j82rebb2Q9rPgGX37RuqzohmArM',
+ decimal: 8,
+ mint: 'intcx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/intcx.webp',
+ ),
+ SPLToken(
+ name: 'International Business Machines xStock',
+ symbol: 'IBMx',
+ mintAddress: 'XspwhyYPdWVM8XBHZnpS9hgyag9MKjLRyE3tVfmCbSr',
+ decimal: 8,
+ mint: 'ibmx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/ibmx.webp',
+ ),
+ SPLToken(
+ name: 'Johnson & Johnson xStock',
+ symbol: 'JNJx',
+ mintAddress: 'XsGVi5eo1Dh2zUpic4qACcjuWGjNv8GCt3dm5XcX6Dn',
+ decimal: 8,
+ mint: 'jnjx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/jnjx.webp',
+ ),
+ SPLToken(
+ name: 'JPMorgan Chase xStock',
+ symbol: 'JPMx',
+ mintAddress: 'XsMAqkcKsUewDrzVkait4e5u4y8REgtyS7jWgCpLV2C',
+ decimal: 8,
+ mint: 'jpmx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/jpmx.webp',
+ ),
+ SPLToken(
+ name: 'Linde xStock',
+ symbol: 'LINx',
+ mintAddress: 'XsSr8anD1hkvNMu8XQiVcmiaTP7XGvYu7Q58LdmtE8Z',
+ decimal: 8,
+ mint: 'linx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/linx.webp',
+ ),
+ SPLToken(
+ name: 'Marvell xStock',
+ symbol: 'MRVLx',
+ mintAddress: 'XsuxRGDzbLjnJ72v74b7p9VY6N66uYgTCyfwwRjVCJA',
+ decimal: 8,
+ mint: 'mrvlx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/mrvlx.webp',
+ ),
+ SPLToken(
+ name: 'Mastercard xStock',
+ symbol: 'MAx',
+ mintAddress: 'XsApJFV9MAktqnAc6jqzsHVujxkGm9xcSUffaBoYLKC',
+ decimal: 8,
+ mint: 'max',
+ enabled: false,
+ iconPath: 'assets/images/stocks/mastercard.webp',
+ ),
+ SPLToken(
+ name: 'McDonald\'s xStock',
+ symbol: 'MCDx',
+ mintAddress: 'XsqE9cRRpzxcGKDXj1BJ7Xmg4GRhZoyY1KpmGSxAWT2',
+ decimal: 8,
+ mint: 'mcdx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/mcdonalds.webp',
+ ),
+ SPLToken(
+ name: 'Medtronic xStock',
+ symbol: 'MDTx',
+ mintAddress: 'XsDgw22qRLTv5Uwuzn6T63cW69exG41T6gwQhEK22u2',
+ decimal: 8,
+ mint: 'mdtx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/mdtx.webp',
+ ),
+ SPLToken(
+ name: 'Merck xStock',
+ symbol: 'MRKx',
+ mintAddress: 'XsnQnU7AdbRZYe2akqqpibDdXjkieGFfSkbkjX1Sd1X',
+ decimal: 8,
+ mint: 'mrkx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/mrkx.webp',
+ ),
+ SPLToken(
+ name: 'Meta xStock',
+ symbol: 'METAx',
+ mintAddress: 'Xsa62P5mvPszXL1krVUnU5ar38bBSVcWAB6fmPCo5Zu',
+ decimal: 8,
+ mint: 'metax',
+ enabled: false,
+ iconPath: 'assets/images/stocks/metax.webp',
+ ),
+ SPLToken(
+ name: 'Microsoft xStock',
+ symbol: 'MSFTx',
+ mintAddress: 'XspzcW1PRtgf6Wj92HCiZdjzKCyFekVD8P5Ueh3dRMX',
+ decimal: 8,
+ mint: 'msftx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/msftx.webp',
+ ),
+ SPLToken(
+ name: 'MicroStrategy xStock',
+ symbol: 'MSTRx',
+ mintAddress: 'XsP7xzNPvEHS1m6qfanPUGjNmdnmsLKEoNAnHjdxxyZ',
+ decimal: 8,
+ mint: 'mstrx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/mstrx.webp',
+ ),
+ SPLToken(
+ name: 'Nasdaq xStock',
+ symbol: 'QQQx',
+ mintAddress: 'Xs8S1uUs1zvS2p7iwtsG3b6fkhpvmwz4GYU3gWAmWHZ',
+ decimal: 8,
+ mint: 'qqqx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/qqqx.webp',
+ ),
+ SPLToken(
+ name: 'Netflix xStock',
+ symbol: 'NFLXx',
+ mintAddress: 'XsEH7wWfJJu2ZT3UCFeVfALnVA6CP5ur7Ee11KmzVpL',
+ decimal: 8,
+ mint: 'nflxx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/nflxx.webp',
+ ),
+ SPLToken(
+ name: 'Novo Nordisk xStock',
+ symbol: 'NVOx',
+ mintAddress: 'XsfAzPzYrYjd4Dpa9BU3cusBsvWfVB9gBcyGC87S57n',
+ decimal: 8,
+ mint: 'nvox',
+ enabled: false,
+ iconPath: 'assets/images/stocks/nvox.webp',
+ ),
+ SPLToken(
+ name: 'NVIDIA xStock',
+ symbol: 'NVDAx',
+ mintAddress: 'Xsc9qvGR1efVDFGLrVsmkzv3qi45LTBjeUKSPmx9qEh',
+ decimal: 8,
+ mint: 'nvdax',
+ enabled: false,
+ iconPath: 'assets/images/stocks/nvdax.webp',
+ ),
+ SPLToken(
+ name: 'OPEN xStock',
+ symbol: 'OPENx',
+ mintAddress: 'XsGtpmjhmC8kyjVSWL4VicGu36ceq9u55PTgF8bhGv6',
+ decimal: 8,
+ mint: 'openx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/openx.webp',
+ ),
+ SPLToken(
+ name: 'Oracle xStock',
+ symbol: 'ORCLx',
+ mintAddress: 'XsjFwUPiLofddX5cWFHW35GCbXcSu1BCUGfxoQAQjeL',
+ decimal: 8,
+ mint: 'orclx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/orclx.webp',
+ ),
+ SPLToken(
+ name: 'Palantir xStock',
+ symbol: 'PLTRx',
+ mintAddress: 'XsoBhf2ufR8fTyNSjqfU71DYGaE6Z3SUGAidpzriAA4',
+ decimal: 8,
+ mint: 'pltrx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/pltrx.webp',
+ ),
+ SPLToken(
+ name: 'PepsiCo xStock',
+ symbol: 'PEPx',
+ mintAddress: 'Xsv99frTRUeornyvCfvhnDesQDWuvns1M852Pez91vF',
+ decimal: 8,
+ mint: 'pepx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/pepx.webp',
+ ),
+ SPLToken(
+ name: 'Pfizer xStock',
+ symbol: 'PFEx',
+ mintAddress: 'XsAtbqkAP1HJxy7hFDeq7ok6yM43DQ9mQ1Rh861X8rw',
+ decimal: 8,
+ mint: 'pfex',
+ enabled: false,
+ iconPath: 'assets/images/stocks/pfex.webp',
+ ),
+ SPLToken(
+ name: 'Philip Morris xStock',
+ symbol: 'PMx',
+ mintAddress: 'Xsba6tUnSjDae2VcopDB6FGGDaxRrewFCDa5hKn5vT3',
+ decimal: 8,
+ mint: 'pmx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/pmx.webp',
+ ),
+ SPLToken(
+ name: 'Procter & Gamble xStock',
+ symbol: 'PGx',
+ mintAddress: 'XsYdjDjNUygZ7yGKfQaB6TxLh2gC6RRjzLtLAGJrhzV',
+ decimal: 8,
+ mint: 'pgx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/pgx.webp',
+ ),
+ SPLToken(
+ name: 'Robinhood xStock',
+ symbol: 'HOODx',
+ mintAddress: 'XsvNBAYkrDRNhA7wPHQfX3ZUXZyZLdnCQDfHZ56bzpg',
+ decimal: 8,
+ mint: 'hoodx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/hoodx.webp',
+ ),
+ SPLToken(
+ name: 'Salesforce xStock',
+ symbol: 'CRMx',
+ mintAddress: 'XsczbcQ3zfcgAEt9qHQES8pxKAVG5rujPSHQEXi4kaN',
+ decimal: 8,
+ mint: 'crmx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/crmx.webp',
+ ),
+ SPLToken(
+ name: 'SP500 xStock',
+ symbol: 'SPYx',
+ mintAddress: 'XsoCS1TfEyfFhfvj8EtZ528L3CaKBDBRqRapnBbDF2W',
+ decimal: 8,
+ mint: 'spyx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/spyx.webp',
+ ),
+ SPLToken(
+ name: 'TBLL xStock',
+ symbol: 'TBLLx',
+ mintAddress: 'XsqBC5tcVQLYt8wqGCHRnAUUecbRYXoJCReD6w7QEKp',
+ decimal: 8,
+ mint: 'tbllx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/tbllx.webp',
+ ),
+ SPLToken(
+ name: 'Tesla xStock',
+ symbol: 'TSLAx',
+ mintAddress: 'XsDoVfqeBukxuZHWhdvWHBhgEHjGNst4MLodqsJHzoB',
+ decimal: 8,
+ mint: 'tslax',
+ enabled: false,
+ iconPath: 'assets/images/stocks/tslax.webp',
+ ),
+ SPLToken(
+ name: 'Thermo Fisher xStock',
+ symbol: 'TMOx',
+ mintAddress: 'Xs8drBWy3Sd5QY3aifG9kt9KFs2K3PGZmx7jWrsrk57',
+ decimal: 8,
+ mint: 'tmox',
+ enabled: false,
+ iconPath: 'assets/images/stocks/tmox.webp',
+ ),
+ SPLToken(
+ name: 'TON xStock',
+ symbol: 'TONXx',
+ mintAddress: 'XscE4GUcsYhcyZu5ATiGUMmhxYa1D5fwbpJw4K6K4dp',
+ decimal: 8,
+ mint: 'tonxx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/tonxx.webp',
+ ),
+ SPLToken(
+ name: 'TQQQ xStock',
+ symbol: 'TQQQx',
+ mintAddress: 'XsjQP3iMAaQ3kQScQKthQpx9ALRbjKAjQtHg6TFomoc',
+ decimal: 8,
+ mint: 'tqqqx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/tqqqx.webp',
+ ),
+ SPLToken(
+ name: 'UnitedHealth xStock',
+ symbol: 'UNHx',
+ mintAddress: 'XszvaiXGPwvk2nwb3o9C1CX4K6zH8sez11E6uyup6fe',
+ decimal: 8,
+ mint: 'unhx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/unhx.webp',
+ ),
+ SPLToken(
+ name: 'Vanguard xStock',
+ symbol: 'VTIx',
+ mintAddress: 'XsssYEQjzxBCFgvYFFNuhJFBeHNdLWYeUSP8F45cDr9',
+ decimal: 8,
+ mint: 'vtix',
+ enabled: false,
+ iconPath: 'assets/images/stocks/vtix.webp',
+ ),
+ SPLToken(
+ name: 'Visa xStock',
+ symbol: 'Vx',
+ mintAddress: 'XsqgsbXwWogGJsNcVZ3TyVouy2MbTkfCFhCGGGcQZ2p',
+ decimal: 8,
+ mint: 'vx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/vx.webp',
+ ),
+ SPLToken(
+ name: 'Walmart xStock',
+ symbol: 'WMTx',
+ mintAddress: 'Xs151QeqTCiuKtinzfRATnUESM2xTU6V9Wy8Vy538ci',
+ decimal: 8,
+ mint: 'wmtx',
+ enabled: false,
+ iconPath: 'assets/images/stocks/wmtx.webp',
+ ),
];
List<SPLToken> get initialSPLTokens => _defaultTokens.map((token) {
String? iconPath;
- if (token.iconPath != null) return token;
-
- try {
- iconPath = CryptoCurrency.all
- .firstWhere((element) => element.title.toUpperCase() == token.symbol.toUpperCase())
- .iconPath;
- } catch (_) {}
+ if (token.iconPath?.isEmpty ?? true) {
+ try {
+ iconPath = CryptoCurrency.all
+ .firstWhere((element) => element.title.toUpperCase() == token.symbol.toUpperCase())
+ .iconPath;
+ } catch (_) {}
+ } else {
+ iconPath = token.iconPath;
+ }
- return SPLToken.copyWith(token, iconPath, 'SOL');
+ return SPLToken.copyWith(token, icon: iconPath, tag: 'SOL');
}).toList();
}
diff --git a/cw_solana/lib/solana_wallet.dart b/cw_solana/lib/solana_wallet.dart
index 39f4f6b..3085dbb 100644
--- a/cw_solana/lib/solana_wallet.dart
+++ b/cw_solana/lib/solana_wallet.dart
@@ -506,7 +506,12 @@ abstract class SolanaWalletBase
final initialSPLTokens = DefaultSPLTokens().initialSPLTokens;
for (var token in initialSPLTokens) {
- splTokensBox.put(token.mintAddress, token);
+ if (!splTokensBox.containsKey(token.mintAddress)) {
+ splTokensBox.put(token.mintAddress, token);
+ } else { // update existing token
+ final existingToken = splTokensBox.get(token.mintAddress);
+ splTokensBox.put(token.mintAddress, SPLToken.copyWith(token, enabled: existingToken!.enabled));
+ }
}
}
diff --git a/cw_solana/lib/solana_wallet_service.dart b/cw_solana/lib/solana_wallet_service.dart
index a33cebb..faeb24a 100644
--- a/cw_solana/lib/solana_wallet_service.dart
+++ b/cw_solana/lib/solana_wallet_service.dart
@@ -64,6 +64,7 @@ class SolanaWalletService extends WalletService<SolanaNewWalletCredentials,
);
await wallet.init();
+ wallet.addInitialTokens();
await wallet.save();
saveBackup(name);
return wallet;
@@ -78,6 +79,7 @@ class SolanaWalletService extends WalletService<SolanaNewWalletCredentials,
);
await wallet.init();
+ wallet.addInitialTokens();
await wallet.save();
return wallet;
}
diff --git a/cw_tron/lib/default_tron_tokens.dart b/cw_tron/lib/default_tron_tokens.dart
index 8e5b9fd..49c8375 100644
--- a/cw_tron/lib/default_tron_tokens.dart
+++ b/cw_tron/lib/default_tron_tokens.dart
@@ -91,13 +91,17 @@ class DefaultTronTokens {
List<TronToken> get initialTronTokens => _defaultTokens.map((token) {
String? iconPath;
- try {
- iconPath = CryptoCurrency.all
- .firstWhere((element) =>
- element.title.toUpperCase() == token.symbol.split(".").first.toUpperCase())
- .iconPath;
- } catch (_) {}
+ if (token.iconPath?.isEmpty ?? true) {
+ try {
+ iconPath = CryptoCurrency.all
+ .firstWhere((element) =>
+ element.title.toUpperCase() == token.symbol.split(".").first.toUpperCase())
+ .iconPath;
+ } catch (_) {}
+ } else {
+ iconPath = token.iconPath;
+ }
- return TronToken.copyWith(token, iconPath, 'TRX');
+ return TronToken.copyWith(token, icon: iconPath, tag: 'TRX');
}).toList();
}
diff --git a/cw_tron/lib/tron_wallet.dart b/cw_tron/lib/tron_wallet.dart
index c857d01..8bd1f97 100644
--- a/cw_tron/lib/tron_wallet.dart
+++ b/cw_tron/lib/tron_wallet.dart
@@ -178,7 +178,12 @@ abstract class TronWalletBase
final initialTronTokens = DefaultTronTokens().initialTronTokens;
for (var token in initialTronTokens) {
- tronTokensBox.put(token.contractAddress, token);
+ if (!tronTokensBox.containsKey(token.contractAddress)) {
+ tronTokensBox.put(token.contractAddress, token);
+ } else { // update existing token
+ final existingToken = tronTokensBox.get(token.contractAddress);
+ tronTokensBox.put(token.contractAddress, TronToken.copyWith(token, enabled: existingToken!.enabled));
+ }
}
}
diff --git a/devtools_options.yaml b/devtools_options.yaml
new file mode 100644
index 0000000..fa0b357
--- /dev/null
+++ b/devtools_options.yaml
@@ -0,0 +1,3 @@
+description: This file stores settings for Dart & Flutter DevTools.
+documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
+extensions:
diff --git a/integration_test/components/common_test_flows.dart b/integration_test/components/common_test_flows.dart
index 30cfe4d..53baf5d 100644
--- a/integration_test/components/common_test_flows.dart
+++ b/integration_test/components/common_test_flows.dart
@@ -110,7 +110,7 @@ class CommonTestFlows {
void confirmAllAvailableWalletTypeIconsDisplayCorrectly() {
for (var walletType in availableWalletTypes) {
- final imageUrl = walletTypeToCryptoCurrency(walletType).normalizedIconPath;
+ final imageUrl = walletTypeToCryptoCurrency(walletType).iconPath;
final walletIconFinder = find.image(
Image.asset(
diff --git a/lib/main.dart b/lib/main.dart
index ffc255b..beaa152 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -272,7 +272,7 @@ Future<void> initializeAppConfigs({bool loadWallet = true}) async {
payjoinSessionSource: payjoinSessionSource,
anonpayInvoiceInfo: anonpayInvoiceInfo,
havenSeedStore: havenSeedStore,
- initialMigrationVersion: 51,
+ initialMigrationVersion: 52,
);
}
diff --git a/lib/src/screens/connect_device/select_hardware_wallet_account_page.dart b/lib/src/screens/connect_device/select_hardware_wallet_account_page.dart
index 691987a..6e88f4b 100644
--- a/lib/src/screens/connect_device/select_hardware_wallet_account_page.dart
+++ b/lib/src/screens/connect_device/select_hardware_wallet_account_page.dart
@@ -149,7 +149,7 @@ class _SelectHardwareWalletAccountFormState extends State<SelectHardwareWalletAc
padding: EdgeInsets.only(top: 10),
child: SelectButton(
image: Image.asset(
- walletTypeToCryptoCurrency(_walletHardwareRestoreVM.type).normalizedIconPath ??
+ walletTypeToCryptoCurrency(_walletHardwareRestoreVM.type).iconPath ??
'',
height: 24,
width: 24,
diff --git a/lib/src/screens/new_wallet/new_wallet_type_page.dart b/lib/src/screens/new_wallet/new_wallet_type_page.dart
index 5aab45d..584a7cc 100644
--- a/lib/src/screens/new_wallet/new_wallet_type_page.dart
+++ b/lib/src/screens/new_wallet/new_wallet_type_page.dart
@@ -143,7 +143,7 @@ class WalletTypeFormState extends State<WalletTypeForm> {
child: SelectButton(
key: ValueKey('new_wallet_type_${type.name}_button_key'),
image: Image.asset(
- walletTypeToCryptoCurrency(type).normalizedIconPath ?? '',
+ walletTypeToCryptoCurrency(type).iconPath ?? '',
height: 24,
width: 24,
),
diff --git a/lib/src/screens/new_wallet/wallet_group_display_page.dart b/lib/src/screens/new_wallet/wallet_group_display_page.dart
index 7c68bb1..bddb8f4 100644
--- a/lib/src/screens/new_wallet/wallet_group_display_page.dart
+++ b/lib/src/screens/new_wallet/wallet_group_display_page.dart
@@ -95,7 +95,7 @@ class WalletGroupsDisplayBody extends StatelessWidget {
isSelected:
walletGroupsDisplayViewModel.selectedSingleWallet == wallet,
leadingWidget: Image.asset(
- walletTypeToCryptoCurrency(wallet.type).normalizedIconPath!,
+ walletTypeToCryptoCurrency(wallet.type).iconPath!,
width: 32,
height: 32,
),
diff --git a/lib/src/screens/new_wallet/widgets/grouped_wallet_expansion_tile.dart b/lib/src/screens/new_wallet/widgets/grouped_wallet_expansion_tile.dart
index 10fd423..4137398 100644
--- a/lib/src/screens/new_wallet/widgets/grouped_wallet_expansion_tile.dart
+++ b/lib/src/screens/new_wallet/widgets/grouped_wallet_expansion_tile.dart
@@ -123,7 +123,7 @@ class GroupedWalletExpansionTile extends StatelessWidget {
: SizedBox(width: 7),
SizedBox(width: 24),
Image.asset(
- walletTypeToCryptoCurrency(item.type).normalizedIconPath!,
+ walletTypeToCryptoCurrency(item.type).iconPath!,
width: 32,
height: 32,
),
diff --git a/lib/src/widgets/bottom_sheet/wallet_switcher_bottom_sheet.dart b/lib/src/widgets/bottom_sheet/wallet_switcher_bottom_sheet.dart
index 1b4886a..1cab364 100644
--- a/lib/src/widgets/bottom_sheet/wallet_switcher_bottom_sheet.dart
+++ b/lib/src/widgets/bottom_sheet/wallet_switcher_bottom_sheet.dart
@@ -95,7 +95,7 @@ class _WalletSwitcherContent extends StatelessWidget {
child: Row(
children: [
Image.asset(
- walletTypeToCryptoCurrency(wallet.type).normalizedIconPath!,
+ walletTypeToCryptoCurrency(wallet.type).iconPath!,
width: 32,
height: 32,
),
diff --git a/pubspec_base.yaml b/pubspec_base.yaml
index db229a3..5b4ae0d 100644
--- a/pubspec_base.yaml
+++ b/pubspec_base.yaml
@@ -220,6 +220,7 @@ flutter:
- assets/images/flags/
- assets/images/hardware_wallet/
- assets/images/crypto/
+ - assets/images/stocks/
- assets/node_list.yml
- assets/haven_node_list.yml
- assets/bitcoin_electrum_server_list.yml
diff --git a/scripts/android/app_env.sh b/scripts/android/app_env.sh
index b5be38a..37c0c51 100644
--- a/scripts/android/app_env.sh
+++ b/scripts/android/app_env.sh
@@ -14,15 +14,15 @@ TYPES=($MONERO_COM $CAKEWALLET)
APP_ANDROID_TYPE=$1
MONERO_COM_NAME="Monero.com"
-MONERO_COM_VERSION="5.4.2"
-MONERO_COM_BUILD_NUMBER=4138
+MONERO_COM_VERSION="5.5.0"
+MONERO_COM_BUILD_NUMBER=4139
MONERO_COM_BUNDLE_ID="com.monero.app"
MONERO_COM_PACKAGE="com.monero.app"
MONERO_COM_SCHEME="monero.com"
CAKEWALLET_NAME="Cake Wallet"
-CAKEWALLET_VERSION="5.4.2"
-CAKEWALLET_BUILD_NUMBER=4278
+CAKEWALLET_VERSION="5.5.0"
+CAKEWALLET_BUILD_NUMBER=4280
CAKEWALLET_BUNDLE_ID="com.cakewallet.cake_wallet"
CAKEWALLET_PACKAGE="com.cakewallet.cake_wallet"
CAKEWALLET_SCHEME="cakewallet"
diff --git a/scripts/build_bitbox_flutter.sh b/scripts/build_bitbox_flutter.sh
index d21014a..65874e9 100755
--- a/scripts/build_bitbox_flutter.sh
+++ b/scripts/build_bitbox_flutter.sh
@@ -2,6 +2,7 @@
git clone https://github.com/konstantinullrich/bitbox_flutter
cd bitbox_flutter
+git checkout 5a6e6dd388ef64003f86094af80d5453518b601d
bash ./build_bindings.sh
FILE=api.aar
diff --git a/scripts/ios/app_env.sh b/scripts/ios/app_env.sh
index c7e94b8..519664b 100644
--- a/scripts/ios/app_env.sh
+++ b/scripts/ios/app_env.sh
@@ -12,13 +12,13 @@ TYPES=($MONERO_COM $CAKEWALLET)
APP_IOS_TYPE=$1
MONERO_COM_NAME="Monero.com"
-MONERO_COM_VERSION="5.4.2"
-MONERO_COM_BUILD_NUMBER=139
+MONERO_COM_VERSION="5.5.0"
+MONERO_COM_BUILD_NUMBER=140
MONERO_COM_BUNDLE_ID="com.cakewallet.monero"
CAKEWALLET_NAME="Cake Wallet"
-CAKEWALLET_VERSION="5.4.3"
-CAKEWALLET_BUILD_NUMBER=340
+CAKEWALLET_VERSION="5.5.0"
+CAKEWALLET_BUILD_NUMBER=342
CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet"
diff --git a/scripts/linux/app_env.sh b/scripts/linux/app_env.sh
index 88bea85..05b766b 100755
--- a/scripts/linux/app_env.sh
+++ b/scripts/linux/app_env.sh
@@ -14,8 +14,8 @@ if [ -n "$1" ]; then
fi
CAKEWALLET_NAME="Cake Wallet"
-CAKEWALLET_VERSION="5.4.2"
-CAKEWALLET_BUILD_NUMBER=69
+CAKEWALLET_VERSION="5.5.0"
+CAKEWALLET_BUILD_NUMBER=70
if ! [[ " ${TYPES[*]} " =~ " ${APP_LINUX_TYPE} " ]]; then
echo "Wrong app type."
diff --git a/scripts/macos/app_env.sh b/scripts/macos/app_env.sh
index e6891b9..5e56e44 100755
--- a/scripts/macos/app_env.sh
+++ b/scripts/macos/app_env.sh
@@ -16,13 +16,13 @@ if [ -n "$1" ]; then
fi
MONERO_COM_NAME="Monero.com"
-MONERO_COM_VERSION="5.4.2"
-MONERO_COM_BUILD_NUMBER=67
+MONERO_COM_VERSION="5.5.0"
+MONERO_COM_BUILD_NUMBER=68
MONERO_COM_BUNDLE_ID="com.cakewallet.monero"
CAKEWALLET_NAME="Cake Wallet"
-CAKEWALLET_VERSION="5.4.3"
-CAKEWALLET_BUILD_NUMBER=133
+CAKEWALLET_VERSION="5.5.0"
+CAKEWALLET_BUILD_NUMBER=134
CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet"
if ! [[ " ${TYPES[*]} " =~ " ${APP_MACOS_TYPE} " ]]; then
diff --git a/scripts/windows/build_exe_installer.iss b/scripts/windows/build_exe_installer.iss
index 64febf4..6d52fd0 100644
--- a/scripts/windows/build_exe_installer.iss
+++ b/scripts/windows/build_exe_installer.iss
@@ -1,5 +1,5 @@
#define MyAppName "Cake Wallet"
-#define MyAppVersion "5.4.2"
+#define MyAppVersion "5.5.0"
#define MyAppPublisher "Cake Labs LLC"
#define MyAppURL "https://cakewallet.com/"
#define MyAppExeName "CakeWallet.exe"
Why this scored 18/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.