v5.5.0 Release candidate (#2574)

* v5.5.0 Release candidate

* RC contents:
- Trezor
- Bitbox
- Base
- Hardware/Air-gapped wallets flow enhancements
- New Theme
- UI enhancements
- Bug fixes

fixes:
- Disable LTC for bitbox
- Fix missing coins icons

* RC contents:
- Trezor
- Bitbox
- Base
- Hardware/Air-gapped wallets flow enhancements
- New Theme
- UI enhancements
- Bug fixes

fixes:
- Disable LTC for bitbox
- Add USDE icon
- Fix missing images

* RC contents:
- Trezor
- Bitbox
- Base
- Hardware/Air-gapped wallets flow enhancements
- New Theme
- UI enhancements
- Bug fixes

fixes:
- Disable LTC for bitbox
- Add USDE icon
- Fix missing images
- Refactor code and remove `normalizedIconPath`

* RC contents:
- Trezor
- Bitbox
- Base
- Hardware/Air-gapped wallets flow enhancements
- New Theme
- UI enhancements
- Bug fixes

fixes:
- Disable LTC for bitbox
- Add USDE icon
- Fix missing images
- Refactor code and remove `normalizedIconPath`

* RC contents:
- Trezor
- Bitbox
- Base
- Hardware/Air-gapped wallets flow enhancements
- New Theme
- UI enhancements
- Bug fixes

fixes:
- Disable LTC for bitbox
- Add USDE icon
- Fix missing images
- Refactor code and remove `normalizedIconPath`

* - Add xstocks to existing wallets
- Add xstocks initial icons

* - Add All xStocks icons
- Fix All tokens issues and persistent
This commit is contained in:
Omar Hatem
2025-10-15 05:26:56 +03:00
committed by GitHub
parent 03c3a3624c
commit b1ee2acdc0
108 changed files with 1172 additions and 487 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 928 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 916 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 942 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

+5 -2
View File
@@ -1,3 +1,6 @@
Connectivity improvements Add support for Trezor
UI enhancements Add support for Bitbox
Hardware wallets flow enhancements
New Themes
New designs
Bug fixes Bug fixes
+6 -3
View File
@@ -1,4 +1,7 @@
Payjoin enhancements Add Base coin wallet
Connectivity improvements Add support for Trezor
UI enhancements Add support for Bitbox
Hardware wallets flow enhancements
New Themes
New designs
Bug fixes Bug fixes
+3
View File
@@ -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:
+6 -9
View File
@@ -32,24 +32,21 @@ class BaseWallet extends EVMChainWallet {
@override @override
Future<void> initErc20TokensBox() async { Future<void> initErc20TokensBox() async {
final boxName = "${walletInfo.name.replaceAll(" ", "_")}_ ${Erc20Token.baseBoxName}"; final boxName = "${walletInfo.name.replaceAll(" ", "_")}_${Erc20Token.baseBoxName}";
evmChainErc20TokensBox = await CakeHive.openBox<Erc20Token>(boxName); evmChainErc20TokensBox = await CakeHive.openBox<Erc20Token>(boxName);
} }
@override @override
void addInitialTokens([bool isMigration = false]) { void addInitialTokens() {
final initialErc20Tokens = DefaultBaseErc20Tokens().initialBaseErc20Tokens; final initialErc20Tokens = DefaultBaseErc20Tokens().initialBaseErc20Tokens;
for (final token in initialErc20Tokens) { for (final token in initialErc20Tokens) {
if (evmChainErc20TokensBox.containsKey(token.contractAddress)) { if (!evmChainErc20TokensBox.containsKey(token.contractAddress)) {
evmChainErc20TokensBox.put(token.contractAddress, token);
} else { // update existing token
final existingToken = evmChainErc20TokensBox.get(token.contractAddress); final existingToken = evmChainErc20TokensBox.get(token.contractAddress);
if (existingToken?.tag != token.tag) { evmChainErc20TokensBox.put(token.contractAddress, Erc20Token.copyWith(token, enabled: existingToken!.enabled));
evmChainErc20TokensBox.put(token.contractAddress, token);
}
} else {
if (isMigration) token.enabled = false;
evmChainErc20TokensBox.put(token.contractAddress, token);
} }
} }
} }
+2 -2
View File
@@ -56,7 +56,7 @@ class BaseWalletService extends EVMChainWalletService<BaseWallet> {
); );
await wallet.init(); await wallet.init();
wallet.addInitialTokens(true); wallet.addInitialTokens();
await wallet.save(); await wallet.save();
saveBackup(name); saveBackup(name);
return wallet; return wallet;
@@ -71,7 +71,7 @@ class BaseWalletService extends EVMChainWalletService<BaseWallet> {
); );
await wallet.init(); await wallet.init();
wallet.addInitialTokens(true); wallet.addInitialTokens();
await wallet.save(); await wallet.save();
return wallet; return wallet;
} }
+5 -1
View File
@@ -56,12 +56,16 @@ class DefaultBaseErc20Tokens {
List<Erc20Token> get initialBaseErc20Tokens => _defaultTokens.map((token) { List<Erc20Token> get initialBaseErc20Tokens => _defaultTokens.map((token) {
String? iconPath; String? iconPath;
if (token.iconPath?.isEmpty ?? true) {
try { try {
iconPath = CryptoCurrency.all iconPath = CryptoCurrency.all
.firstWhere((element) => element.title.toUpperCase() == token.symbol.toUpperCase()) .firstWhere((element) => element.title.toUpperCase() == token.symbol.toUpperCase())
.iconPath; .iconPath;
} catch (_) {} } catch (_) {}
} else {
iconPath = token.iconPath;
}
return Erc20Token.copyWith(token, iconPath, 'BASE'); return Erc20Token.copyWith(token, icon: iconPath, tag: 'BASE');
}).toList(); }).toList();
} }
+2
View File
@@ -116,6 +116,7 @@ class CryptoCurrency extends EnumerableItem<int> with Serializable<int> implemen
CryptoCurrency.ndeps, CryptoCurrency.ndeps,
CryptoCurrency.deps, CryptoCurrency.deps,
CryptoCurrency.baseEth, CryptoCurrency.baseEth,
CryptoCurrency.usde,
]; ];
static const havenCurrencies = [ 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 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 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 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 = static final Map<int, CryptoCurrency> _rawCurrencyMap =
[...all, ...havenCurrencies].fold<Map<int, CryptoCurrency>>(<int, CryptoCurrency>{}, (acc, item) { [...all, ...havenCurrencies].fold<Map<int, CryptoCurrency>>(<int, CryptoCurrency>{}, (acc, item) {
@@ -43,12 +43,3 @@ CryptoCurrency walletTypeToCryptoCurrency(WalletType type, {bool isTestnet = fal
'Unexpected wallet type: ${type.toString()} for CryptoCurrency walletTypeToCryptoCurrency'); '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;
}
}
+4 -4
View File
@@ -47,14 +47,14 @@ class Erc20Token extends CryptoCurrency with HiveObjectMixin {
isPotentialScam: isPotentialScam, 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.name = other.name,
this.symbol = other.symbol, this.symbol = other.symbol,
this.contractAddress = other.contractAddress, this.contractAddress = other.contractAddress,
this.decimal = other.decimal, this.decimal = other.decimal,
this._enabled = other.enabled, this._enabled = enabled ?? other.enabled,
this.tag = tag, this.tag = tag ?? other.tag,
this.iconPath = icon, this.iconPath = icon ?? other.iconPath,
this.isPotentialScam = other.isPotentialScam, this.isPotentialScam = other.isPotentialScam,
super( super(
name: other.name, name: other.name,
@@ -13,7 +13,7 @@ enum DeviceConnectionType {
case HardwareWalletType.bitbox: case HardwareWalletType.bitbox:
isSupported = [ isSupported = [
WalletType.bitcoin, WalletType.bitcoin,
WalletType.litecoin, // WalletType.litecoin,
WalletType.ethereum, WalletType.ethereum,
WalletType.polygon WalletType.polygon
].contains(walletType); ].contains(walletType);
+4 -4
View File
@@ -83,15 +83,15 @@ class SPLToken extends CryptoCurrency with HiveObjectMixin {
@override @override
set enabled(bool value) => _enabled = value; 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, : name = other.name,
symbol = other.symbol, symbol = other.symbol,
mintAddress = other.mintAddress, mintAddress = other.mintAddress,
decimal = other.decimal, decimal = other.decimal,
_enabled = other.enabled, _enabled = enabled ?? other.enabled,
mint = other.mint, mint = other.mint,
tag = other.tag, tag = tag ?? other.tag,
iconPath = icon, iconPath = icon ?? other.iconPath,
isPotentialScam = other.isPotentialScam, isPotentialScam = other.isPotentialScam,
super( super(
title: other.symbol.toUpperCase(), title: other.symbol.toUpperCase(),
+2 -2
View File
@@ -56,12 +56,12 @@ class TronToken extends CryptoCurrency with HiveObjectMixin {
isPotentialScam: isPotentialScam, isPotentialScam: isPotentialScam,
); );
TronToken.copyWith(TronToken other, String? icon, String? tag) TronToken.copyWith(TronToken other, {String? icon, String? tag, bool? enabled})
: name = other.name, : name = other.name,
symbol = other.symbol, symbol = other.symbol,
contractAddress = other.contractAddress, contractAddress = other.contractAddress,
decimal = other.decimal, decimal = other.decimal,
_enabled = other.enabled, _enabled = enabled ?? other.enabled,
tag = tag ?? other.tag, tag = tag ?? other.tag,
iconPath = icon ?? other.iconPath, iconPath = icon ?? other.iconPath,
isPotentialScam = other.isPotentialScam, isPotentialScam = other.isPotentialScam,
+3
View File
@@ -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:
@@ -332,16 +332,532 @@ class DefaultEthereumErc20Tokens {
decimal: 8, decimal: 8,
enabled: false, 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) { List<Erc20Token> get initialErc20Tokens => _defaultTokens.map((token) {
String? iconPath; String? iconPath;
if (token.iconPath?.isEmpty ?? true) {
try { try {
iconPath = CryptoCurrency.all iconPath = CryptoCurrency.all
.firstWhere((element) => element.title.toUpperCase() == token.symbol.toUpperCase()) .firstWhere((element) => element.title.toUpperCase() == token.symbol.toUpperCase())
.iconPath; .iconPath;
} catch (_) {} } catch (_) {}
} else {
iconPath = token.iconPath;
}
return Erc20Token.copyWith(token, iconPath, 'ETH'); return Erc20Token.copyWith(token, icon: iconPath, tag: 'ETH');
}).toList(); }).toList();
} }
+4 -2
View File
@@ -31,13 +31,15 @@ class EthereumWallet extends EVMChainWallet {
}) : super(nativeCurrency: CryptoCurrency.eth); }) : super(nativeCurrency: CryptoCurrency.eth);
@override @override
void addInitialTokens([bool isMigration = false]) { void addInitialTokens() {
final initialErc20Tokens = DefaultEthereumErc20Tokens().initialErc20Tokens; final initialErc20Tokens = DefaultEthereumErc20Tokens().initialErc20Tokens;
for (final token in initialErc20Tokens) { for (final token in initialErc20Tokens) {
if (!evmChainErc20TokensBox.containsKey(token.contractAddress)) { if (!evmChainErc20TokensBox.containsKey(token.contractAddress)) {
if (isMigration) token.enabled = false;
evmChainErc20TokensBox.put(token.contractAddress, token); 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));
} }
} }
} }
+2 -2
View File
@@ -53,7 +53,7 @@ class EthereumWalletService extends EVMChainWalletService<EthereumWallet> {
); );
await wallet.init(); await wallet.init();
wallet.addInitialTokens(true); wallet.addInitialTokens();
await wallet.save(); await wallet.save();
saveBackup(name); saveBackup(name);
return wallet; return wallet;
@@ -67,7 +67,7 @@ class EthereumWalletService extends EVMChainWalletService<EthereumWallet> {
encryptionFileUtils: encryptionFileUtilsFor(isDirect), encryptionFileUtils: encryptionFileUtilsFor(isDirect),
); );
await wallet.init(); await wallet.init();
wallet.addInitialTokens(true); wallet.addInitialTokens();
await wallet.save(); await wallet.save();
return wallet; return wallet;
} }
+1 -1
View File
@@ -139,7 +139,7 @@ abstract class EVMChainWalletBase
//! Methods to be overridden by every child //! Methods to be overridden by every child
void addInitialTokens([bool isMigration]); void addInitialTokens();
// Future<EVMChainWallet> open({ // Future<EVMChainWallet> open({
// required String name, // required String name,
+3
View File
@@ -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:
@@ -77,13 +77,17 @@ class DefaultPolygonErc20Tokens {
List<Erc20Token> get initialPolygonErc20Tokens => _defaultTokens.map((token) { List<Erc20Token> get initialPolygonErc20Tokens => _defaultTokens.map((token) {
String? iconPath; String? iconPath;
if (token.iconPath?.isEmpty ?? true) {
try { try {
iconPath = CryptoCurrency.all iconPath = CryptoCurrency.all
.firstWhere((element) => .firstWhere((element) =>
element.title.toUpperCase() == token.symbol.split(".").first.toUpperCase()) element.title.toUpperCase() == token.symbol.split(".").first.toUpperCase())
.iconPath; .iconPath;
} catch (_) {} } catch (_) {}
} else {
iconPath = token.iconPath;
}
return Erc20Token.copyWith(token, iconPath, 'POL'); return Erc20Token.copyWith(token, icon: iconPath, tag: 'POL');
}).toList(); }).toList();
} }
+5 -8
View File
@@ -41,18 +41,15 @@ class PolygonWallet extends EVMChainWallet {
} }
@override @override
void addInitialTokens([bool isMigration = false]) { void addInitialTokens() {
final initialErc20Tokens = DefaultPolygonErc20Tokens().initialPolygonErc20Tokens; final initialErc20Tokens = DefaultPolygonErc20Tokens().initialPolygonErc20Tokens;
for (final token in initialErc20Tokens) { for (final token in initialErc20Tokens) {
if (evmChainErc20TokensBox.containsKey(token.contractAddress)) { if (!evmChainErc20TokensBox.containsKey(token.contractAddress)) {
evmChainErc20TokensBox.put(token.contractAddress, token);
} else { // update existing token
final existingToken = evmChainErc20TokensBox.get(token.contractAddress); final existingToken = evmChainErc20TokensBox.get(token.contractAddress);
if (existingToken?.tag != token.tag) { evmChainErc20TokensBox.put(token.contractAddress, Erc20Token.copyWith(token, enabled: existingToken!.enabled));
evmChainErc20TokensBox.put(token.contractAddress, token);
}
} else {
if (isMigration) token.enabled = false;
evmChainErc20TokensBox.put(token.contractAddress, token);
} }
} }
} }
+1 -1
View File
@@ -55,7 +55,7 @@ class PolygonWalletService extends EVMChainWalletService<PolygonWallet> {
); );
await wallet.init(); await wallet.init();
wallet.addInitialTokens(true); wallet.addInitialTokens();
await wallet.save(); await wallet.save();
saveBackup(name); saveBackup(name);
return wallet; return wallet;
+203 -67
View File
@@ -105,454 +105,590 @@ class DefaultSPLTokens {
mintAddress: 'XsHtf5RpxsQ7jeJ9ivNewouZKJHbPxhPoEy6yYvULr7', mintAddress: 'XsHtf5RpxsQ7jeJ9ivNewouZKJHbPxhPoEy6yYvULr7',
decimal: 8, decimal: 8,
mint: 'abtx', mint: 'abtx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/abtx.webp',
),
SPLToken( SPLToken(
name: 'AbbVie xStock', name: 'AbbVie xStock',
symbol: 'ABBVx', symbol: 'ABBVx',
mintAddress: 'XswbinNKyPmzTa5CskMbCPvMW6G5CMnZXZEeQSSQoie', mintAddress: 'XswbinNKyPmzTa5CskMbCPvMW6G5CMnZXZEeQSSQoie',
decimal: 8, decimal: 8,
mint: 'abbvx', mint: 'abbvx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/abbv.webp',
),
SPLToken( SPLToken(
name: 'Accenture xStock', name: 'Accenture xStock',
symbol: 'ACNx', symbol: 'ACNx',
mintAddress: 'Xs5UJzmCRQ8DWZjskExdSQDnbE6iLkRu2jjrRAB1JSU', mintAddress: 'Xs5UJzmCRQ8DWZjskExdSQDnbE6iLkRu2jjrRAB1JSU',
decimal: 8, decimal: 8,
mint: 'acnx', mint: 'acnx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/acnx.webp',
),
SPLToken( SPLToken(
name: 'Alphabet xStock', name: 'Alphabet xStock',
symbol: 'GOOGLx', symbol: 'GOOGLx',
mintAddress: 'XsCPL9dNWBMvFtTmwcCA5v3xWPSMEBCszbQdiLLq6aN', mintAddress: 'XsCPL9dNWBMvFtTmwcCA5v3xWPSMEBCszbQdiLLq6aN',
decimal: 8, decimal: 8,
mint: 'googlx', mint: 'googlx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/googlx.webp',
),
SPLToken( SPLToken(
name: 'Amazon xStock', name: 'Amazon xStock',
symbol: 'AMZNx', symbol: 'AMZNx',
mintAddress: 'Xs3eBt7uRfJX8QUs4suhyU8p2M6DoUDrJyWBa8LLZsg', mintAddress: 'Xs3eBt7uRfJX8QUs4suhyU8p2M6DoUDrJyWBa8LLZsg',
decimal: 8, decimal: 8,
mint: 'amznx', mint: 'amznx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/amznx.webp',
),
SPLToken( SPLToken(
name: 'Amber xStock', name: 'Amber xStock',
symbol: 'AMBRx', symbol: 'AMBRx',
mintAddress: 'XsaQTCgebC2KPbf27KUhdv5JFvHhQ4GDAPURwrEhAzb', mintAddress: 'XsaQTCgebC2KPbf27KUhdv5JFvHhQ4GDAPURwrEhAzb',
decimal: 8, decimal: 8,
mint: 'ambrx', mint: 'ambrx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/ambrx.webp',
),
SPLToken( SPLToken(
name: 'Apple xStock', name: 'Apple xStock',
symbol: 'AAPLx', symbol: 'AAPLx',
mintAddress: 'XsbEhLAtcf6HdfpFZ5xEMdqW8nfAvcsP5bdudRLJzJp', mintAddress: 'XsbEhLAtcf6HdfpFZ5xEMdqW8nfAvcsP5bdudRLJzJp',
decimal: 8, decimal: 8,
mint: 'aaplx', mint: 'aaplx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/apple.webp',
),
SPLToken( SPLToken(
name: 'AppLovin xStock', name: 'AppLovin xStock',
symbol: 'APPx', symbol: 'APPx',
mintAddress: 'XsPdAVBi8Zc1xvv53k4JcMrQaEDTgkGqKYeh7AYgPHV', mintAddress: 'XsPdAVBi8Zc1xvv53k4JcMrQaEDTgkGqKYeh7AYgPHV',
decimal: 8, decimal: 8,
mint: 'appx', mint: 'appx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/appx.webp',
),
SPLToken( SPLToken(
name: 'AstraZeneca xStock', name: 'AstraZeneca xStock',
symbol: 'AZNx', symbol: 'AZNx',
mintAddress: 'Xs3ZFkPYT2BN7qBMqf1j1bfTeTm1rFzEFSsQ1z3wAKU', mintAddress: 'Xs3ZFkPYT2BN7qBMqf1j1bfTeTm1rFzEFSsQ1z3wAKU',
decimal: 8, decimal: 8,
mint: 'aznx', mint: 'aznx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/aznx.webp',
),
SPLToken( SPLToken(
name: 'Bank of America xStock', name: 'Bank of America xStock',
symbol: 'BACx', symbol: 'BACx',
mintAddress: 'XswsQk4duEQmCbGzfqUUWYmi7pV7xpJ9eEmLHXCaEQP', mintAddress: 'XswsQk4duEQmCbGzfqUUWYmi7pV7xpJ9eEmLHXCaEQP',
decimal: 8, decimal: 8,
mint: 'bacx', mint: 'bacx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/bacx.webp',
),
SPLToken( SPLToken(
name: 'Berkshire Hathaway xStock', name: 'Berkshire Hathaway xStock',
symbol: 'BRK.Bx', symbol: 'BRK.Bx',
mintAddress: 'Xs6B6zawENwAbWVi7w92rjazLuAr5Az59qgWKcNb45x', mintAddress: 'Xs6B6zawENwAbWVi7w92rjazLuAr5Az59qgWKcNb45x',
decimal: 8, decimal: 8,
mint: 'brkbx', mint: 'brkbx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/brkbx.webp',
),
SPLToken( SPLToken(
name: 'Broadcom xStock', name: 'Broadcom xStock',
symbol: 'AVGOx', symbol: 'AVGOx',
mintAddress: 'XsgSaSvNSqLTtFuyWPBhK9196Xb9Bbdyjj4fH3cPJGo', mintAddress: 'XsgSaSvNSqLTtFuyWPBhK9196Xb9Bbdyjj4fH3cPJGo',
decimal: 8, decimal: 8,
mint: 'avgox', mint: 'avgox',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/avgox.webp',
),
SPLToken( SPLToken(
name: 'Chevron xStock', name: 'Chevron xStock',
symbol: 'CVXx', symbol: 'CVXx',
mintAddress: 'XsNNMt7WTNA2sV3jrb1NNfNgapxRF5i4i6GcnTRRHts', mintAddress: 'XsNNMt7WTNA2sV3jrb1NNfNgapxRF5i4i6GcnTRRHts',
decimal: 8, decimal: 8,
mint: 'cvxx', mint: 'cvxx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/cvxx.webp',
),
SPLToken( SPLToken(
name: 'Circle xStock', name: 'Circle xStock',
symbol: 'CRCLx', symbol: 'CRCLx',
mintAddress: 'XsueG8BtpquVJX9LVLLEGuViXUungE6WmK5YZ3p3bd1', mintAddress: 'XsueG8BtpquVJX9LVLLEGuViXUungE6WmK5YZ3p3bd1',
decimal: 8, decimal: 8,
mint: 'crclx', mint: 'crclx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/crclx.webp',
),
SPLToken( SPLToken(
name: 'Cisco xStock', name: 'Cisco xStock',
symbol: 'CSCOx', symbol: 'CSCOx',
mintAddress: 'Xsr3pdLQyXvDJBFgpR5nexCEZwXvigb8wbPYp4YoNFf', mintAddress: 'Xsr3pdLQyXvDJBFgpR5nexCEZwXvigb8wbPYp4YoNFf',
decimal: 8, decimal: 8,
mint: 'cscx', mint: 'cscx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/cscox.webp',
),
SPLToken( SPLToken(
name: 'Coca-Cola xStock', name: 'Coca-Cola xStock',
symbol: 'KOx', symbol: 'KOx',
mintAddress: 'XsaBXg8dU5cPM6ehmVctMkVqoiRG2ZjMo1cyBJ3AykQ', mintAddress: 'XsaBXg8dU5cPM6ehmVctMkVqoiRG2ZjMo1cyBJ3AykQ',
decimal: 8, decimal: 8,
mint: 'kox', mint: 'kox',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/kox.webp',
),
SPLToken( SPLToken(
name: 'Coinbase xStock', name: 'Coinbase xStock',
symbol: 'COINx', symbol: 'COINx',
mintAddress: 'Xs7ZdzSHLU9ftNJsii5fCeJhoRWSC32SQGzGQtePxNu', mintAddress: 'Xs7ZdzSHLU9ftNJsii5fCeJhoRWSC32SQGzGQtePxNu',
decimal: 8, decimal: 8,
mint: 'coinx', mint: 'coinx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/coinx.webp',
),
SPLToken( SPLToken(
name: 'Comcast xStock', name: 'Comcast xStock',
symbol: 'CMCSAx', symbol: 'CMCSAx',
mintAddress: 'XsvKCaNsxg2GN8jjUmq71qukMJr7Q1c5R2Mk9P8kcS8', mintAddress: 'XsvKCaNsxg2GN8jjUmq71qukMJr7Q1c5R2Mk9P8kcS8',
decimal: 8, decimal: 8,
mint: 'cmcsax', mint: 'cmcsax',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/cmcsax.webp',
),
SPLToken( SPLToken(
name: 'CrowdStrike xStock', name: 'CrowdStrike xStock',
symbol: 'CRWDx', symbol: 'CRWDx',
mintAddress: 'Xs7xXqkcK7K8urEqGg52SECi79dRp2cEKKuYjUePYDw', mintAddress: 'Xs7xXqkcK7K8urEqGg52SECi79dRp2cEKKuYjUePYDw',
decimal: 8, decimal: 8,
mint: 'crwdx', mint: 'crwdx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/crwdx.webp',
),
SPLToken( SPLToken(
name: 'Danaher xStock', name: 'Danaher xStock',
symbol: 'DHRx', symbol: 'DHRx',
mintAddress: 'Xseo8tgCZfkHxWS9xbFYeKFyMSbWEvZGFV1Gh53GtCV', mintAddress: 'Xseo8tgCZfkHxWS9xbFYeKFyMSbWEvZGFV1Gh53GtCV',
decimal: 8, decimal: 8,
mint: 'dhrx', mint: 'dhrx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/dhrx.webp',
),
SPLToken( SPLToken(
name: 'DFDV xStock', name: 'DFDV xStock',
symbol: 'DFDVx', symbol: 'DFDVx',
mintAddress: 'Xs2yquAgsHByNzx68WJC55WHjHBvG9JsMB7CWjTLyPy', mintAddress: 'Xs2yquAgsHByNzx68WJC55WHjHBvG9JsMB7CWjTLyPy',
decimal: 8, decimal: 8,
mint: 'dfdvx', mint: 'dfdvx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/dfdvx.webp',
),
SPLToken( SPLToken(
name: 'Eli Lilly xStock', name: 'Eli Lilly xStock',
symbol: 'LLYx', symbol: 'LLYx',
mintAddress: 'Xsnuv4omNoHozR6EEW5mXkw8Nrny5rB3jVfLqi6gKMH', mintAddress: 'Xsnuv4omNoHozR6EEW5mXkw8Nrny5rB3jVfLqi6gKMH',
decimal: 8, decimal: 8,
mint: 'llyx', mint: 'llyx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/llyx.webp',
),
SPLToken( SPLToken(
name: 'Exxon Mobil xStock', name: 'Exxon Mobil xStock',
symbol: 'XOMx', symbol: 'XOMx',
mintAddress: 'XsaHND8sHyfMfsWPj6kSdd5VwvCayZvjYgKmmcNL5qh', mintAddress: 'XsaHND8sHyfMfsWPj6kSdd5VwvCayZvjYgKmmcNL5qh',
decimal: 8, decimal: 8,
mint: 'xomx', mint: 'xomx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/xomx.webp',
),
SPLToken( SPLToken(
name: 'Gamestop xStock', name: 'Gamestop xStock',
symbol: 'GMEx', symbol: 'GMEx',
mintAddress: 'Xsf9mBktVB9BSU5kf4nHxPq5hCBJ2j2ui3ecFGxPRGc', mintAddress: 'Xsf9mBktVB9BSU5kf4nHxPq5hCBJ2j2ui3ecFGxPRGc',
decimal: 8, decimal: 8,
mint: 'gmex', mint: 'gmex',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/gmex.webp',
),
SPLToken( SPLToken(
name: 'Gold xStock', name: 'Gold xStock',
symbol: 'GLDx', symbol: 'GLDx',
mintAddress: 'Xsv9hRk1z5ystj9MhnA7Lq4vjSsLwzL2nxrwmwtD3re', mintAddress: 'Xsv9hRk1z5ystj9MhnA7Lq4vjSsLwzL2nxrwmwtD3re',
decimal: 8, decimal: 8,
mint: 'gldx', mint: 'gldx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/gldx.webp',
),
SPLToken( SPLToken(
name: 'Goldman Sachs xStock', name: 'Goldman Sachs xStock',
symbol: 'GSx', symbol: 'GSx',
mintAddress: 'XsgaUyp4jd1fNBCxgtTKkW64xnnhQcvgaxzsbAq5ZD1', mintAddress: 'XsgaUyp4jd1fNBCxgtTKkW64xnnhQcvgaxzsbAq5ZD1',
decimal: 8, decimal: 8,
mint: 'gsx', mint: 'gsx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/gsx.webp',
),
SPLToken( SPLToken(
name: 'Home Depot xStock', name: 'Home Depot xStock',
symbol: 'HDx', symbol: 'HDx',
mintAddress: 'XszjVtyhowGjSC5odCqBpW1CtXXwXjYokymrk7fGKD3', mintAddress: 'XszjVtyhowGjSC5odCqBpW1CtXXwXjYokymrk7fGKD3',
decimal: 8, decimal: 8,
mint: 'hdx', mint: 'hdx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/hdx.webp',
),
SPLToken( SPLToken(
name: 'Honeywell xStock', name: 'Honeywell xStock',
symbol: 'HONx', symbol: 'HONx',
mintAddress: 'XsRbLZthfABAPAfumWNEJhPyiKDW6TvDVeAeW7oKqA2', mintAddress: 'XsRbLZthfABAPAfumWNEJhPyiKDW6TvDVeAeW7oKqA2',
decimal: 8, decimal: 8,
mint: 'honx', mint: 'honx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/honx.webp',
),
SPLToken( SPLToken(
name: 'Intel xStock', name: 'Intel xStock',
symbol: 'INTCx', symbol: 'INTCx',
mintAddress: 'XshPgPdXFRWB8tP1j82rebb2Q9rPgGX37RuqzohmArM', mintAddress: 'XshPgPdXFRWB8tP1j82rebb2Q9rPgGX37RuqzohmArM',
decimal: 8, decimal: 8,
mint: 'intcx', mint: 'intcx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/intcx.webp',
),
SPLToken( SPLToken(
name: 'International Business Machines xStock', name: 'International Business Machines xStock',
symbol: 'IBMx', symbol: 'IBMx',
mintAddress: 'XspwhyYPdWVM8XBHZnpS9hgyag9MKjLRyE3tVfmCbSr', mintAddress: 'XspwhyYPdWVM8XBHZnpS9hgyag9MKjLRyE3tVfmCbSr',
decimal: 8, decimal: 8,
mint: 'ibmx', mint: 'ibmx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/ibmx.webp',
),
SPLToken( SPLToken(
name: 'Johnson & Johnson xStock', name: 'Johnson & Johnson xStock',
symbol: 'JNJx', symbol: 'JNJx',
mintAddress: 'XsGVi5eo1Dh2zUpic4qACcjuWGjNv8GCt3dm5XcX6Dn', mintAddress: 'XsGVi5eo1Dh2zUpic4qACcjuWGjNv8GCt3dm5XcX6Dn',
decimal: 8, decimal: 8,
mint: 'jnjx', mint: 'jnjx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/jnjx.webp',
),
SPLToken( SPLToken(
name: 'JPMorgan Chase xStock', name: 'JPMorgan Chase xStock',
symbol: 'JPMx', symbol: 'JPMx',
mintAddress: 'XsMAqkcKsUewDrzVkait4e5u4y8REgtyS7jWgCpLV2C', mintAddress: 'XsMAqkcKsUewDrzVkait4e5u4y8REgtyS7jWgCpLV2C',
decimal: 8, decimal: 8,
mint: 'jpmx', mint: 'jpmx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/jpmx.webp',
),
SPLToken( SPLToken(
name: 'Linde xStock', name: 'Linde xStock',
symbol: 'LINx', symbol: 'LINx',
mintAddress: 'XsSr8anD1hkvNMu8XQiVcmiaTP7XGvYu7Q58LdmtE8Z', mintAddress: 'XsSr8anD1hkvNMu8XQiVcmiaTP7XGvYu7Q58LdmtE8Z',
decimal: 8, decimal: 8,
mint: 'linx', mint: 'linx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/linx.webp',
),
SPLToken( SPLToken(
name: 'Marvell xStock', name: 'Marvell xStock',
symbol: 'MRVLx', symbol: 'MRVLx',
mintAddress: 'XsuxRGDzbLjnJ72v74b7p9VY6N66uYgTCyfwwRjVCJA', mintAddress: 'XsuxRGDzbLjnJ72v74b7p9VY6N66uYgTCyfwwRjVCJA',
decimal: 8, decimal: 8,
mint: 'mrvlx', mint: 'mrvlx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/mrvlx.webp',
),
SPLToken( SPLToken(
name: 'Mastercard xStock', name: 'Mastercard xStock',
symbol: 'MAx', symbol: 'MAx',
mintAddress: 'XsApJFV9MAktqnAc6jqzsHVujxkGm9xcSUffaBoYLKC', mintAddress: 'XsApJFV9MAktqnAc6jqzsHVujxkGm9xcSUffaBoYLKC',
decimal: 8, decimal: 8,
mint: 'max', mint: 'max',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/mastercard.webp',
),
SPLToken( SPLToken(
name: 'McDonald\'s xStock', name: 'McDonald\'s xStock',
symbol: 'MCDx', symbol: 'MCDx',
mintAddress: 'XsqE9cRRpzxcGKDXj1BJ7Xmg4GRhZoyY1KpmGSxAWT2', mintAddress: 'XsqE9cRRpzxcGKDXj1BJ7Xmg4GRhZoyY1KpmGSxAWT2',
decimal: 8, decimal: 8,
mint: 'mcdx', mint: 'mcdx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/mcdonalds.webp',
),
SPLToken( SPLToken(
name: 'Medtronic xStock', name: 'Medtronic xStock',
symbol: 'MDTx', symbol: 'MDTx',
mintAddress: 'XsDgw22qRLTv5Uwuzn6T63cW69exG41T6gwQhEK22u2', mintAddress: 'XsDgw22qRLTv5Uwuzn6T63cW69exG41T6gwQhEK22u2',
decimal: 8, decimal: 8,
mint: 'mdtx', mint: 'mdtx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/mdtx.webp',
),
SPLToken( SPLToken(
name: 'Merck xStock', name: 'Merck xStock',
symbol: 'MRKx', symbol: 'MRKx',
mintAddress: 'XsnQnU7AdbRZYe2akqqpibDdXjkieGFfSkbkjX1Sd1X', mintAddress: 'XsnQnU7AdbRZYe2akqqpibDdXjkieGFfSkbkjX1Sd1X',
decimal: 8, decimal: 8,
mint: 'mrkx', mint: 'mrkx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/mrkx.webp',
),
SPLToken( SPLToken(
name: 'Meta xStock', name: 'Meta xStock',
symbol: 'METAx', symbol: 'METAx',
mintAddress: 'Xsa62P5mvPszXL1krVUnU5ar38bBSVcWAB6fmPCo5Zu', mintAddress: 'Xsa62P5mvPszXL1krVUnU5ar38bBSVcWAB6fmPCo5Zu',
decimal: 8, decimal: 8,
mint: 'metax', mint: 'metax',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/metax.webp',
),
SPLToken( SPLToken(
name: 'Microsoft xStock', name: 'Microsoft xStock',
symbol: 'MSFTx', symbol: 'MSFTx',
mintAddress: 'XspzcW1PRtgf6Wj92HCiZdjzKCyFekVD8P5Ueh3dRMX', mintAddress: 'XspzcW1PRtgf6Wj92HCiZdjzKCyFekVD8P5Ueh3dRMX',
decimal: 8, decimal: 8,
mint: 'msftx', mint: 'msftx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/msftx.webp',
),
SPLToken( SPLToken(
name: 'MicroStrategy xStock', name: 'MicroStrategy xStock',
symbol: 'MSTRx', symbol: 'MSTRx',
mintAddress: 'XsP7xzNPvEHS1m6qfanPUGjNmdnmsLKEoNAnHjdxxyZ', mintAddress: 'XsP7xzNPvEHS1m6qfanPUGjNmdnmsLKEoNAnHjdxxyZ',
decimal: 8, decimal: 8,
mint: 'mstrx', mint: 'mstrx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/mstrx.webp',
),
SPLToken( SPLToken(
name: 'Nasdaq xStock', name: 'Nasdaq xStock',
symbol: 'QQQx', symbol: 'QQQx',
mintAddress: 'Xs8S1uUs1zvS2p7iwtsG3b6fkhpvmwz4GYU3gWAmWHZ', mintAddress: 'Xs8S1uUs1zvS2p7iwtsG3b6fkhpvmwz4GYU3gWAmWHZ',
decimal: 8, decimal: 8,
mint: 'qqqx', mint: 'qqqx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/qqqx.webp',
),
SPLToken( SPLToken(
name: 'Netflix xStock', name: 'Netflix xStock',
symbol: 'NFLXx', symbol: 'NFLXx',
mintAddress: 'XsEH7wWfJJu2ZT3UCFeVfALnVA6CP5ur7Ee11KmzVpL', mintAddress: 'XsEH7wWfJJu2ZT3UCFeVfALnVA6CP5ur7Ee11KmzVpL',
decimal: 8, decimal: 8,
mint: 'nflxx', mint: 'nflxx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/nflxx.webp',
),
SPLToken( SPLToken(
name: 'Novo Nordisk xStock', name: 'Novo Nordisk xStock',
symbol: 'NVOx', symbol: 'NVOx',
mintAddress: 'XsfAzPzYrYjd4Dpa9BU3cusBsvWfVB9gBcyGC87S57n', mintAddress: 'XsfAzPzYrYjd4Dpa9BU3cusBsvWfVB9gBcyGC87S57n',
decimal: 8, decimal: 8,
mint: 'nvox', mint: 'nvox',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/nvox.webp',
),
SPLToken( SPLToken(
name: 'NVIDIA xStock', name: 'NVIDIA xStock',
symbol: 'NVDAx', symbol: 'NVDAx',
mintAddress: 'Xsc9qvGR1efVDFGLrVsmkzv3qi45LTBjeUKSPmx9qEh', mintAddress: 'Xsc9qvGR1efVDFGLrVsmkzv3qi45LTBjeUKSPmx9qEh',
decimal: 8, decimal: 8,
mint: 'nvdax', mint: 'nvdax',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/nvdax.webp',
),
SPLToken( SPLToken(
name: 'OPEN xStock', name: 'OPEN xStock',
symbol: 'OPENx', symbol: 'OPENx',
mintAddress: 'XsGtpmjhmC8kyjVSWL4VicGu36ceq9u55PTgF8bhGv6', mintAddress: 'XsGtpmjhmC8kyjVSWL4VicGu36ceq9u55PTgF8bhGv6',
decimal: 8, decimal: 8,
mint: 'openx', mint: 'openx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/openx.webp',
),
SPLToken( SPLToken(
name: 'Oracle xStock', name: 'Oracle xStock',
symbol: 'ORCLx', symbol: 'ORCLx',
mintAddress: 'XsjFwUPiLofddX5cWFHW35GCbXcSu1BCUGfxoQAQjeL', mintAddress: 'XsjFwUPiLofddX5cWFHW35GCbXcSu1BCUGfxoQAQjeL',
decimal: 8, decimal: 8,
mint: 'orclx', mint: 'orclx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/orclx.webp',
),
SPLToken( SPLToken(
name: 'Palantir xStock', name: 'Palantir xStock',
symbol: 'PLTRx', symbol: 'PLTRx',
mintAddress: 'XsoBhf2ufR8fTyNSjqfU71DYGaE6Z3SUGAidpzriAA4', mintAddress: 'XsoBhf2ufR8fTyNSjqfU71DYGaE6Z3SUGAidpzriAA4',
decimal: 8, decimal: 8,
mint: 'pltrx', mint: 'pltrx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/pltrx.webp',
),
SPLToken( SPLToken(
name: 'PepsiCo xStock', name: 'PepsiCo xStock',
symbol: 'PEPx', symbol: 'PEPx',
mintAddress: 'Xsv99frTRUeornyvCfvhnDesQDWuvns1M852Pez91vF', mintAddress: 'Xsv99frTRUeornyvCfvhnDesQDWuvns1M852Pez91vF',
decimal: 8, decimal: 8,
mint: 'pepx', mint: 'pepx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/pepx.webp',
),
SPLToken( SPLToken(
name: 'Pfizer xStock', name: 'Pfizer xStock',
symbol: 'PFEx', symbol: 'PFEx',
mintAddress: 'XsAtbqkAP1HJxy7hFDeq7ok6yM43DQ9mQ1Rh861X8rw', mintAddress: 'XsAtbqkAP1HJxy7hFDeq7ok6yM43DQ9mQ1Rh861X8rw',
decimal: 8, decimal: 8,
mint: 'pfex', mint: 'pfex',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/pfex.webp',
),
SPLToken( SPLToken(
name: 'Philip Morris xStock', name: 'Philip Morris xStock',
symbol: 'PMx', symbol: 'PMx',
mintAddress: 'Xsba6tUnSjDae2VcopDB6FGGDaxRrewFCDa5hKn5vT3', mintAddress: 'Xsba6tUnSjDae2VcopDB6FGGDaxRrewFCDa5hKn5vT3',
decimal: 8, decimal: 8,
mint: 'pmx', mint: 'pmx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/pmx.webp',
),
SPLToken( SPLToken(
name: 'Procter & Gamble xStock', name: 'Procter & Gamble xStock',
symbol: 'PGx', symbol: 'PGx',
mintAddress: 'XsYdjDjNUygZ7yGKfQaB6TxLh2gC6RRjzLtLAGJrhzV', mintAddress: 'XsYdjDjNUygZ7yGKfQaB6TxLh2gC6RRjzLtLAGJrhzV',
decimal: 8, decimal: 8,
mint: 'pgx', mint: 'pgx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/pgx.webp',
),
SPLToken( SPLToken(
name: 'Robinhood xStock', name: 'Robinhood xStock',
symbol: 'HOODx', symbol: 'HOODx',
mintAddress: 'XsvNBAYkrDRNhA7wPHQfX3ZUXZyZLdnCQDfHZ56bzpg', mintAddress: 'XsvNBAYkrDRNhA7wPHQfX3ZUXZyZLdnCQDfHZ56bzpg',
decimal: 8, decimal: 8,
mint: 'hoodx', mint: 'hoodx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/hoodx.webp',
),
SPLToken( SPLToken(
name: 'Salesforce xStock', name: 'Salesforce xStock',
symbol: 'CRMx', symbol: 'CRMx',
mintAddress: 'XsczbcQ3zfcgAEt9qHQES8pxKAVG5rujPSHQEXi4kaN', mintAddress: 'XsczbcQ3zfcgAEt9qHQES8pxKAVG5rujPSHQEXi4kaN',
decimal: 8, decimal: 8,
mint: 'crmx', mint: 'crmx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/crmx.webp',
),
SPLToken( SPLToken(
name: 'SP500 xStock', name: 'SP500 xStock',
symbol: 'SPYx', symbol: 'SPYx',
mintAddress: 'XsoCS1TfEyfFhfvj8EtZ528L3CaKBDBRqRapnBbDF2W', mintAddress: 'XsoCS1TfEyfFhfvj8EtZ528L3CaKBDBRqRapnBbDF2W',
decimal: 8, decimal: 8,
mint: 'spyx', mint: 'spyx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/spyx.webp',
),
SPLToken( SPLToken(
name: 'TBLL xStock', name: 'TBLL xStock',
symbol: 'TBLLx', symbol: 'TBLLx',
mintAddress: 'XsqBC5tcVQLYt8wqGCHRnAUUecbRYXoJCReD6w7QEKp', mintAddress: 'XsqBC5tcVQLYt8wqGCHRnAUUecbRYXoJCReD6w7QEKp',
decimal: 8, decimal: 8,
mint: 'tbllx', mint: 'tbllx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/tbllx.webp',
),
SPLToken( SPLToken(
name: 'Tesla xStock', name: 'Tesla xStock',
symbol: 'TSLAx', symbol: 'TSLAx',
mintAddress: 'XsDoVfqeBukxuZHWhdvWHBhgEHjGNst4MLodqsJHzoB', mintAddress: 'XsDoVfqeBukxuZHWhdvWHBhgEHjGNst4MLodqsJHzoB',
decimal: 8, decimal: 8,
mint: 'tslax', mint: 'tslax',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/tslax.webp',
),
SPLToken( SPLToken(
name: 'Thermo Fisher xStock', name: 'Thermo Fisher xStock',
symbol: 'TMOx', symbol: 'TMOx',
mintAddress: 'Xs8drBWy3Sd5QY3aifG9kt9KFs2K3PGZmx7jWrsrk57', mintAddress: 'Xs8drBWy3Sd5QY3aifG9kt9KFs2K3PGZmx7jWrsrk57',
decimal: 8, decimal: 8,
mint: 'tmox', mint: 'tmox',
enabled: false), 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( SPLToken(
name: 'TQQQ xStock', name: 'TQQQ xStock',
symbol: 'TQQQx', symbol: 'TQQQx',
mintAddress: 'XsjQP3iMAaQ3kQScQKthQpx9ALRbjKAjQtHg6TFomoc', mintAddress: 'XsjQP3iMAaQ3kQScQKthQpx9ALRbjKAjQtHg6TFomoc',
decimal: 8, decimal: 8,
mint: 'tqqqx', mint: 'tqqqx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/tqqqx.webp',
),
SPLToken( SPLToken(
name: 'UnitedHealth xStock', name: 'UnitedHealth xStock',
symbol: 'UNHx', symbol: 'UNHx',
mintAddress: 'XszvaiXGPwvk2nwb3o9C1CX4K6zH8sez11E6uyup6fe', mintAddress: 'XszvaiXGPwvk2nwb3o9C1CX4K6zH8sez11E6uyup6fe',
decimal: 8, decimal: 8,
mint: 'unhx', mint: 'unhx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/unhx.webp',
),
SPLToken( SPLToken(
name: 'Vanguard xStock', name: 'Vanguard xStock',
symbol: 'VTIx', symbol: 'VTIx',
mintAddress: 'XsssYEQjzxBCFgvYFFNuhJFBeHNdLWYeUSP8F45cDr9', mintAddress: 'XsssYEQjzxBCFgvYFFNuhJFBeHNdLWYeUSP8F45cDr9',
decimal: 8, decimal: 8,
mint: 'vtix', mint: 'vtix',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/vtix.webp',
),
SPLToken( SPLToken(
name: 'Visa xStock', name: 'Visa xStock',
symbol: 'Vx', symbol: 'Vx',
mintAddress: 'XsqgsbXwWogGJsNcVZ3TyVouy2MbTkfCFhCGGGcQZ2p', mintAddress: 'XsqgsbXwWogGJsNcVZ3TyVouy2MbTkfCFhCGGGcQZ2p',
decimal: 8, decimal: 8,
mint: 'vx', mint: 'vx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/vx.webp',
),
SPLToken( SPLToken(
name: 'Walmart xStock', name: 'Walmart xStock',
symbol: 'WMTx', symbol: 'WMTx',
mintAddress: 'Xs151QeqTCiuKtinzfRATnUESM2xTU6V9Wy8Vy538ci', mintAddress: 'Xs151QeqTCiuKtinzfRATnUESM2xTU6V9Wy8Vy538ci',
decimal: 8, decimal: 8,
mint: 'wmtx', mint: 'wmtx',
enabled: false), enabled: false,
iconPath: 'assets/images/stocks/wmtx.webp',
),
]; ];
List<SPLToken> get initialSPLTokens => _defaultTokens.map((token) { List<SPLToken> get initialSPLTokens => _defaultTokens.map((token) {
String? iconPath; String? iconPath;
if (token.iconPath != null) return token; if (token.iconPath?.isEmpty ?? true) {
try { try {
iconPath = CryptoCurrency.all iconPath = CryptoCurrency.all
.firstWhere((element) => element.title.toUpperCase() == token.symbol.toUpperCase()) .firstWhere((element) => element.title.toUpperCase() == token.symbol.toUpperCase())
.iconPath; .iconPath;
} catch (_) {} } catch (_) {}
} else {
iconPath = token.iconPath;
}
return SPLToken.copyWith(token, iconPath, 'SOL'); return SPLToken.copyWith(token, icon: iconPath, tag: 'SOL');
}).toList(); }).toList();
} }
+5
View File
@@ -506,7 +506,12 @@ abstract class SolanaWalletBase
final initialSPLTokens = DefaultSPLTokens().initialSPLTokens; final initialSPLTokens = DefaultSPLTokens().initialSPLTokens;
for (var token in initialSPLTokens) { for (var token in initialSPLTokens) {
if (!splTokensBox.containsKey(token.mintAddress)) {
splTokensBox.put(token.mintAddress, token); 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));
}
} }
} }
+2
View File
@@ -64,6 +64,7 @@ class SolanaWalletService extends WalletService<SolanaNewWalletCredentials,
); );
await wallet.init(); await wallet.init();
wallet.addInitialTokens();
await wallet.save(); await wallet.save();
saveBackup(name); saveBackup(name);
return wallet; return wallet;
@@ -78,6 +79,7 @@ class SolanaWalletService extends WalletService<SolanaNewWalletCredentials,
); );
await wallet.init(); await wallet.init();
wallet.addInitialTokens();
await wallet.save(); await wallet.save();
return wallet; return wallet;
} }
+5 -1
View File
@@ -91,13 +91,17 @@ class DefaultTronTokens {
List<TronToken> get initialTronTokens => _defaultTokens.map((token) { List<TronToken> get initialTronTokens => _defaultTokens.map((token) {
String? iconPath; String? iconPath;
if (token.iconPath?.isEmpty ?? true) {
try { try {
iconPath = CryptoCurrency.all iconPath = CryptoCurrency.all
.firstWhere((element) => .firstWhere((element) =>
element.title.toUpperCase() == token.symbol.split(".").first.toUpperCase()) element.title.toUpperCase() == token.symbol.split(".").first.toUpperCase())
.iconPath; .iconPath;
} catch (_) {} } catch (_) {}
} else {
iconPath = token.iconPath;
}
return TronToken.copyWith(token, iconPath, 'TRX'); return TronToken.copyWith(token, icon: iconPath, tag: 'TRX');
}).toList(); }).toList();
} }
+5
View File
@@ -178,7 +178,12 @@ abstract class TronWalletBase
final initialTronTokens = DefaultTronTokens().initialTronTokens; final initialTronTokens = DefaultTronTokens().initialTronTokens;
for (var token in initialTronTokens) { for (var token in initialTronTokens) {
if (!tronTokensBox.containsKey(token.contractAddress)) {
tronTokensBox.put(token.contractAddress, token); 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));
}
} }
} }
+3
View File
@@ -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:
@@ -110,7 +110,7 @@ class CommonTestFlows {
void confirmAllAvailableWalletTypeIconsDisplayCorrectly() { void confirmAllAvailableWalletTypeIconsDisplayCorrectly() {
for (var walletType in availableWalletTypes) { for (var walletType in availableWalletTypes) {
final imageUrl = walletTypeToCryptoCurrency(walletType).normalizedIconPath; final imageUrl = walletTypeToCryptoCurrency(walletType).iconPath;
final walletIconFinder = find.image( final walletIconFinder = find.image(
Image.asset( Image.asset(
+1 -1
View File
@@ -272,7 +272,7 @@ Future<void> initializeAppConfigs({bool loadWallet = true}) async {
payjoinSessionSource: payjoinSessionSource, payjoinSessionSource: payjoinSessionSource,
anonpayInvoiceInfo: anonpayInvoiceInfo, anonpayInvoiceInfo: anonpayInvoiceInfo,
havenSeedStore: havenSeedStore, havenSeedStore: havenSeedStore,
initialMigrationVersion: 51, initialMigrationVersion: 52,
); );
} }
@@ -149,7 +149,7 @@ class _SelectHardwareWalletAccountFormState extends State<SelectHardwareWalletAc
padding: EdgeInsets.only(top: 10), padding: EdgeInsets.only(top: 10),
child: SelectButton( child: SelectButton(
image: Image.asset( image: Image.asset(
walletTypeToCryptoCurrency(_walletHardwareRestoreVM.type).normalizedIconPath ?? walletTypeToCryptoCurrency(_walletHardwareRestoreVM.type).iconPath ??
'', '',
height: 24, height: 24,
width: 24, width: 24,
@@ -143,7 +143,7 @@ class WalletTypeFormState extends State<WalletTypeForm> {
child: SelectButton( child: SelectButton(
key: ValueKey('new_wallet_type_${type.name}_button_key'), key: ValueKey('new_wallet_type_${type.name}_button_key'),
image: Image.asset( image: Image.asset(
walletTypeToCryptoCurrency(type).normalizedIconPath ?? '', walletTypeToCryptoCurrency(type).iconPath ?? '',
height: 24, height: 24,
width: 24, width: 24,
), ),
@@ -95,7 +95,7 @@ class WalletGroupsDisplayBody extends StatelessWidget {
isSelected: isSelected:
walletGroupsDisplayViewModel.selectedSingleWallet == wallet, walletGroupsDisplayViewModel.selectedSingleWallet == wallet,
leadingWidget: Image.asset( leadingWidget: Image.asset(
walletTypeToCryptoCurrency(wallet.type).normalizedIconPath!, walletTypeToCryptoCurrency(wallet.type).iconPath!,
width: 32, width: 32,
height: 32, height: 32,
), ),
@@ -123,7 +123,7 @@ class GroupedWalletExpansionTile extends StatelessWidget {
: SizedBox(width: 7), : SizedBox(width: 7),
SizedBox(width: 24), SizedBox(width: 24),
Image.asset( Image.asset(
walletTypeToCryptoCurrency(item.type).normalizedIconPath!, walletTypeToCryptoCurrency(item.type).iconPath!,
width: 32, width: 32,
height: 32, height: 32,
), ),

Some files were not shown because too many files have changed in this diff Show More