diff --git a/assets/images/xau_sol.png b/assets/images/xau_sol.png new file mode 100644 index 000000000..955d600b4 Binary files /dev/null and b/assets/images/xau_sol.png differ diff --git a/cw_solana/lib/default_spl_tokens.dart b/cw_solana/lib/default_spl_tokens.dart index 5831540db..53231d4bf 100644 --- a/cw_solana/lib/default_spl_tokens.dart +++ b/cw_solana/lib/default_spl_tokens.dart @@ -99,6 +99,15 @@ class DefaultSPLTokens { iconPath: 'assets/images/avdo_icon.png', enabled: false, ), + SPLToken( + name: "Tether Gold", + symbol: "XAUT0", + mintAddress: "AymATz4TCL9sWNEEV9Kvyz45CHVhDZ6kUgjTJPzLpU9P", + decimal: 6, + mint: 'xaut0', + enabled: false, + iconPath: "assets/images/xau_sol.png", + ), SPLToken( name: 'Abbott xStock', symbol: 'ABTx', diff --git a/lib/entities/default_settings_migration.dart b/lib/entities/default_settings_migration.dart index 33feed37e..3c5fed789 100644 --- a/lib/entities/default_settings_migration.dart +++ b/lib/entities/default_settings_migration.dart @@ -23,6 +23,7 @@ import 'package:cake_wallet/entities/sync_status_display_mode.dart'; import 'package:cake_wallet/wownero/wownero.dart'; import 'package:cw_core/pathForWallet.dart'; import 'package:cw_core/root_dir.dart'; +import 'package:cw_core/spl_token.dart'; import 'package:cw_core/utils/print_verbose.dart'; import 'package:cw_core/wallet_info.dart'; import 'package:cw_core/wallet_type.dart'; @@ -611,6 +612,9 @@ Future defaultSettingsMigration( enabled: false, ); break; + case 63: + await _addXaut0TokenToExistingSolanaWallets(); + break; default: break; } @@ -1489,3 +1493,39 @@ Future _addXautTokenToExistingEthereumWallets() async { printV('Error in XAUT migration: $e'); } } +Future _addXaut0TokenToExistingSolanaWallets() async { + try { + final xaut0Token = SPLToken( + name: "Tether Gold", + symbol: "XAUT0", + mintAddress: "AymATz4TCL9sWNEEV9Kvyz45CHVhDZ6kUgjTJPzLpU9P", + decimal: 6, + mint: 'xaut0', + enabled: false, + iconPath: "assets/images/xau_sol.png", + ); + + final allWallets = await WalletInfo.getAll(); + + final solanaWallets = allWallets.where((wallet) => wallet.type == WalletType.solana).toList(); + + for (final walletInfo in solanaWallets) { + final sanitizedName = walletInfo.name.replaceAll(' ', '_'); + final boxName = '${sanitizedName}_${SPLToken.boxName}'; + + Box tokenBox; + if (CakeHive.isBoxOpen(boxName)) { + tokenBox = CakeHive.box(boxName); + } else { + tokenBox = await CakeHive.openBox(boxName); + } + + final xaut0Address = xaut0Token.mintAddress; + if (!tokenBox.containsKey(xaut0Address)) { + await tokenBox.put(xaut0Address, xaut0Token); + } + } + } catch (e) { + printV('Error in XAUT0 migration: $e'); + } +} diff --git a/lib/main.dart b/lib/main.dart index 56f0d02e2..3d4493a36 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -324,7 +324,7 @@ Future initializeAppConfigs({bool loadWallet = true}) async { payjoinSessionSource: payjoinSessionSource, anonpayInvoiceInfo: anonpayInvoiceInfo, havenSeedStore: havenSeedStore, - initialMigrationVersion: 62, + initialMigrationVersion: 63, ); } diff --git a/lib/new-ui/widgets/coins_page/assets_history/asset_details_modal.dart b/lib/new-ui/widgets/coins_page/assets_history/asset_details_modal.dart index e555ae564..8bdf7571c 100644 --- a/lib/new-ui/widgets/coins_page/assets_history/asset_details_modal.dart +++ b/lib/new-ui/widgets/coins_page/assets_history/asset_details_modal.dart @@ -74,7 +74,7 @@ class AssetDetailsModal extends StatelessWidget { child: Stack( children: [ if (iconPath.isNotEmpty) - Image.asset(iconPath, width: 75, height: 75) + CakeImageWidget(imageUrl: iconPath, width: 75, height: 75) else Container( width: 75, diff --git a/lib/new-ui/widgets/coins_page/assets_history/asset_tile.dart b/lib/new-ui/widgets/coins_page/assets_history/asset_tile.dart index 380588e15..9eb4d7539 100644 --- a/lib/new-ui/widgets/coins_page/assets_history/asset_tile.dart +++ b/lib/new-ui/widgets/coins_page/assets_history/asset_tile.dart @@ -92,7 +92,7 @@ class AssetTile extends StatelessWidget { child: Stack( children: [ if((iconPath).isNotEmpty) - Image.asset(iconPath) + CakeImageWidget(imageUrl: iconPath) else Container( width: 45,