PR fixes

Serhii committed Dec 26, 2022 at 20:41 UTC ca79052914ca72253fd8e0e4b7b859f28ef96b71
5 files changed +79 -88
lib/src/screens/dashboard/widgets/filter_widget.dart
+1 -1
@@ -82,7 +82,7 @@ class FilterWidget extends StatelessWidget {
82 final content = item.onChanged != null
83 ? Observer(
84 builder: (_) => StandardCheckbox(
85 - value: item.value.value,
85 + value: item.value(),
86 caption: item.caption,
87 gradientBackground: true,
88 borderColor: Theme.of(context).dividerColor,
lib/store/dashboard/trade_filter_store.dart
+45 -46
@@ -8,60 +8,61 @@ part'trade_filter_store.g.dart';
8 class TradeFilterStore = TradeFilterStoreBase with _$TradeFilterStore;
9
10 abstract class TradeFilterStoreBase with Store {
11 - TradeFilterStoreBase();
11 + TradeFilterStoreBase() : displayXMRTO = true,
12 + displayChangeNow = true,
13 + displaySideShift = true,
14 + displayMorphToken = true,
15 + displaySimpleSwap = true;
16
13 - Observable<bool> displayXMRTO = Observable(true);
14 - Observable<bool> displayAllTrades = Observable(true);
15 - Observable<bool> displayChangeNow = Observable(true);
16 - Observable<bool> displaySideShift = Observable(true);
17 - Observable<bool> displayMorphToken = Observable(true);
18 - Observable<bool> displaySimpleSwap = Observable(true);
17 + @observable
18 + bool displayXMRTO;
19 +
20 + @observable
21 + bool displayChangeNow;
22 +
23 + @observable
24 + bool displaySideShift;
25 +
26 + @observable
27 + bool displayMorphToken;
28 +
29 + @observable
30 + bool displaySimpleSwap;
31 +
32 + @computed
33 + bool get displayAllTrades => displayChangeNow && displaySideShift && displaySimpleSwap;
34
35 @action
36 void toggleDisplayExchange(ExchangeProviderDescription provider) {
37 switch (provider) {
38 case ExchangeProviderDescription.changeNow:
24 - displayAllTrades.value = false;
25 - displayChangeNow.value = !displayChangeNow.value;
26 - if (displayChangeNow.value && displaySideShift.value && displaySimpleSwap.value) {
27 - displayAllTrades.value = true;
28 - }
39 + displayChangeNow = !displayChangeNow;
40 break;
41 case ExchangeProviderDescription.sideShift:
31 - displayAllTrades.value = false;
32 - displaySideShift.value = !displaySideShift.value;
33 - if (displayChangeNow.value && displaySideShift.value && displaySimpleSwap.value) {
34 - displayAllTrades.value = true;
35 - }
42 + displaySideShift = !displaySideShift;
43 break;
44 case ExchangeProviderDescription.simpleSwap:
38 - displayAllTrades.value = false;
39 - displaySimpleSwap.value = !displaySimpleSwap.value;
40 - if (displayChangeNow.value && displaySideShift.value && displaySimpleSwap.value) {
41 - displayAllTrades.value = true;
42 - }
45 + displaySimpleSwap = !displaySimpleSwap;
46 break;
47 case ExchangeProviderDescription.xmrto:
45 - displayXMRTO.value = !displayXMRTO.value;
48 + displayXMRTO = !displayXMRTO;
49 break;
50 case ExchangeProviderDescription.morphToken:
48 - displayMorphToken.value = !displayMorphToken.value;
51 + displayMorphToken = !displayMorphToken;
52 break;
53 case ExchangeProviderDescription.all:
51 - displayAllTrades.value = !displayAllTrades.value;
52 - if (displayAllTrades.value) {
53 - displayChangeNow.value = true;
54 - displaySideShift.value = true;
55 - displayXMRTO.value = true;
56 - displayMorphToken.value = true;
57 - displaySimpleSwap.value = true;
58 - }
59 - if (!displayAllTrades.value) {
60 - displayChangeNow.value = false;
61 - displaySideShift.value = false;
62 - displayXMRTO.value = false;
63 - displayMorphToken.value = false;
64 - displaySimpleSwap.value = false;
54 + if (displayAllTrades) {
55 + displayChangeNow = false;
56 + displaySideShift = false;
57 + displayXMRTO = false;
58 + displayMorphToken = false;
59 + displaySimpleSwap = false;
60 + } else {
61 + displayChangeNow = true;
62 + displaySideShift = true;
63 + displayXMRTO = true;
64 + displayMorphToken = true;
65 + displaySimpleSwap = true;
66 }
67 break;
68 }
@@ -70,24 +71,22 @@ abstract class TradeFilterStoreBase with Store {
71 List<TradeListItem> filtered({required List<TradeListItem> trades, required WalletBase wallet}) {
72 final _trades =
73 trades.where((item) => item.trade.walletId == wallet.id).toList();
73 - final needToFilter = !displayChangeNow.value || !displaySideShift.value
74 - || !displayXMRTO.value || !displayMorphToken.value
75 - || !displaySimpleSwap.value;
74 + final needToFilter = !displayAllTrades;
75
76 return needToFilter
77 ? _trades
78 .where((item) =>
80 - (displayXMRTO.value &&
79 + (displayXMRTO &&
80 item.trade.provider == ExchangeProviderDescription.xmrto) ||
82 - (displaySideShift.value &&
81 + (displaySideShift &&
82 item.trade.provider == ExchangeProviderDescription.sideShift) ||
84 - (displayChangeNow.value &&
83 + (displayChangeNow &&
84 item.trade.provider ==
85 ExchangeProviderDescription.changeNow) ||
87 - (displayMorphToken.value &&
86 + (displayMorphToken &&
87 item.trade.provider ==
88 ExchangeProviderDescription.morphToken)
90 - ||(displaySimpleSwap.value &&
89 + ||(displaySimpleSwap &&
90 item.trade.provider ==
91 ExchangeProviderDescription.simpleSwap))
92 .toList()
lib/store/dashboard/transaction_filter_store.dart
+24 -32
@@ -10,11 +10,14 @@ class TransactionFilterStore = TransactionFilterStoreBase
10 with _$TransactionFilterStore;
11
12 abstract class TransactionFilterStoreBase with Store {
13 - TransactionFilterStoreBase();
13 + TransactionFilterStoreBase() : displayIncoming = true,
14 + displayOutgoing = true;
15
15 - Observable<bool> displayAll = Observable(true);
16 - Observable<bool> displayIncoming = Observable(true);
17 - Observable<bool> displayOutgoing = Observable(true);
16 + @observable
17 + bool displayIncoming;
18 +
19 + @observable
20 + bool displayOutgoing;
21
22 @observable
23 DateTime? startDate;
@@ -22,40 +25,30 @@ abstract class TransactionFilterStoreBase with Store {
25 @observable
26 DateTime? endDate;
27
28 + @computed
29 + bool get displayAll => displayIncoming && displayOutgoing;
30 +
31 @action
26 - void toggleIAll() {
27 - displayAll.value = (!displayAll.value);
28 - if (displayAll.value) {
29 - displayOutgoing.value = true;
30 - displayIncoming.value = true;
31 - }
32 - if (!displayAll.value) {
33 - displayOutgoing.value = false;
34 - displayIncoming.value = false;
32 + void toggleAll() {
33 + if (displayAll) {
34 + displayOutgoing = false;
35 + displayIncoming = false;
36 + } else {
37 + displayOutgoing = true;
38 + displayIncoming = true;
39 }
40 }
41
42 +
43 @action
44 void toggleIncoming() {
40 - displayIncoming.value = (!displayIncoming.value);
41 - if (displayIncoming.value && displayOutgoing.value) {
42 - displayAll.value = true;
43 - }
44 - if (!displayIncoming.value || !displayOutgoing.value) {
45 - displayAll.value = false;
46 - }
45 + displayIncoming = !displayIncoming;
46 }
47
48
49 @action
50 void toggleOutgoing() {
52 - displayOutgoing.value = (!displayOutgoing.value);
53 - if (displayIncoming.value && displayOutgoing.value) {
54 - displayAll.value = true;
55 - }
56 - if (!displayIncoming.value || !displayOutgoing.value) {
57 - displayAll.value = false;
58 - }
51 + displayOutgoing = !displayOutgoing;
52 }
53
54 @action
@@ -66,8 +59,7 @@ abstract class TransactionFilterStoreBase with Store {
59
60 List<TransactionListItem> filtered({required List<TransactionListItem> transactions}) {
61 var _transactions = <TransactionListItem>[];
69 - final needToFilter = !displayOutgoing.value ||
70 - !displayIncoming.value ||
62 + final needToFilter = !displayAll ||
63 (startDate != null && endDate != null);
64
65 if (needToFilter) {
@@ -79,11 +71,11 @@ abstract class TransactionFilterStoreBase with Store {
71 && (endDate?.isAfter(item.transaction.date) ?? false);
72 }
73
82 - if (allowed && (!displayOutgoing.value || !displayIncoming.value)) {
83 - allowed = (displayOutgoing.value &&
74 + if (allowed && (!displayAll)) {
75 + allowed = (displayOutgoing &&
76 item.transaction.direction ==
77 TransactionDirection.outgoing) ||
86 - (displayIncoming.value &&
78 + (displayIncoming &&
79 item.transaction.direction == TransactionDirection.incoming);
80 }
81
lib/view_model/dashboard/dashboard_view_model.dart
+8 -8
@@ -59,15 +59,15 @@ abstract class DashboardViewModelBase with Store {
59 filterItems = {
60 S.current.transactions: [
61 FilterItem(
62 - value: transactionFilterStore.displayAll,
62 + value: () => transactionFilterStore.displayAll,
63 caption: S.current.all_transactions,
64 - onChanged: transactionFilterStore.toggleIAll),
64 + onChanged: transactionFilterStore.toggleAll),
65 FilterItem(
66 - value: transactionFilterStore.displayIncoming,
66 + value: () => transactionFilterStore.displayIncoming,
67 caption: S.current.incoming,
68 onChanged:transactionFilterStore.toggleIncoming),
69 FilterItem(
70 - value: transactionFilterStore.displayOutgoing,
70 + value: () => transactionFilterStore.displayOutgoing,
71 caption: S.current.outgoing,
72 onChanged: transactionFilterStore.toggleOutgoing),
73 // FilterItem(
@@ -77,22 +77,22 @@ abstract class DashboardViewModelBase with Store {
77 ],
78 S.current.trades: [
79 FilterItem(
80 - value: tradeFilterStore.displayAllTrades,
80 + value: () => tradeFilterStore.displayAllTrades,
81 caption: S.current.all_trades,
82 onChanged: () => tradeFilterStore
83 .toggleDisplayExchange(ExchangeProviderDescription.all)),
84 FilterItem(
85 - value: tradeFilterStore.displayChangeNow,
85 + value: () => tradeFilterStore.displayChangeNow,
86 caption: ExchangeProviderDescription.changeNow.title,
87 onChanged: () => tradeFilterStore
88 .toggleDisplayExchange(ExchangeProviderDescription.changeNow)),
89 FilterItem(
90 - value: tradeFilterStore.displaySideShift,
90 + value: () => tradeFilterStore.displaySideShift,
91 caption: ExchangeProviderDescription.sideShift.title,
92 onChanged: () => tradeFilterStore
93 .toggleDisplayExchange(ExchangeProviderDescription.sideShift)),
94 FilterItem(
95 - value: tradeFilterStore.displaySimpleSwap,
95 + value: () => tradeFilterStore.displaySimpleSwap,
96 caption: ExchangeProviderDescription.simpleSwap.title,
97 onChanged: () => tradeFilterStore
98 .toggleDisplayExchange(ExchangeProviderDescription.simpleSwap)),
lib/view_model/dashboard/filter_item.dart
+1 -1
@@ -6,7 +6,7 @@ class FilterItem {
6 required this.caption,
7 required this.onChanged});
8
9 - Observable<bool> value;
9 + bool Function() value;
10 String caption;
11 Function onChanged;
12 }
\ No newline at end of file