solana nft improvements and other fixes (#3581)

* feat: improvements covering solana nfts(send, ownership badge, persistent imports etc), closing emptied token accounts and other fixes from patch

* feat: more improvements for nfts including security hardening

* fix: display error in full
This commit is contained in:
David Adegoke
2026-09-03 01:54:11 +08:00
committed by GitHub
parent 87ba3838ae
commit ea4d752914
68 changed files with 2830 additions and 396 deletions
+32 -2
View File
@@ -341,9 +341,9 @@ import 'package:cw_core/wallet_service.dart';
import 'package:hive/hive.dart';
import 'package:ledger_flutter_plus/ledger_flutter_plus.dart' as ledger;
import 'package:trezor_flutter/trezor_flutter.dart' as trezor;
import "package:cw_core/hardware/hardware_wallet_service.dart";
import 'package:polyseed/polyseed.dart';""";
const moneroCWHeaders = """
import 'package:cw_core/hardware/hardware_wallet_service.dart';
import 'package:cw_core/account.dart' as monero_account;
import 'package:cw_core/get_height_by_date.dart';
import 'package:cw_core/monero_amount_format.dart';
@@ -489,6 +489,11 @@ WalletCredentials createMoneroNewWalletCredentials({required String name, requir
Future<void> syncTrezor(Object wallet);
Map<String, List<int>> debugCallLength();
Map<String, dynamic> getWalletCacheDebug();
Future<int> getNodeHeight(Object wallet);
String getLegacySeed(Object wallet, String langName);
bool isBackgroundSyncRunning(Object wallet);
Future<void> startBackgroundSync(Object wallet);
Future<void> stopBackgroundSync(Object wallet, String password);
}
abstract class MoneroSubaddressList {
@@ -1020,7 +1025,16 @@ abstract class Solana {
});
Future<void> discoverAndAddWalletTokens(WalletBase wallet);
Future<PendingTransaction> sendNFT(
WalletBase wallet, {
required String mintAddress,
required String destinationAddress,
String? name,
});
Future<SolanaNFTMetadata?> getNFTOnChainMetadata(WalletBase wallet, String mintAddress);
Future<Set<String>> getHeldTokenMints(WalletBase wallet);
TransactionInfo getTransactionInfo({
required String id,
required DateTime blockTime,
@@ -1033,6 +1047,22 @@ abstract class Solana {
});
}
class SolanaNFTMetadata {
const SolanaNFTMetadata({
required this.mint,
required this.name,
required this.symbol,
required this.metadataUri,
this.imageUrl,
});
final String mint;
final String name;
final String symbol;
final String metadataUri;
final String? imageUrl;
}
class JupiterSwapFailedException implements Exception {
final String message;
final String signature;