mirror of
https://github.com/cypherstack/stack_wallet.git
synced 2024-11-06 12:27:41 +00:00
59 lines
1.7 KiB
Dart
59 lines
1.7 KiB
Dart
import 'package:flutter/cupertino.dart';
|
|
import 'package:stackwallet/hive/db.dart';
|
|
import 'package:stackwallet/models/exchange/change_now/exchange_transaction.dart';
|
|
|
|
class TradesService extends ChangeNotifier {
|
|
List<ExchangeTransaction> get trades {
|
|
final list =
|
|
DB.instance.values<ExchangeTransaction>(boxName: DB.boxNameTrades);
|
|
list.sort((a, b) =>
|
|
b.date.millisecondsSinceEpoch - a.date.millisecondsSinceEpoch);
|
|
return list;
|
|
}
|
|
|
|
Future<void> add({
|
|
required ExchangeTransaction trade,
|
|
required bool shouldNotifyListeners,
|
|
}) async {
|
|
await DB.instance.put<ExchangeTransaction>(
|
|
boxName: DB.boxNameTrades, key: trade.uuid, value: trade);
|
|
|
|
if (shouldNotifyListeners) {
|
|
notifyListeners();
|
|
}
|
|
}
|
|
|
|
Future<void> edit({
|
|
required ExchangeTransaction trade,
|
|
required bool shouldNotifyListeners,
|
|
}) async {
|
|
if (DB.instance.get<ExchangeTransaction>(
|
|
boxName: DB.boxNameTrades, key: trade.uuid) ==
|
|
null) {
|
|
throw Exception("Attempted to edit a trade that does not exist in Hive!");
|
|
}
|
|
|
|
// add overwrites so this edit function is just a wrapper with an extra check
|
|
await add(trade: trade, shouldNotifyListeners: shouldNotifyListeners);
|
|
}
|
|
|
|
Future<void> delete({
|
|
required ExchangeTransaction trade,
|
|
required bool shouldNotifyListeners,
|
|
}) async {
|
|
await deleteByUuid(
|
|
uuid: trade.uuid, shouldNotifyListeners: shouldNotifyListeners);
|
|
}
|
|
|
|
Future<void> deleteByUuid({
|
|
required String uuid,
|
|
required bool shouldNotifyListeners,
|
|
}) async {
|
|
await DB.instance
|
|
.delete<ExchangeTransaction>(boxName: DB.boxNameTrades, key: uuid);
|
|
|
|
if (shouldNotifyListeners) {
|
|
notifyListeners();
|
|
}
|
|
}
|
|
}
|