import 'dart:async'; import 'package:cake_wallet/exchange/trade.dart'; import 'package:cake_wallet/view_model/dashboard/trade_list_item.dart'; import 'package:flutter/foundation.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 { TradesStoreBase({required this.tradesSource, required this.settingsStore}) : trades = [] { _onTradesChanged = tradesSource.watch().listen((_) async => await updateTradeList()); updateTradeList(); } Box tradesSource; StreamSubscription? _onTradesChanged; SettingsStore settingsStore; @observable List trades; @observable Trade? trade; @action void setTrade(Trade trade) => this.trade = trade; @action Future updateTradeList() async => trades = tradesSource.values .map((trade) => TradeListItem( trade: trade, settingsStore: settingsStore, key: ValueKey('trade_list_item_${trade.id}_key'), )) .toList(); }