Fix advance privacy setting set state
Godwin Asuquo committed
Feb 7, 2023 at 17:12 UTC
f770e095a1b765984aa4e8bff5ccb04592b0cc9a
2 files changed
+52
-59
lib/src/screens/new_wallet/advanced_privacy_settings_page.dart
+34
-30
@@ -5,7 +5,6 @@ import 'package:cake_wallet/src/screens/settings/widgets/settings_switcher_cell.
5
import 'package:cake_wallet/view_model/node_list/node_create_or_edit_view_model.dart';
6
import 'package:cake_wallet/view_model/advanced_privacy_settings_view_model.dart';
7
import 'package:cake_wallet/view_model/settings/choices_list_item.dart';
8
-import 'package:cake_wallet/view_model/settings/switcher_list_item.dart';
8
import 'package:flutter_mobx/flutter_mobx.dart';
9
import 'package:flutter/material.dart';
10
import 'package:cake_wallet/generated/i18n.dart';
@@ -49,38 +48,43 @@ class _AdvancedPrivacySettingsBodyState extends State<AdvancedPrivacySettingsBod
48
padding: EdgeInsets.only(top: 24),
49
child: ScrollableWithBottomSection(
50
contentPadding: EdgeInsets.only(bottom: 24),
52
- content: Column(
53
- crossAxisAlignment: CrossAxisAlignment.center,
54
- children: [
55
- ...widget.privacySettingsViewModel.settings.whereType<ChoicesListItem<FiatApiMode>>().map(
56
- (item) => Observer(
57
- builder: (_) => SettingsChoicesCell(item)
51
+ content: Observer(
52
+ builder: (_) => Column(
53
+ crossAxisAlignment: CrossAxisAlignment.center,
54
+ children: [
55
+ SettingsChoicesCell(
56
+ ChoicesListItem<FiatApiMode>(
57
+ title: S.current.fiat_api,
58
+ items: FiatApiMode.all,
59
+ selectedItem: widget.privacySettingsViewModel.fiatApi,
60
+ onItemSelected: (FiatApiMode mode) =>
61
+ widget.privacySettingsViewModel.setFiatMode(mode),
62
+ ),
63
),
59
- ),
60
- ...widget.privacySettingsViewModel.settings.whereType<SwitcherListItem>().map(
61
- (item) => Observer(
62
- builder: (_) => SettingsSwitcherCell(
63
- title: item.title,
64
- value: item.value(),
65
- onValueChange: item.onValueChange,
64
+ SettingsChoicesCell(
65
+ ChoicesListItem<FiatApiMode>(
66
+ title: S.current.exchange,
67
+ items: FiatApiMode.all,
68
+ selectedItem: widget.privacySettingsViewModel.exchangeStatus,
69
+ onItemSelected: (FiatApiMode mode) =>
70
+ widget.privacySettingsViewModel.setEnableExchange(mode),
71
),
72
),
68
- ),
69
- Observer(
70
- builder: (_) {
71
- if (widget.privacySettingsViewModel.addCustomNode) {
72
- return Padding(
73
- padding: EdgeInsets.only(left: 24, right: 24, top: 24),
74
- child: NodeForm(
75
- formKey: _formKey,
76
- nodeViewModel: widget.nodeViewModel,
77
- ),
78
- );
79
- }
80
- return const SizedBox();
81
- },
82
- ),
83
- ],
73
+ SettingsSwitcherCell(
74
+ title: S.current.add_custom_node,
75
+ value: widget.privacySettingsViewModel.addCustomNode,
76
+ onValueChange: (_, __) => widget.privacySettingsViewModel.toggleAddCustomNode(),
77
+ ),
78
+ if (widget.privacySettingsViewModel.addCustomNode)
79
+ Padding(
80
+ padding: EdgeInsets.only(left: 24, right: 24, top: 24),
81
+ child: NodeForm(
82
+ formKey: _formKey,
83
+ nodeViewModel: widget.nodeViewModel,
84
+ ),
85
+ )
86
+ ],
87
+ ),
88
),
89
bottomSectionPadding: EdgeInsets.all(24),
90
bottomSection: Column(
lib/view_model/advanced_privacy_settings_view_model.dart
+18
-29
@@ -1,11 +1,7 @@
1
import 'package:cake_wallet/entities/fiat_api_mode.dart';
2
import 'package:cake_wallet/store/settings_store.dart';
3
-import 'package:cake_wallet/view_model/settings/choices_list_item.dart';
4
-import 'package:cake_wallet/view_model/settings/settings_list_item.dart';
5
-import 'package:cake_wallet/view_model/settings/switcher_list_item.dart';
3
import 'package:cw_core/wallet_type.dart';
4
import 'package:mobx/mobx.dart';
8
-import 'package:cake_wallet/generated/i18n.dart';
5
6
part 'advanced_privacy_settings_view_model.g.dart';
7
@@ -13,36 +9,19 @@ class AdvancedPrivacySettingsViewModel = AdvancedPrivacySettingsViewModelBase
9
with _$AdvancedPrivacySettingsViewModel;
10
11
abstract class AdvancedPrivacySettingsViewModelBase with Store {
16
- AdvancedPrivacySettingsViewModelBase(this.type, this._settingsStore)
17
- : _addCustomNode = false {
18
- settings = [
19
- ChoicesListItem<FiatApiMode>(
20
- title: S.current.fiat_api,
21
- items: FiatApiMode.all,
22
- selectedItem: _settingsStore.fiatApiMode,
23
- onItemSelected: (FiatApiMode mode) => setFiatMode(mode),
24
- ),
25
-
26
- ChoicesListItem<FiatApiMode>(
27
- title: S.current.exchange,
28
- items: FiatApiMode.all,
29
- selectedItem: _settingsStore.exchangeStatus,
30
- onItemSelected: (FiatApiMode mode) => _settingsStore.exchangeStatus = mode,
31
- ),
32
- SwitcherListItem(
33
- title: S.current.add_custom_node,
34
- value: () => _addCustomNode,
35
- onValueChange: (_, bool value) => _addCustomNode = value,
36
- ),
37
- ];
38
- }
12
+ AdvancedPrivacySettingsViewModelBase(this.type, this._settingsStore) : _addCustomNode = false;
13
+
14
+ @computed
15
+ FiatApiMode get exchangeStatus => _settingsStore.exchangeStatus;
16
40
- late List<SettingsListItem> settings;
17
+ @computed
18
+ FiatApiMode get fiatApi => _settingsStore.fiatApiMode;
19
20
@observable
21
bool _addCustomNode = false;
22
23
final WalletType type;
24
+
25
final SettingsStore _settingsStore;
26
27
@computed
@@ -50,6 +29,16 @@ abstract class AdvancedPrivacySettingsViewModelBase with Store {
29
30
@action
31
void setFiatMode(FiatApiMode value) {
53
- _settingsStore.fiatApiMode = value;
32
+ _settingsStore.fiatApiMode = value;
33
+ }
34
+
35
+ @action
36
+ void setEnableExchange(FiatApiMode value) {
37
+ _settingsStore.exchangeStatus = value;
38
+ }
39
+
40
+ @action
41
+ void toggleAddCustomNode() {
42
+ _addCustomNode = !_addCustomNode;
43
}
44
}