import 'dart:core'; import 'package:mobx/mobx.dart'; import 'package:cw_monero/transaction_history.dart' as monero_transaction_history; import 'package:cake_wallet/core/transaction_history.dart'; import 'package:cake_wallet/monero/monero_transaction_info.dart'; part 'monero_transaction_history.g.dart'; List _getAllTransactions(dynamic _) => monero_transaction_history .getAllTransations() .map((row) => MoneroTransactionInfo.fromRow(row)) .toList(); class MoneroTransactionHistory = MoneroTransactionHistoryBase with _$MoneroTransactionHistory; abstract class MoneroTransactionHistoryBase extends TransactionHistoryBase with Store { MoneroTransactionHistoryBase() { transactions = ObservableMap(); } @override Future> fetchTransactions() async { monero_transaction_history.refreshTransactions(); return _getAllTransactions(null).fold>( {}, (Map acc, MoneroTransactionInfo tx) { acc[tx.id] = tx; return acc; }); } @override @action void updateAsync({void Function() onFinished}) { fetchTransactionsAsync( (transaction) => transactions[transaction.id] = transaction, onFinished: onFinished); } @override void fetchTransactionsAsync( void Function(MoneroTransactionInfo transaction) onTransactionLoaded, {void Function() onFinished}) async { final transactions = await fetchTransactions(); transactions.values.forEach((tx) => onTransactionLoaded(tx)); onFinished?.call(); } }