mirror of
https://github.com/cypherstack/stack_wallet.git
synced 2024-12-23 20:09:23 +00:00
56 lines
1.5 KiB
Dart
56 lines
1.5 KiB
Dart
|
import 'package:isar/isar.dart';
|
||
|
|
||
|
import '../db/isar/main_db.dart';
|
||
|
import '../models/isar/models/blockchain_data/v2/transaction_v2.dart';
|
||
|
import '../wallets/crypto_currency/crypto_currency.dart';
|
||
|
import 'amount/amount.dart';
|
||
|
import 'amount/amount_formatter.dart';
|
||
|
import 'amount/amount_unit.dart';
|
||
|
|
||
|
abstract class WalletDevTools {
|
||
|
static String checkFiroTransactionTally(String walletId) {
|
||
|
final amtFmt = AmountFormatter(
|
||
|
unit: AmountUnit.normal,
|
||
|
locale: "en_US",
|
||
|
coin: Firo(CryptoCurrencyNetwork.main),
|
||
|
maxDecimals: 8,
|
||
|
);
|
||
|
|
||
|
final all = MainDB.instance.isar.transactionV2s
|
||
|
.where()
|
||
|
.walletIdEqualTo(walletId)
|
||
|
.findAllSync();
|
||
|
|
||
|
final totalCount = all.length;
|
||
|
|
||
|
BigInt runningBalance = BigInt.zero;
|
||
|
for (final tx in all) {
|
||
|
final ownIns = tx.inputs
|
||
|
.where((e) => e.walletOwns)
|
||
|
.map((e) => e.value)
|
||
|
.fold(BigInt.zero, (p, e) => p + e);
|
||
|
runningBalance -= ownIns;
|
||
|
|
||
|
final ownOuts = tx.outputs
|
||
|
.where((e) => e.walletOwns)
|
||
|
.map((e) => e.value)
|
||
|
.fold(BigInt.zero, (p, e) => p + e);
|
||
|
runningBalance += ownOuts;
|
||
|
}
|
||
|
|
||
|
final balanceAccordingToTxHistory = Amount(
|
||
|
rawValue: runningBalance,
|
||
|
fractionDigits: 8,
|
||
|
);
|
||
|
|
||
|
print("======== $walletId =============");
|
||
|
print("totalTxCount: $totalCount");
|
||
|
print(
|
||
|
"balanceAccordingToTxns: ${amtFmt.format(balanceAccordingToTxHistory)}",
|
||
|
);
|
||
|
print("==================================================");
|
||
|
|
||
|
return amtFmt.format(balanceAccordingToTxHistory);
|
||
|
}
|
||
|
}
|