diff --git a/lib/models/isar/models/blockchain_data/utxo.dart b/lib/models/isar/models/blockchain_data/utxo.dart index 87558c541..77de5ae3a 100644 --- a/lib/models/isar/models/blockchain_data/utxo.dart +++ b/lib/models/isar/models/blockchain_data/utxo.dart @@ -77,7 +77,9 @@ class UTXO { int getConfirmations(int currentChainHeight) { if (blockTime == null || blockHash == null) return 0; if (blockHeight == null || blockHeight! <= 0) return 0; - return max(0, currentChainHeight - (blockHeight! - 1)); + return _isMonero() + ? max(0, currentChainHeight - (blockHeight!)) + : max(0, currentChainHeight - (blockHeight! - 1)); } bool isConfirmed( @@ -90,6 +92,11 @@ class UTXO { (isCoinbase ? minimumCoinbaseConfirms : minimumConfirms); } + // fuzzy + bool _isMonero() { + return keyImage != null; + } + @ignore String? get keyImage { if (otherData == null) { @@ -98,7 +105,7 @@ class UTXO { try { final map = jsonDecode(otherData!) as Map; - return map["keyImage"] as String; + return map[UTXOOtherDataKeys.keyImage] as String; } catch (_) { return null; } @@ -169,3 +176,8 @@ class UTXO { @ignore int get hashCode => Object.hashAll([walletId, txid, vout]); } + +abstract final class UTXOOtherDataKeys { + static const keyImage = "keyImage"; + static const spent = "spent"; +} diff --git a/lib/models/isar/models/blockchain_data/v2/transaction_v2.dart b/lib/models/isar/models/blockchain_data/v2/transaction_v2.dart index 3d8903391..b7a92c26e 100644 --- a/lib/models/isar/models/blockchain_data/v2/transaction_v2.dart +++ b/lib/models/isar/models/blockchain_data/v2/transaction_v2.dart @@ -109,7 +109,9 @@ class TransactionV2 { int getConfirmations(int currentChainHeight) { if (height == null || height! <= 0) return 0; - return max(0, currentChainHeight - (height! - 1)); + return _isMonero() + ? max(0, currentChainHeight - (height!)) + : max(0, currentChainHeight - (height! - 1)); } bool isConfirmed( diff --git a/lib/wallets/wallet/intermediate/lib_monero_wallet.dart b/lib/wallets/wallet/intermediate/lib_monero_wallet.dart index 3c3c34a6d..423e8c70b 100644 --- a/lib/wallets/wallet/intermediate/lib_monero_wallet.dart +++ b/lib/wallets/wallet/intermediate/lib_monero_wallet.dart @@ -1017,8 +1017,8 @@ abstract class LibMoneroWallet .findFirst(); final otherDataMap = { - "keyImage": rawUTXO.keyImage, - "spent": rawUTXO.spent, + UTXOOtherDataKeys.keyImage: rawUTXO.keyImage, + UTXOOtherDataKeys.spent: rawUTXO.spent, }; final utxo = UTXO( diff --git a/pubspec.lock b/pubspec.lock index 3ccce4760..760ef2066 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -633,6 +633,14 @@ packages: url: "https://github.com/cypherstack/flutter-devicelocale" source: git version: "0.8.1" + digest_auth: + dependency: "direct main" + description: + name: digest_auth + sha256: c8f4a8d65300bd58c4a2ca84ea6bd63cb584e8021e5689c600ee7efae34d73ea + url: "https://pub.dev" + source: hosted + version: "1.0.1" dio: dependency: transitive description: @@ -1360,6 +1368,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.2.0" + monero_rpc: + dependency: "direct main" + description: + name: monero_rpc + sha256: "6052b6812e3e831015d776645d0d880fce5b9632d9df2cacae54b5e10ffe2db5" + url: "https://pub.dev" + source: hosted + version: "2.0.0" mutex: dependency: "direct main" description: