centralize exchange rate type parameter

This commit is contained in:
julian 2023-02-08 14:48:09 -06:00
parent 5c29a543a9
commit 15a44d9dff
4 changed files with 46 additions and 56 deletions

View file

@ -130,7 +130,7 @@ class _ExchangeFormState extends ConsumerState<ExchangeForm> {
} }
Future<AggregateCurrency> _getAggregateCurrency(Currency currency) async { Future<AggregateCurrency> _getAggregateCurrency(Currency currency) async {
final rateType = ref.read(prefsChangeNotifierProvider).exchangeRateType; final rateType = ref.read(exchangeFormStateProvider).exchangeRateType;
final currencies = await ExchangeDataLoadingService.instance.isar.currencies final currencies = await ExchangeDataLoadingService.instance.isar.currencies
.filter() .filter()
.group((q) => rateType == ExchangeRateType.fixed .group((q) => rateType == ExchangeRateType.fixed
@ -159,7 +159,7 @@ class _ExchangeFormState extends ConsumerState<ExchangeForm> {
} }
void selectSendCurrency() async { void selectSendCurrency() async {
final type = (ref.read(prefsChangeNotifierProvider).exchangeRateType); final type = (ref.read(exchangeFormStateProvider).exchangeRateType);
final fromTicker = ref.read(exchangeFormStateProvider).fromTicker ?? ""; final fromTicker = ref.read(exchangeFormStateProvider).fromTicker ?? "";
if (walletInitiated && if (walletInitiated &&
@ -197,7 +197,7 @@ class _ExchangeFormState extends ConsumerState<ExchangeForm> {
willChange: ref.read(exchangeFormStateProvider).receiveCurrency?.ticker, willChange: ref.read(exchangeFormStateProvider).receiveCurrency?.ticker,
willChangeIsSend: false, willChangeIsSend: false,
paired: ref.read(exchangeFormStateProvider).sendCurrency?.ticker, paired: ref.read(exchangeFormStateProvider).sendCurrency?.ticker,
isFixedRate: ref.read(prefsChangeNotifierProvider).exchangeRateType == isFixedRate: ref.read(exchangeFormStateProvider).exchangeRateType ==
ExchangeRateType.fixed, ExchangeRateType.fixed,
); );
@ -380,7 +380,7 @@ class _ExchangeFormState extends ConsumerState<ExchangeForm> {
} }
void onExchangePressed() async { void onExchangePressed() async {
final rateType = ref.read(prefsChangeNotifierProvider).exchangeRateType; final rateType = ref.read(exchangeFormStateProvider).exchangeRateType;
final fromTicker = ref.read(exchangeFormStateProvider).fromTicker ?? ""; final fromTicker = ref.read(exchangeFormStateProvider).fromTicker ?? "";
final toTicker = ref.read(exchangeFormStateProvider).toTicker ?? ""; final toTicker = ref.read(exchangeFormStateProvider).toTicker ?? "";
final sendAmount = ref.read(exchangeFormStateProvider).sendAmount!; final sendAmount = ref.read(exchangeFormStateProvider).sendAmount!;
@ -671,7 +671,7 @@ class _ExchangeFormState extends ConsumerState<ExchangeForm> {
debugPrint("BUILD: $runtimeType"); debugPrint("BUILD: $runtimeType");
final rateType = ref.watch( final rateType = ref.watch(
prefsChangeNotifierProvider.select((value) => value.exchangeRateType)); exchangeFormStateProvider.select((value) => value.exchangeRateType));
final isEstimated = rateType == ExchangeRateType.estimated; final isEstimated = rateType == ExchangeRateType.estimated;
@ -816,7 +816,7 @@ class _ExchangeFormState extends ConsumerState<ExchangeForm> {
background: background:
Theme.of(context).extension<StackColors>()!.textFieldDefaultBG, Theme.of(context).extension<StackColors>()!.textFieldDefaultBG,
onTap: () { onTap: () {
if (!(ref.read(prefsChangeNotifierProvider).exchangeRateType == if (!(ref.read(exchangeFormStateProvider).exchangeRateType ==
ExchangeRateType.estimated) && ExchangeRateType.estimated) &&
_receiveController.text == "-") { _receiveController.text == "-") {
_receiveController.text = ""; _receiveController.text = "";

View file

@ -24,16 +24,12 @@ class RateTypeToggle extends ConsumerWidget {
return Toggle( return Toggle(
onValueChanged: (value) { onValueChanged: (value) {
if (value) { if (value) {
ref.read(prefsChangeNotifierProvider).exchangeRateType =
ExchangeRateType.fixed;
onChanged?.call(ExchangeRateType.fixed); onChanged?.call(ExchangeRateType.fixed);
} else { } else {
ref.read(prefsChangeNotifierProvider).exchangeRateType =
ExchangeRateType.estimated;
onChanged?.call(ExchangeRateType.estimated); onChanged?.call(ExchangeRateType.estimated);
} }
}, },
isOn: ref.watch(prefsChangeNotifierProvider isOn: ref.watch(exchangeFormStateProvider
.select((value) => value.exchangeRateType)) == .select((value) => value.exchangeRateType)) ==
ExchangeRateType.fixed, ExchangeRateType.fixed,
onColor: isDesktop onColor: isDesktop

View file

@ -13,7 +13,6 @@ import 'package:stackwallet/models/node_model.dart';
import 'package:stackwallet/models/stack_restoring_ui_state.dart'; import 'package:stackwallet/models/stack_restoring_ui_state.dart';
import 'package:stackwallet/models/trade_wallet_lookup.dart'; import 'package:stackwallet/models/trade_wallet_lookup.dart';
import 'package:stackwallet/models/wallet_restore_state.dart'; import 'package:stackwallet/models/wallet_restore_state.dart';
import 'package:stackwallet/pages/exchange_view/sub_widgets/exchange_rate_sheet.dart';
import 'package:stackwallet/services/address_book_service.dart'; import 'package:stackwallet/services/address_book_service.dart';
import 'package:stackwallet/services/coins/coin_service.dart'; import 'package:stackwallet/services/coins/coin_service.dart';
import 'package:stackwallet/services/coins/manager.dart'; import 'package:stackwallet/services/coins/manager.dart';
@ -246,7 +245,6 @@ abstract class SWB {
final _prefs = Prefs.instance; final _prefs = Prefs.instance;
await _prefs.init(); await _prefs.init();
prefs['currency'] = _prefs.currency; prefs['currency'] = _prefs.currency;
prefs['exchangeRateType'] = _prefs.exchangeRateType.name;
prefs['useBiometrics'] = _prefs.useBiometrics; prefs['useBiometrics'] = _prefs.useBiometrics;
prefs['hasPin'] = _prefs.hasPin; prefs['hasPin'] = _prefs.hasPin;
prefs['language'] = _prefs.language; prefs['language'] = _prefs.language;
@ -992,9 +990,6 @@ abstract class SWB {
final _prefs = Prefs.instance; final _prefs = Prefs.instance;
await _prefs.init(); await _prefs.init();
_prefs.currency = prefs['currency'] as String; _prefs.currency = prefs['currency'] as String;
_prefs.exchangeRateType = prefs['exchangeRateType'] == "estimated"
? ExchangeRateType.estimated
: ExchangeRateType.fixed;
// _prefs.useBiometrics = prefs['useBiometrics'] as bool; // _prefs.useBiometrics = prefs['useBiometrics'] as bool;
// _prefs.hasPin = prefs['hasPin'] as bool; // _prefs.hasPin = prefs['hasPin'] as bool;
_prefs.language = prefs['language'] as String; _prefs.language = prefs['language'] as String;

View file

@ -1,6 +1,5 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:stackwallet/hive/db.dart'; import 'package:stackwallet/hive/db.dart';
import 'package:stackwallet/pages/exchange_view/sub_widgets/exchange_rate_sheet.dart';
import 'package:stackwallet/utilities/constants.dart'; import 'package:stackwallet/utilities/constants.dart';
import 'package:stackwallet/utilities/enums/backup_frequency_type.dart'; import 'package:stackwallet/utilities/enums/backup_frequency_type.dart';
import 'package:stackwallet/utilities/enums/languages_enum.dart'; import 'package:stackwallet/utilities/enums/languages_enum.dart';
@ -18,7 +17,7 @@ class Prefs extends ChangeNotifier {
Future<void> init() async { Future<void> init() async {
if (!_initialized) { if (!_initialized) {
_currency = await _getPreferredCurrency(); _currency = await _getPreferredCurrency();
_exchangeRateType = await _getExchangeRateType(); // _exchangeRateType = await _getExchangeRateType();
_useBiometrics = await _getUseBiometrics(); _useBiometrics = await _getUseBiometrics();
_hasPin = await _getHasPin(); _hasPin = await _getHasPin();
_language = await _getPreferredLanguage(); _language = await _getPreferredLanguage();
@ -251,44 +250,44 @@ class Prefs extends ChangeNotifier {
// exchange rate type // exchange rate type
ExchangeRateType _exchangeRateType = ExchangeRateType.estimated; // ExchangeRateType _exchangeRateType = ExchangeRateType.estimated;
//
ExchangeRateType get exchangeRateType => _exchangeRateType; // ExchangeRateType get exchangeRateType => _exchangeRateType;
//
set exchangeRateType(ExchangeRateType exchangeRateType) { // set exchangeRateType(ExchangeRateType exchangeRateType) {
if (_exchangeRateType != exchangeRateType) { // if (_exchangeRateType != exchangeRateType) {
switch (exchangeRateType) { // switch (exchangeRateType) {
case ExchangeRateType.estimated: // case ExchangeRateType.estimated:
DB.instance.put<dynamic>( // DB.instance.put<dynamic>(
boxName: DB.boxNamePrefs, // boxName: DB.boxNamePrefs,
key: "exchangeRateType", // key: "exchangeRateType",
value: "estimated"); // value: "estimated");
break; // break;
case ExchangeRateType.fixed: // case ExchangeRateType.fixed:
DB.instance.put<dynamic>( // DB.instance.put<dynamic>(
boxName: DB.boxNamePrefs, // boxName: DB.boxNamePrefs,
key: "exchangeRateType", // key: "exchangeRateType",
value: "fixed"); // value: "fixed");
break; // break;
} // }
_exchangeRateType = exchangeRateType; // _exchangeRateType = exchangeRateType;
notifyListeners(); // notifyListeners();
} // }
} // }
//
Future<ExchangeRateType> _getExchangeRateType() async { // Future<ExchangeRateType> _getExchangeRateType() async {
String? rate = await DB.instance.get<dynamic>( // String? rate = await DB.instance.get<dynamic>(
boxName: DB.boxNamePrefs, key: "exchangeRateType") as String?; // boxName: DB.boxNamePrefs, key: "exchangeRateType") as String?;
rate ??= "estimated"; // rate ??= "estimated";
switch (rate) { // switch (rate) {
case "estimated": // case "estimated":
return ExchangeRateType.estimated; // return ExchangeRateType.estimated;
case "fixed": // case "fixed":
return ExchangeRateType.fixed; // return ExchangeRateType.fixed;
default: // default:
throw Exception("Invalid exchange rate type found in prefs!"); // throw Exception("Invalid exchange rate type found in prefs!");
} // }
} // }
// use biometrics // use biometrics