dev
dart 47 lines 1.22 KB
Raw
1 import 'dart:async';
2 import 'package:cake_wallet/order/order.dart';
3 import 'package:cake_wallet/view_model/dashboard/order_list_item.dart';
4 import 'package:flutter/foundation.dart';
5 import 'package:hive/hive.dart';
6 import 'package:mobx/mobx.dart';
7 import 'package:cake_wallet/store/settings_store.dart';
8
9 part 'orders_store.g.dart';
10
11 class OrdersStore = OrdersStoreBase with _$OrdersStore;
12
13 abstract class OrdersStoreBase with Store {
14 OrdersStoreBase({required this.ordersSource, required this.settingsStore})
15 : orders = <OrderListItem>[],
16 orderId = '' {
17 _onOrdersChanged = ordersSource.watch().listen((_) async => await updateOrderList());
18 updateOrderList();
19 }
20
21 Box<Order> ordersSource;
22
23 SettingsStore settingsStore;
24
25 StreamSubscription<BoxEvent>? _onOrdersChanged;
26
27 @observable
28 List<OrderListItem> orders;
29
30 @observable
31 Order? order;
32
33 @observable
34 String orderId;
35
36 @action
37 void setOrder(Order order) => this.order = order;
38
39 @action
40 Future updateOrderList() async => orders = ordersSource.values
41 .map((order) => OrderListItem(
42 order: order,
43 settingsStore: settingsStore,
44 key: ValueKey('order_list_item_${order.id}_key'),
45 ))
46 .toList();
47 }