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 }