stack_wallet/lib/services/transaction_notification_tracker.dart
2024-05-27 18:01:41 -06:00

108 lines
3.1 KiB
Dart

/*
* This file is part of Stack Wallet.
*
* Copyright (c) 2023 Cypher Stack
* All Rights Reserved.
* The code is distributed under GPLv3 license, see LICENSE file for details.
* Generated by Cypher Stack on 2023-05-26
*
*/
import '../db/hive/db.dart';
class TransactionNotificationTracker {
final String walletId;
TransactionNotificationTracker({required this.walletId});
List<String> get pendings {
final notifiedPendingTransactions = DB.instance.get<dynamic>(
boxName: walletId,
key: "notifiedPendingTransactions",
) as Map? ??
{};
return List<String>.from(notifiedPendingTransactions.keys);
}
bool wasNotifiedPending(String txid) {
final notifiedPendingTransactions = DB.instance.get<dynamic>(
boxName: walletId,
key: "notifiedPendingTransactions",
) as Map? ??
{};
return notifiedPendingTransactions[txid] as bool? ?? false;
}
Future<void> addNotifiedPending(String txid) async {
final notifiedPendingTransactions = DB.instance.get<dynamic>(
boxName: walletId,
key: "notifiedPendingTransactions",
) as Map? ??
{};
notifiedPendingTransactions[txid] = true;
await DB.instance.put<dynamic>(
boxName: walletId,
key: "notifiedPendingTransactions",
value: notifiedPendingTransactions,
);
}
List<String> get confirmeds {
final notifiedConfirmedTransactions = DB.instance.get<dynamic>(
boxName: walletId,
key: "notifiedConfirmedTransactions",
) as Map? ??
{};
return List<String>.from(notifiedConfirmedTransactions.keys);
}
bool wasNotifiedConfirmed(String txid) {
final notifiedConfirmedTransactions = DB.instance.get<dynamic>(
boxName: walletId,
key: "notifiedConfirmedTransactions",
) as Map? ??
{};
return notifiedConfirmedTransactions[txid] as bool? ?? false;
}
Future<void> addNotifiedConfirmed(String txid) async {
final notifiedConfirmedTransactions = DB.instance.get<dynamic>(
boxName: walletId,
key: "notifiedConfirmedTransactions",
) as Map? ??
{};
notifiedConfirmedTransactions[txid] = true;
await DB.instance.put<dynamic>(
boxName: walletId,
key: "notifiedConfirmedTransactions",
value: notifiedConfirmedTransactions,
);
}
Future<void> deleteTransaction(String txid) async {
final notifiedPendingTransactions = DB.instance.get<dynamic>(
boxName: walletId,
key: "notifiedPendingTransactions",
) as Map? ??
{};
final notifiedConfirmedTransactions = DB.instance.get<dynamic>(
boxName: walletId,
key: "notifiedConfirmedTransactions",
) as Map? ??
{};
notifiedPendingTransactions.remove(txid);
notifiedConfirmedTransactions.remove(txid);
await DB.instance.put<dynamic>(
boxName: walletId,
key: "notifiedConfirmedTransactions",
value: notifiedConfirmedTransactions,
);
await DB.instance.put<dynamic>(
boxName: walletId,
key: "notifiedPendingTransactions",
value: notifiedPendingTransactions,
);
}
}