saveTransactions method

Future<void> saveTransactions(
  1. List<WalletTransaction> transactions
)
override

Save transactions to storage

Implementation

Future<void> saveTransactions(List<WalletTransaction> transactions) async {
  await dbRdy;

  final store = _objectBox.store;

  store.runInTransaction(TxMode.write, () {
    final box = store.box<DbWalletTransaction>();
    final dbTransactions =
        transactions.map((t) => DbWalletTransaction.fromNdk(t)).toList();

    // find existing transactions by id
    final idsToCheck = dbTransactions.map((t) => t.id).toList();

    final query =
        box.query(DbWalletTransaction_.id.oneOf(idsToCheck)).build();

    try {
      final existing = query.find();

      if (existing.isNotEmpty) {
        box.removeMany(existing.map((t) => t.dbId).toList());
      }

      // insert
      box.putMany(dbTransactions);
    } finally {
      query.close();
    }
  });
}