dev
dart 43 lines 1.09 KB
Raw
1 import 'package:cake_wallet/exchange/trade.dart';
2 import 'package:cake_wallet/store/app_store.dart';
3 import 'package:cake_wallet/view_model/dashboard/trade_list_item.dart';
4 import 'package:flutter/foundation.dart';
5 import 'package:mobx/mobx.dart';
6
7 part 'trades_store.g.dart';
8
9 class TradesStore = TradesStoreBase with _$TradesStore;
10
11 abstract class TradesStoreBase with Store {
12 TradesStoreBase({required this.appStore}) : trades = <TradeListItem>[] {
13 Trade.onChanged.stream.listen((_) => updateTradeList());
14 updateTradeList();
15 }
16
17 AppStore appStore;
18
19 @observable
20 List<TradeListItem> trades;
21
22 @observable
23 Trade? trade;
24
25 @action
26 void setTrade(Trade trade) => this.trade = trade;
27
28 @action
29 Future<void> updateTradeList() async {
30 try {
31 final allTrades = await Trade.getAll();
32 runInAction(() {
33 trades = allTrades
34 .map((trade) => TradeListItem(
35 trade: trade,
36 appStore: appStore,
37 key: ValueKey('trade_list_item_${trade.id}_key'),
38 ))
39 .toList();
40 });
41 } catch (_) {}
42 }
43 }