Fix advance privacy setting set state

This commit is contained in:
Godwin Asuquo 2023-02-07 17:12:34 +02:00
parent bf73fb24e5
commit f770e095a1
2 changed files with 53 additions and 60 deletions

View file

@ -5,7 +5,6 @@ import 'package:cake_wallet/src/screens/settings/widgets/settings_switcher_cell.
import 'package:cake_wallet/view_model/node_list/node_create_or_edit_view_model.dart'; import 'package:cake_wallet/view_model/node_list/node_create_or_edit_view_model.dart';
import 'package:cake_wallet/view_model/advanced_privacy_settings_view_model.dart'; import 'package:cake_wallet/view_model/advanced_privacy_settings_view_model.dart';
import 'package:cake_wallet/view_model/settings/choices_list_item.dart'; import 'package:cake_wallet/view_model/settings/choices_list_item.dart';
import 'package:cake_wallet/view_model/settings/switcher_list_item.dart';
import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:flutter_mobx/flutter_mobx.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/generated/i18n.dart';
@ -49,38 +48,43 @@ class _AdvancedPrivacySettingsBodyState extends State<AdvancedPrivacySettingsBod
padding: EdgeInsets.only(top: 24), padding: EdgeInsets.only(top: 24),
child: ScrollableWithBottomSection( child: ScrollableWithBottomSection(
contentPadding: EdgeInsets.only(bottom: 24), contentPadding: EdgeInsets.only(bottom: 24),
content: Column( content: Observer(
crossAxisAlignment: CrossAxisAlignment.center, builder: (_) => Column(
children: [ crossAxisAlignment: CrossAxisAlignment.center,
...widget.privacySettingsViewModel.settings.whereType<ChoicesListItem<FiatApiMode>>().map( children: [
(item) => Observer( SettingsChoicesCell(
builder: (_) => SettingsChoicesCell(item) ChoicesListItem<FiatApiMode>(
), title: S.current.fiat_api,
), items: FiatApiMode.all,
...widget.privacySettingsViewModel.settings.whereType<SwitcherListItem>().map( selectedItem: widget.privacySettingsViewModel.fiatApi,
(item) => Observer( onItemSelected: (FiatApiMode mode) =>
builder: (_) => SettingsSwitcherCell( widget.privacySettingsViewModel.setFiatMode(mode),
title: item.title,
value: item.value(),
onValueChange: item.onValueChange,
), ),
), ),
), SettingsChoicesCell(
Observer( ChoicesListItem<FiatApiMode>(
builder: (_) { title: S.current.exchange,
if (widget.privacySettingsViewModel.addCustomNode) { items: FiatApiMode.all,
return Padding( selectedItem: widget.privacySettingsViewModel.exchangeStatus,
padding: EdgeInsets.only(left: 24, right: 24, top: 24), onItemSelected: (FiatApiMode mode) =>
child: NodeForm( widget.privacySettingsViewModel.setEnableExchange(mode),
formKey: _formKey, ),
nodeViewModel: widget.nodeViewModel, ),
), SettingsSwitcherCell(
); title: S.current.add_custom_node,
} value: widget.privacySettingsViewModel.addCustomNode,
return const SizedBox(); onValueChange: (_, __) => widget.privacySettingsViewModel.toggleAddCustomNode(),
}, ),
), if (widget.privacySettingsViewModel.addCustomNode)
], Padding(
padding: EdgeInsets.only(left: 24, right: 24, top: 24),
child: NodeForm(
formKey: _formKey,
nodeViewModel: widget.nodeViewModel,
),
)
],
),
), ),
bottomSectionPadding: EdgeInsets.all(24), bottomSectionPadding: EdgeInsets.all(24),
bottomSection: Column( bottomSection: Column(

View file

@ -1,11 +1,7 @@
import 'package:cake_wallet/entities/fiat_api_mode.dart'; import 'package:cake_wallet/entities/fiat_api_mode.dart';
import 'package:cake_wallet/store/settings_store.dart'; import 'package:cake_wallet/store/settings_store.dart';
import 'package:cake_wallet/view_model/settings/choices_list_item.dart';
import 'package:cake_wallet/view_model/settings/settings_list_item.dart';
import 'package:cake_wallet/view_model/settings/switcher_list_item.dart';
import 'package:cw_core/wallet_type.dart'; import 'package:cw_core/wallet_type.dart';
import 'package:mobx/mobx.dart'; import 'package:mobx/mobx.dart';
import 'package:cake_wallet/generated/i18n.dart';
part 'advanced_privacy_settings_view_model.g.dart'; part 'advanced_privacy_settings_view_model.g.dart';
@ -13,36 +9,19 @@ class AdvancedPrivacySettingsViewModel = AdvancedPrivacySettingsViewModelBase
with _$AdvancedPrivacySettingsViewModel; with _$AdvancedPrivacySettingsViewModel;
abstract class AdvancedPrivacySettingsViewModelBase with Store { abstract class AdvancedPrivacySettingsViewModelBase with Store {
AdvancedPrivacySettingsViewModelBase(this.type, this._settingsStore) AdvancedPrivacySettingsViewModelBase(this.type, this._settingsStore) : _addCustomNode = false;
: _addCustomNode = false {
settings = [
ChoicesListItem<FiatApiMode>(
title: S.current.fiat_api,
items: FiatApiMode.all,
selectedItem: _settingsStore.fiatApiMode,
onItemSelected: (FiatApiMode mode) => setFiatMode(mode),
),
ChoicesListItem<FiatApiMode>(
title: S.current.exchange,
items: FiatApiMode.all,
selectedItem: _settingsStore.exchangeStatus,
onItemSelected: (FiatApiMode mode) => _settingsStore.exchangeStatus = mode,
),
SwitcherListItem(
title: S.current.add_custom_node,
value: () => _addCustomNode,
onValueChange: (_, bool value) => _addCustomNode = value,
),
];
}
late List<SettingsListItem> settings; @computed
FiatApiMode get exchangeStatus => _settingsStore.exchangeStatus;
@computed
FiatApiMode get fiatApi => _settingsStore.fiatApiMode;
@observable @observable
bool _addCustomNode = false; bool _addCustomNode = false;
final WalletType type; final WalletType type;
final SettingsStore _settingsStore; final SettingsStore _settingsStore;
@computed @computed
@ -50,6 +29,16 @@ abstract class AdvancedPrivacySettingsViewModelBase with Store {
@action @action
void setFiatMode(FiatApiMode value) { void setFiatMode(FiatApiMode value) {
_settingsStore.fiatApiMode = value; _settingsStore.fiatApiMode = value;
}
@action
void setEnableExchange(FiatApiMode value) {
_settingsStore.exchangeStatus = value;
}
@action
void toggleAddCustomNode() {
_addCustomNode = !_addCustomNode;
} }
} }