cake_wallet/lib/store/dashboard/trades_store.dart

43 lines
1.1 KiB
Dart
Raw Normal View History

import 'dart:async';
2020-09-21 11:50:26 +00:00
import 'package:cake_wallet/exchange/trade.dart';
import 'package:cake_wallet/view_model/dashboard/trade_list_item.dart';
import 'package:hive/hive.dart';
import 'package:mobx/mobx.dart';
import 'package:cake_wallet/store/settings_store.dart';
part 'trades_store.g.dart';
class TradesStore = TradesStoreBase with _$TradesStore;
abstract class TradesStoreBase with Store {
2022-10-12 17:09:57 +00:00
TradesStoreBase({required this.tradesSource, required this.settingsStore})
: trades = <TradeListItem>[] {
_onTradesChanged =
tradesSource.watch().listen((_) async => await updateTradeList());
updateTradeList();
}
Box<Trade> tradesSource;
2022-10-12 17:09:57 +00:00
StreamSubscription<BoxEvent>? _onTradesChanged;
SettingsStore settingsStore;
@observable
List<TradeListItem> trades;
@observable
2022-10-12 17:09:57 +00:00
Trade? trade;
@action
void setTrade(Trade trade) => this.trade = trade;
@action
2022-10-12 17:09:57 +00:00
Future<void> updateTradeList() async {
if (trade == null) {
return;
}
trades = tradesSource.values.map((trade) => TradeListItem(
trade: trade!,
settingsStore: settingsStore)).toList();
}
}