mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2024-12-22 19:49:22 +00:00
Merge pull request #595 from cake-tech/CW-118-Allow-disabling-of-fiat
CW-118 Allow disabling of fiat
This commit is contained in:
commit
357ebe5fc8
38 changed files with 342 additions and 104 deletions
|
@ -51,6 +51,10 @@ class CWBitcoin extends Bitcoin {
|
|||
TransactionPriority deserializeBitcoinTransactionPriority(int raw)
|
||||
=> BitcoinTransactionPriority.deserialize(raw: raw);
|
||||
|
||||
@override
|
||||
TransactionPriority deserializeLitecoinTransactionPriority(int raw)
|
||||
=> LitecoinTransactionPriority.deserialize(raw: raw);
|
||||
|
||||
@override
|
||||
int getFeeRate(Object wallet, TransactionPriority priority) {
|
||||
final bitcoinWallet = wallet as ElectrumWallet;
|
||||
|
|
|
@ -214,6 +214,7 @@ class BackupService {
|
|||
final currentBitcoinElectrumSererId = data[PreferencesKey.currentBitcoinElectrumSererIdKey] as int?;
|
||||
final currentLanguageCode = data[PreferencesKey.currentLanguageCode] as String?;
|
||||
final displayActionListMode = data[PreferencesKey.displayActionListModeKey] as int?;
|
||||
final fiatApiMode = data[PreferencesKey.currentFiatApiModeKey] as int?;
|
||||
final currentPinLength = data[PreferencesKey.currentPinLength] as int?;
|
||||
final currentTheme = data[PreferencesKey.currentTheme] as int?;
|
||||
final currentDefaultSettingsMigrationVersion = data[PreferencesKey.currentDefaultSettingsMigrationVersion] as int?;
|
||||
|
@ -266,6 +267,10 @@ class BackupService {
|
|||
await _sharedPreferences.setInt(PreferencesKey.displayActionListModeKey,
|
||||
displayActionListMode);
|
||||
|
||||
if (fiatApiMode != null)
|
||||
await _sharedPreferences.setInt(PreferencesKey.currentFiatApiModeKey,
|
||||
fiatApiMode);
|
||||
|
||||
if (currentPinLength != null)
|
||||
await _sharedPreferences.setInt(PreferencesKey.currentPinLength,
|
||||
currentPinLength);
|
||||
|
@ -427,6 +432,8 @@ class BackupService {
|
|||
_sharedPreferences.getInt(PreferencesKey.bitcoinTransactionPriority),
|
||||
PreferencesKey.moneroTransactionPriority:
|
||||
_sharedPreferences.getInt(PreferencesKey.moneroTransactionPriority),
|
||||
PreferencesKey.currentFiatApiModeKey:
|
||||
_sharedPreferences.getInt(PreferencesKey.currentFiatApiModeKey),
|
||||
};
|
||||
|
||||
return json.encode(preferences);
|
||||
|
|
39
lib/entities/fiat_api_mode.dart
Normal file
39
lib/entities/fiat_api_mode.dart
Normal file
|
@ -0,0 +1,39 @@
|
|||
import 'package:cake_wallet/generated/i18n.dart';
|
||||
import 'package:cw_core/enumerable_item.dart';
|
||||
|
||||
class FiatApiMode extends EnumerableItem<int> with Serializable<int> {
|
||||
const FiatApiMode({required String title, required int raw}) : super(title: title, raw: raw);
|
||||
|
||||
static const all = [FiatApiMode.enabled, FiatApiMode.torOnly, FiatApiMode.disabled];
|
||||
|
||||
static const enabled = FiatApiMode(raw: 0, title: 'Enabled');
|
||||
static const torOnly = FiatApiMode(raw: 1, title: 'Tor only');
|
||||
static const disabled = FiatApiMode(raw: 2, title: 'Disabled');
|
||||
|
||||
static FiatApiMode deserialize({required int raw}) {
|
||||
switch (raw) {
|
||||
case 0:
|
||||
return enabled;
|
||||
case 1:
|
||||
return torOnly;
|
||||
case 2:
|
||||
return disabled;
|
||||
default:
|
||||
throw Exception('Unexpected token: $raw for FiatApiMode deserialize');
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
switch (this) {
|
||||
case FiatApiMode.enabled:
|
||||
return S.current.enabled;
|
||||
case FiatApiMode.torOnly:
|
||||
return S.current.tor_only;
|
||||
case FiatApiMode.disabled:
|
||||
return S.current.disabled;
|
||||
default:
|
||||
return '';
|
||||
}
|
||||
}
|
||||
}
|
|
@ -9,6 +9,7 @@ class PreferencesKey {
|
|||
static const currentTransactionPriorityKeyLegacy = 'current_fee_priority';
|
||||
static const currentBalanceDisplayModeKey = 'current_balance_display_mode';
|
||||
static const shouldSaveRecipientAddressKey = 'save_recipient_address';
|
||||
static const currentFiatApiModeKey = 'current_fiat_api_mode';
|
||||
static const allowBiometricalAuthenticationKey =
|
||||
'allow_biometrical_authentication';
|
||||
static const disableExchangeKey = 'disable_exchange';
|
||||
|
@ -21,6 +22,8 @@ class PreferencesKey {
|
|||
'current_default_settings_migration_version';
|
||||
static const moneroTransactionPriority = 'current_fee_priority_monero';
|
||||
static const bitcoinTransactionPriority = 'current_fee_priority_bitcoin';
|
||||
static const havenTransactionPriority = 'current_fee_priority_haven';
|
||||
static const litecoinTransactionPriority = 'current_fee_priority_litecoin';
|
||||
static const shouldShowReceiveWarning = 'should_show_receive_warning';
|
||||
static const shouldShowYatPopup = 'should_show_yat_popup';
|
||||
static const moneroWalletPasswordUpdateV1Base = 'monero_wallet_update_v1';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import 'dart:async';
|
||||
import 'package:cake_wallet/reactions/fiat_rate_update.dart';
|
||||
import 'package:cake_wallet/reactions/on_current_node_change.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
|
@ -31,4 +32,5 @@ Future<void> bootstrap(GlobalKey<NavigatorState> navigatorKey) async {
|
|||
appStore, settingsStore, fiatConversionStore);
|
||||
startCurrentFiatChangeReaction(appStore, settingsStore, fiatConversionStore);
|
||||
startOnCurrentNodeChangeReaction(appStore);
|
||||
startFiatRateUpdate(appStore, settingsStore, fiatConversionStore);
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import 'dart:async';
|
||||
import 'package:cake_wallet/core/fiat_conversion_service.dart';
|
||||
import 'package:cake_wallet/entities/fiat_api_mode.dart';
|
||||
import 'package:cake_wallet/entities/update_haven_rate.dart';
|
||||
import 'package:cake_wallet/store/app_store.dart';
|
||||
import 'package:cake_wallet/store/dashboard/fiat_conversion_store.dart';
|
||||
|
@ -8,30 +9,27 @@ import 'package:cw_core/wallet_type.dart';
|
|||
|
||||
Timer? _timer;
|
||||
|
||||
Future<void> startFiatRateUpdate(AppStore appStore, SettingsStore settingsStore,
|
||||
FiatConversionStore fiatConversionStore) async {
|
||||
Future<void> startFiatRateUpdate(
|
||||
AppStore appStore, SettingsStore settingsStore, FiatConversionStore fiatConversionStore) async {
|
||||
if (_timer != null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (appStore.wallet != null) {
|
||||
fiatConversionStore.prices[appStore.wallet!.currency] =
|
||||
await FiatConversionService.fetchPrice(
|
||||
appStore.wallet!.currency, settingsStore.fiatCurrency);
|
||||
}
|
||||
_timer = Timer.periodic(Duration(seconds: 30), (_) async {
|
||||
try {
|
||||
if (appStore.wallet == null || settingsStore.fiatApiMode == FiatApiMode.disabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
_timer = Timer.periodic(
|
||||
Duration(seconds: 30),
|
||||
(_) async {
|
||||
try {
|
||||
if (appStore.wallet!.type == WalletType.haven) {
|
||||
await updateHavenRate(fiatConversionStore);
|
||||
} else {
|
||||
fiatConversionStore.prices[appStore.wallet!.currency] = await FiatConversionService.fetchPrice(
|
||||
appStore.wallet!.currency, settingsStore.fiatCurrency);
|
||||
}
|
||||
} catch(e) {
|
||||
print(e);
|
||||
}
|
||||
});
|
||||
if (appStore.wallet!.type == WalletType.haven) {
|
||||
await updateHavenRate(fiatConversionStore);
|
||||
} else {
|
||||
fiatConversionStore.prices[appStore.wallet!.currency] =
|
||||
await FiatConversionService.fetchPrice(
|
||||
appStore.wallet!.currency, settingsStore.fiatCurrency);
|
||||
}
|
||||
} catch (e) {
|
||||
print(e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import 'package:cake_wallet/entities/fiat_api_mode.dart';
|
||||
import 'package:mobx/mobx.dart';
|
||||
import 'package:cake_wallet/core/fiat_conversion_service.dart';
|
||||
import 'package:cake_wallet/store/dashboard/fiat_conversion_store.dart';
|
||||
|
@ -12,7 +13,7 @@ void startCurrentFiatChangeReaction(AppStore appStore,
|
|||
_onCurrentFiatCurrencyChangeDisposer?.reaction.dispose();
|
||||
_onCurrentFiatCurrencyChangeDisposer = reaction(
|
||||
(_) => settingsStore.fiatCurrency, (FiatCurrency fiatCurrency) async {
|
||||
if (appStore.wallet == null) {
|
||||
if (appStore.wallet == null || settingsStore.fiatApiMode == FiatApiMode.disabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import 'package:cake_wallet/entities/fiat_api_mode.dart';
|
||||
import 'package:cake_wallet/entities/fiat_currency.dart';
|
||||
import 'package:cake_wallet/entities/update_haven_rate.dart';
|
||||
import 'package:cw_core/transaction_history.dart';
|
||||
|
@ -87,7 +88,7 @@ void startCurrentWalletChangeReaction(AppStore appStore,
|
|||
TransactionHistoryBase<TransactionInfo>, TransactionInfo>?
|
||||
wallet) async {
|
||||
try {
|
||||
if (wallet == null) {
|
||||
if (wallet == null || settingsStore.fiatApiMode == FiatApiMode.disabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -57,7 +57,9 @@ class TransactionsPage extends StatelessWidget {
|
|||
formattedDate: DateFormat('HH:mm')
|
||||
.format(transaction.date),
|
||||
formattedAmount: item.formattedCryptoAmount,
|
||||
formattedFiatAmount: item.formattedFiatAmount,
|
||||
formattedFiatAmount:
|
||||
dashboardViewModel.balanceViewModel.isFiatDisabled
|
||||
? '' : item.formattedFiatAmount,
|
||||
isPending: transaction.isPending));
|
||||
}
|
||||
|
||||
|
|
|
@ -378,12 +378,10 @@ class ExchangeTradeState extends State<ExchangeTradeForm> {
|
|||
});
|
||||
},
|
||||
actionLeftButton: () => Navigator.of(context).pop(),
|
||||
feeFiatAmount: widget.exchangeTradeViewModel.sendViewModel.pendingTransactionFeeFiatAmount
|
||||
+ ' ' + widget.exchangeTradeViewModel.sendViewModel.fiat.title,
|
||||
fiatAmountValue: widget.exchangeTradeViewModel.sendViewModel
|
||||
.pendingTransactionFiatAmount +
|
||||
' ' +
|
||||
widget.exchangeTradeViewModel.sendViewModel.fiat.title,
|
||||
feeFiatAmount: widget.exchangeTradeViewModel
|
||||
.pendingTransactionFeeFiatAmountFormatted,
|
||||
fiatAmountValue: widget.exchangeTradeViewModel
|
||||
.pendingTransactionFiatAmountValueFormatted,
|
||||
outputs: widget.exchangeTradeViewModel.sendViewModel
|
||||
.outputs);
|
||||
});
|
||||
|
|
|
@ -78,7 +78,14 @@ class _AdvancedPrivacySettingsBodyState extends State<AdvancedPrivacySettingsBod
|
|||
children: [
|
||||
LoadingPrimaryButton(
|
||||
onPressed: () {
|
||||
widget.nodeViewModel.save(saveAsCurrent: true);
|
||||
if (widget.privacySettingsViewModel.addCustomNode) {
|
||||
if (_formKey.currentState != null && !_formKey.currentState!.validate()) {
|
||||
return;
|
||||
}
|
||||
|
||||
widget.nodeViewModel.save(saveAsCurrent: true);
|
||||
}
|
||||
|
||||
Navigator.pop(context);
|
||||
},
|
||||
text: S.of(context).continue_text,
|
||||
|
|
|
@ -381,16 +381,10 @@ class SendPage extends BasePage {
|
|||
amount: S.of(context).send_amount,
|
||||
amountValue:
|
||||
sendViewModel.pendingTransaction!.amountFormatted,
|
||||
fiatAmountValue:
|
||||
sendViewModel.pendingTransactionFiatAmount +
|
||||
' ' +
|
||||
sendViewModel.fiat.title,
|
||||
fiatAmountValue: sendViewModel.pendingTransactionFiatAmountFormatted,
|
||||
fee: S.of(context).send_fee,
|
||||
feeValue: sendViewModel.pendingTransaction!.feeFormatted,
|
||||
feeFiatAmount:
|
||||
sendViewModel.pendingTransactionFeeFiatAmount +
|
||||
' ' +
|
||||
sendViewModel.fiat.title,
|
||||
feeFiatAmount: sendViewModel.pendingTransactionFeeFiatAmountFormatted,
|
||||
outputs: sendViewModel.outputs,
|
||||
rightButtonText: S.of(context).ok,
|
||||
leftButtonText: S.of(context).cancel,
|
||||
|
|
|
@ -332,7 +332,8 @@ class SendCardState extends State<SendCard>
|
|||
],
|
||||
),
|
||||
)),
|
||||
Padding(
|
||||
if (!sendViewModel.isFiatDisabled)
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(top: 20),
|
||||
child: BaseTextFormField(
|
||||
focusNode: fiatAmountFocus,
|
||||
|
@ -438,8 +439,9 @@ class SendCardState extends State<SendCard>
|
|||
Padding(
|
||||
padding:
|
||||
EdgeInsets.only(top: 5),
|
||||
child: Text(
|
||||
output
|
||||
child: sendViewModel.isFiatDisabled
|
||||
? const SizedBox(height: 14)
|
||||
: Text(output
|
||||
.estimatedFeeFiatAmount
|
||||
+ ' ' +
|
||||
sendViewModel
|
||||
|
|
|
@ -34,7 +34,8 @@ class DisplaySettingsPage extends BasePage {
|
|||
onValueChange: (_, bool value) {
|
||||
_displaySettingsViewModel.setShouldDisplayBalance(value);
|
||||
}),
|
||||
if (!isHaven)
|
||||
//if (!isHaven) it does not work correctly
|
||||
if(!_displaySettingsViewModel.disabledFiatApiMode)
|
||||
SettingsPickerCell<FiatCurrency>(
|
||||
title: S.current.settings_currency,
|
||||
searchHintText: S.current.search_currency,
|
||||
|
|
|
@ -18,10 +18,15 @@ class PrivacyPage extends BasePage {
|
|||
return Container(
|
||||
padding: EdgeInsets.only(top: 10),
|
||||
child: Observer(builder: (_) {
|
||||
return Observer(builder: (_) {
|
||||
return Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
SettingsSwitcherCell(
|
||||
title: S.current.disable_fiat,
|
||||
value: _privacySettingsViewModel.isFiatDisabled,
|
||||
onValueChange: (BuildContext context, bool value) {
|
||||
_privacySettingsViewModel.setFiatMode(value);
|
||||
}),
|
||||
SettingsSwitcherCell(
|
||||
title: S.current.disable_exchange,
|
||||
value: _privacySettingsViewModel.disableExchange,
|
||||
|
@ -36,7 +41,6 @@ class PrivacyPage extends BasePage {
|
|||
})
|
||||
],
|
||||
);
|
||||
});
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
|
|
@ -17,8 +17,10 @@ import 'package:cake_wallet/entities/fiat_currency.dart';
|
|||
import 'package:cw_core/node.dart';
|
||||
import 'package:cake_wallet/monero/monero.dart';
|
||||
import 'package:cake_wallet/entities/action_list_display_mode.dart';
|
||||
import 'package:cake_wallet/entities/fiat_api_mode.dart';
|
||||
import 'package:cake_wallet/.secrets.g.dart' as secrets;
|
||||
|
||||
|
||||
part 'settings_store.g.dart';
|
||||
|
||||
class SettingsStore = SettingsStoreBase with _$SettingsStore;
|
||||
|
@ -29,6 +31,7 @@ abstract class SettingsStoreBase with Store {
|
|||
required FiatCurrency initialFiatCurrency,
|
||||
required BalanceDisplayMode initialBalanceDisplayMode,
|
||||
required bool initialSaveRecipientAddress,
|
||||
required FiatApiMode initialFiatMode,
|
||||
required bool initialAllowBiometricalAuthentication,
|
||||
required bool initialExchangeEnabled,
|
||||
required ThemeBase initialTheme,
|
||||
|
@ -41,12 +44,15 @@ abstract class SettingsStoreBase with Store {
|
|||
required this.isBitcoinBuyEnabled,
|
||||
required this.actionlistDisplayMode,
|
||||
TransactionPriority? initialBitcoinTransactionPriority,
|
||||
TransactionPriority? initialMoneroTransactionPriority})
|
||||
TransactionPriority? initialMoneroTransactionPriority,
|
||||
TransactionPriority? initialHavenTransactionPriority,
|
||||
TransactionPriority? initialLitecoinTransactionPriority})
|
||||
: nodes = ObservableMap<WalletType, Node>.of(nodes),
|
||||
_sharedPreferences = sharedPreferences,
|
||||
fiatCurrency = initialFiatCurrency,
|
||||
balanceDisplayMode = initialBalanceDisplayMode,
|
||||
shouldSaveRecipientAddress = initialSaveRecipientAddress,
|
||||
fiatApiMode = initialFiatMode,
|
||||
allowBiometricalAuthentication = initialAllowBiometricalAuthentication,
|
||||
disableExchange = initialExchangeEnabled,
|
||||
currentTheme = initialTheme,
|
||||
|
@ -63,6 +69,14 @@ abstract class SettingsStoreBase with Store {
|
|||
priority[WalletType.bitcoin] = initialBitcoinTransactionPriority;
|
||||
}
|
||||
|
||||
if (initialHavenTransactionPriority != null) {
|
||||
priority[WalletType.haven] = initialHavenTransactionPriority;
|
||||
}
|
||||
|
||||
if (initialLitecoinTransactionPriority != null) {
|
||||
priority[WalletType.litecoin] = initialLitecoinTransactionPriority;
|
||||
}
|
||||
|
||||
reaction(
|
||||
(_) => fiatCurrency,
|
||||
(FiatCurrency fiatCurrency) => sharedPreferences.setString(
|
||||
|
@ -74,11 +88,25 @@ abstract class SettingsStoreBase with Store {
|
|||
.setBool(PreferencesKey.shouldShowYatPopup, shouldShowYatPopup));
|
||||
|
||||
priority.observe((change) {
|
||||
final key = change.key == WalletType.monero
|
||||
? PreferencesKey.moneroTransactionPriority
|
||||
: PreferencesKey.bitcoinTransactionPriority;
|
||||
final String? key;
|
||||
switch (change.key) {
|
||||
case WalletType.monero:
|
||||
key = PreferencesKey.moneroTransactionPriority;
|
||||
break;
|
||||
case WalletType.bitcoin:
|
||||
key = PreferencesKey.bitcoinTransactionPriority;
|
||||
break;
|
||||
case WalletType.litecoin:
|
||||
key = PreferencesKey.litecoinTransactionPriority;
|
||||
break;
|
||||
case WalletType.haven:
|
||||
key = PreferencesKey.havenTransactionPriority;
|
||||
break;
|
||||
default:
|
||||
key = null;
|
||||
}
|
||||
|
||||
if (change.newValue != null) {
|
||||
if (change.newValue != null && key != null) {
|
||||
sharedPreferences.setInt(key, change.newValue!.serialize());
|
||||
}
|
||||
});
|
||||
|
@ -89,6 +117,11 @@ abstract class SettingsStoreBase with Store {
|
|||
PreferencesKey.shouldSaveRecipientAddressKey,
|
||||
shouldSaveRecipientAddress));
|
||||
|
||||
reaction(
|
||||
(_) => fiatApiMode,
|
||||
(FiatApiMode mode) => sharedPreferences.setInt(
|
||||
PreferencesKey.currentFiatApiModeKey, mode.serialize()));
|
||||
|
||||
reaction(
|
||||
(_) => currentTheme,
|
||||
(ThemeBase theme) =>
|
||||
|
@ -144,6 +177,9 @@ abstract class SettingsStoreBase with Store {
|
|||
@observable
|
||||
BalanceDisplayMode balanceDisplayMode;
|
||||
|
||||
@observable
|
||||
FiatApiMode fiatApiMode;
|
||||
|
||||
@observable
|
||||
bool shouldSaveRecipientAddress;
|
||||
|
||||
|
@ -195,39 +231,48 @@ abstract class SettingsStoreBase with Store {
|
|||
static Future<SettingsStore> load(
|
||||
{required Box<Node> nodeSource,
|
||||
required bool isBitcoinBuyEnabled,
|
||||
TransactionPriority? initialMoneroTransactionPriority,
|
||||
TransactionPriority? initialBitcoinTransactionPriority,
|
||||
FiatCurrency initialFiatCurrency = FiatCurrency.usd,
|
||||
BalanceDisplayMode initialBalanceDisplayMode =
|
||||
BalanceDisplayMode.availableBalance}) async {
|
||||
if (initialBitcoinTransactionPriority == null) {
|
||||
initialBitcoinTransactionPriority = bitcoin?.getMediumTransactionPriority();
|
||||
}
|
||||
|
||||
if (initialMoneroTransactionPriority == null) {
|
||||
initialMoneroTransactionPriority = monero?.getDefaultTransactionPriority();
|
||||
}
|
||||
|
||||
final sharedPreferences = await getIt.getAsync<SharedPreferences>();
|
||||
final currentFiatCurrency = FiatCurrency.deserialize(raw:
|
||||
sharedPreferences.getString(PreferencesKey.currentFiatCurrencyKey)!);
|
||||
final savedMoneroTransactionPriority =
|
||||
|
||||
TransactionPriority? moneroTransactionPriority =
|
||||
monero?.deserializeMoneroTransactionPriority(
|
||||
raw: sharedPreferences
|
||||
.getInt(PreferencesKey.moneroTransactionPriority)!);
|
||||
final savedBitcoinTransactionPriority =
|
||||
TransactionPriority? bitcoinTransactionPriority =
|
||||
bitcoin?.deserializeBitcoinTransactionPriority(sharedPreferences
|
||||
.getInt(PreferencesKey.bitcoinTransactionPriority)!);
|
||||
final moneroTransactionPriority =
|
||||
savedMoneroTransactionPriority ?? initialMoneroTransactionPriority;
|
||||
final bitcoinTransactionPriority =
|
||||
savedBitcoinTransactionPriority ?? initialBitcoinTransactionPriority;
|
||||
|
||||
TransactionPriority? havenTransactionPriority;
|
||||
TransactionPriority? litecoinTransactionPriority;
|
||||
|
||||
if (sharedPreferences.getInt(PreferencesKey.havenTransactionPriority) != null) {
|
||||
havenTransactionPriority = monero?.deserializeMoneroTransactionPriority(
|
||||
raw: sharedPreferences.getInt(PreferencesKey.havenTransactionPriority)!);
|
||||
}
|
||||
if (sharedPreferences.getInt(PreferencesKey.litecoinTransactionPriority) != null) {
|
||||
litecoinTransactionPriority = bitcoin?.deserializeLitecoinTransactionPriority(
|
||||
sharedPreferences.getInt(PreferencesKey.litecoinTransactionPriority)!);
|
||||
}
|
||||
|
||||
moneroTransactionPriority ??= monero?.getDefaultTransactionPriority();
|
||||
bitcoinTransactionPriority ??= bitcoin?.getMediumTransactionPriority();
|
||||
havenTransactionPriority ??= monero?.getDefaultTransactionPriority();
|
||||
litecoinTransactionPriority ??= bitcoin?.getLitecoinTransactionPriorityMedium();
|
||||
|
||||
final currentBalanceDisplayMode = BalanceDisplayMode.deserialize(
|
||||
raw: sharedPreferences
|
||||
.getInt(PreferencesKey.currentBalanceDisplayModeKey)!);
|
||||
// FIX-ME: Check for which default value we should have here
|
||||
final shouldSaveRecipientAddress =
|
||||
sharedPreferences.getBool(PreferencesKey.shouldSaveRecipientAddressKey) ?? false;
|
||||
final currentFiatApiMode = FiatApiMode.deserialize(
|
||||
raw: sharedPreferences
|
||||
.getInt(PreferencesKey.currentFiatApiModeKey) ?? FiatApiMode.enabled.raw);
|
||||
final allowBiometricalAuthentication = sharedPreferences
|
||||
.getBool(PreferencesKey.allowBiometricalAuthenticationKey) ??
|
||||
false;
|
||||
|
@ -239,8 +284,7 @@ abstract class SettingsStoreBase with Store {
|
|||
: ThemeType.bright.index;
|
||||
final savedTheme = ThemeList.deserialize(
|
||||
raw: sharedPreferences.getInt(PreferencesKey.currentTheme) ??
|
||||
legacyTheme ??
|
||||
0);
|
||||
legacyTheme);
|
||||
final actionListDisplayMode = ObservableList<ActionListDisplayMode>();
|
||||
actionListDisplayMode.addAll(deserializeActionlistDisplayModes(
|
||||
sharedPreferences.getInt(PreferencesKey.displayActionListModeKey) ??
|
||||
|
@ -286,7 +330,7 @@ abstract class SettingsStoreBase with Store {
|
|||
if (havenNode != null) {
|
||||
nodes[WalletType.haven] = havenNode;
|
||||
}
|
||||
|
||||
|
||||
return SettingsStore(
|
||||
sharedPreferences: sharedPreferences,
|
||||
nodes: nodes,
|
||||
|
@ -295,6 +339,7 @@ abstract class SettingsStoreBase with Store {
|
|||
initialFiatCurrency: currentFiatCurrency,
|
||||
initialBalanceDisplayMode: currentBalanceDisplayMode,
|
||||
initialSaveRecipientAddress: shouldSaveRecipientAddress,
|
||||
initialFiatMode: currentFiatApiMode,
|
||||
initialAllowBiometricalAuthentication: allowBiometricalAuthentication,
|
||||
initialExchangeEnabled: disableExchange,
|
||||
initialTheme: savedTheme,
|
||||
|
@ -303,6 +348,8 @@ abstract class SettingsStoreBase with Store {
|
|||
initialLanguageCode: savedLanguageCode,
|
||||
initialMoneroTransactionPriority: moneroTransactionPriority,
|
||||
initialBitcoinTransactionPriority: bitcoinTransactionPriority,
|
||||
initialHavenTransactionPriority: havenTransactionPriority,
|
||||
initialLitecoinTransactionPriority: litecoinTransactionPriority,
|
||||
shouldShowYatPopup: shouldShowYatPopup);
|
||||
}
|
||||
|
||||
|
@ -315,7 +362,7 @@ abstract class SettingsStoreBase with Store {
|
|||
// TransactionPriority? initialBitcoinTransactionPriority,
|
||||
// BalanceDisplayMode initialBalanceDisplayMode =
|
||||
// BalanceDisplayMode.availableBalance}) async {
|
||||
|
||||
|
||||
// if (initialBitcoinTransactionPriority == null) {
|
||||
// initialBitcoinTransactionPriority = bitcoin?.getMediumTransactionPriority();
|
||||
// }
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import 'package:cake_wallet/entities/fiat_api_mode.dart';
|
||||
import 'package:cake_wallet/store/settings_store.dart';
|
||||
import 'package:cake_wallet/view_model/settings/switcher_list_item.dart';
|
||||
import 'package:cw_core/wallet_type.dart';
|
||||
|
@ -11,15 +12,13 @@ class AdvancedPrivacySettingsViewModel = AdvancedPrivacySettingsViewModelBase
|
|||
|
||||
abstract class AdvancedPrivacySettingsViewModelBase with Store {
|
||||
AdvancedPrivacySettingsViewModelBase(this.type, this._settingsStore)
|
||||
: _disableFiat = false,
|
||||
_addCustomNode = false {
|
||||
: _addCustomNode = false {
|
||||
settings = [
|
||||
// TODO: uncomment when Disable Fiat PR is merged
|
||||
// SwitcherListItem(
|
||||
// title: S.current.disable_fiat,
|
||||
// value: () => _disableFiat,
|
||||
// onValueChange: (_, bool value) => _disableFiat = value,
|
||||
// ),
|
||||
SwitcherListItem(
|
||||
title: S.current.disable_fiat,
|
||||
value: () => _settingsStore.fiatApiMode == FiatApiMode.disabled,
|
||||
onValueChange: (_, bool value) => setFiatMode(value),
|
||||
),
|
||||
SwitcherListItem(
|
||||
title: S.current.disable_exchange,
|
||||
value: () => _settingsStore.disableExchange,
|
||||
|
@ -37,9 +36,6 @@ abstract class AdvancedPrivacySettingsViewModelBase with Store {
|
|||
|
||||
late List<SwitcherListItem> settings;
|
||||
|
||||
@observable
|
||||
bool _disableFiat = false;
|
||||
|
||||
@observable
|
||||
bool _addCustomNode = false;
|
||||
|
||||
|
@ -48,4 +44,13 @@ abstract class AdvancedPrivacySettingsViewModelBase with Store {
|
|||
|
||||
@computed
|
||||
bool get addCustomNode => _addCustomNode;
|
||||
|
||||
@action
|
||||
void setFiatMode(bool value) {
|
||||
if (value) {
|
||||
_settingsStore.fiatApiMode = FiatApiMode.disabled;
|
||||
return;
|
||||
}
|
||||
_settingsStore.fiatApiMode = FiatApiMode.enabled;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import 'package:cake_wallet/entities/fiat_api_mode.dart';
|
||||
import 'package:cw_core/transaction_history.dart';
|
||||
import 'package:cw_core/wallet_base.dart';
|
||||
import 'package:cw_core/balance.dart';
|
||||
|
@ -10,7 +11,6 @@ import 'package:cake_wallet/entities/calculate_fiat_amount.dart';
|
|||
import 'package:cake_wallet/store/app_store.dart';
|
||||
import 'package:cake_wallet/store/settings_store.dart';
|
||||
import 'package:cake_wallet/store/dashboard/fiat_conversion_store.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:mobx/mobx.dart';
|
||||
|
||||
part 'balance_view_model.g.dart';
|
||||
|
@ -71,6 +71,9 @@ abstract class BalanceViewModelBase with Store {
|
|||
@computed
|
||||
BalanceDisplayMode get savedDisplayMode => settingsStore.balanceDisplayMode;
|
||||
|
||||
@computed
|
||||
bool get isFiatDisabled => settingsStore.fiatApiMode == FiatApiMode.disabled;
|
||||
|
||||
@computed
|
||||
String get asset {
|
||||
final typeFormatted = walletTypeToString(appStore.wallet!.type);
|
||||
|
@ -180,8 +183,8 @@ abstract class BalanceViewModelBase with Store {
|
|||
return MapEntry(key, BalanceRecord(
|
||||
availableBalance: '---',
|
||||
additionalBalance: '---',
|
||||
fiatAdditionalBalance: '---',
|
||||
fiatAvailableBalance: '---',
|
||||
fiatAdditionalBalance: isFiatDisabled ? '' : '---',
|
||||
fiatAvailableBalance: isFiatDisabled ? '' : '---',
|
||||
asset: key,
|
||||
formattedAssetTitle: _formatterAsset(key)));
|
||||
}
|
||||
|
@ -192,17 +195,17 @@ abstract class BalanceViewModelBase with Store {
|
|||
// throw Exception('Price is null for: $key');
|
||||
// }
|
||||
|
||||
final additionalFiatBalance = fiatCurrency.toString()
|
||||
+ ' '
|
||||
final additionalFiatBalance = isFiatDisabled ? '' : (fiatCurrency.toString()
|
||||
+ ' '
|
||||
+ _getFiatBalance(
|
||||
price: price,
|
||||
cryptoAmount: value.formattedAdditionalBalance);
|
||||
cryptoAmount: value.formattedAdditionalBalance));
|
||||
|
||||
final availableFiatBalance = fiatCurrency.toString()
|
||||
+ ' '
|
||||
final availableFiatBalance = isFiatDisabled ? '' : (fiatCurrency.toString()
|
||||
+ ' '
|
||||
+ _getFiatBalance(
|
||||
price: price,
|
||||
cryptoAmount: value.formattedAvailableBalance);
|
||||
cryptoAmount: value.formattedAvailableBalance));
|
||||
|
||||
return MapEntry(key, BalanceRecord(
|
||||
availableBalance: value.formattedAvailableBalance,
|
||||
|
|
|
@ -72,6 +72,18 @@ abstract class ExchangeTradeViewModelBase with Store {
|
|||
? '\n\n' + S.current.xrp_extra_info
|
||||
: '';
|
||||
|
||||
@computed
|
||||
String get pendingTransactionFiatAmountValueFormatted =>
|
||||
sendViewModel.isFiatDisabled
|
||||
? '' : sendViewModel.pendingTransactionFiatAmount
|
||||
+ ' ' + sendViewModel.fiat.title;
|
||||
|
||||
@computed
|
||||
String get pendingTransactionFeeFiatAmountFormatted =>
|
||||
sendViewModel.isFiatDisabled
|
||||
? '' : sendViewModel.pendingTransactionFeeFiatAmount
|
||||
+ ' ' + sendViewModel.fiat.title;
|
||||
|
||||
@observable
|
||||
ObservableList<ExchangeTradeItem> items;
|
||||
|
||||
|
|
|
@ -142,6 +142,19 @@ abstract class SendViewModelBase with Store {
|
|||
@computed
|
||||
String get balance => balanceViewModel.availableBalance;
|
||||
|
||||
@computed
|
||||
bool get isFiatDisabled => balanceViewModel.isFiatDisabled;
|
||||
|
||||
@computed
|
||||
String get pendingTransactionFiatAmountFormatted =>
|
||||
isFiatDisabled ? '' : pendingTransactionFiatAmount +
|
||||
' ' + fiat.title;
|
||||
|
||||
@computed
|
||||
String get pendingTransactionFeeFiatAmountFormatted =>
|
||||
isFiatDisabled ? '' : pendingTransactionFeeFiatAmount +
|
||||
' ' + fiat.title;
|
||||
|
||||
@computed
|
||||
bool get isReadyForSend => _wallet.syncStatus is SyncedSyncStatus;
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@ import 'package:cake_wallet/entities/fiat_currency.dart';
|
|||
import 'package:cake_wallet/store/settings_store.dart';
|
||||
import 'package:cake_wallet/themes/theme_base.dart';
|
||||
import 'package:mobx/mobx.dart';
|
||||
import 'package:cake_wallet/entities/fiat_api_mode.dart';
|
||||
|
||||
part 'display_settings_view_model.g.dart';
|
||||
|
||||
|
@ -30,6 +31,9 @@ abstract class DisplaySettingsViewModelBase with Store {
|
|||
@computed
|
||||
ThemeBase get theme => _settingsStore.currentTheme;
|
||||
|
||||
@computed
|
||||
bool get disabledFiatApiMode => _settingsStore.fiatApiMode == FiatApiMode.disabled;
|
||||
|
||||
@action
|
||||
void setBalanceDisplayMode(BalanceDisplayMode value) => _settingsStore.balanceDisplayMode = value;
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import 'package:cake_wallet/store/settings_store.dart';
|
||||
import 'package:mobx/mobx.dart';
|
||||
import 'package:cake_wallet/entities/fiat_api_mode.dart';
|
||||
|
||||
part 'privacy_settings_view_model.g.dart';
|
||||
|
||||
|
@ -16,9 +17,22 @@ abstract class PrivacySettingsViewModelBase with Store {
|
|||
@computed
|
||||
bool get shouldSaveRecipientAddress => _settingsStore.shouldSaveRecipientAddress;
|
||||
|
||||
@computed
|
||||
bool get isFiatDisabled => _settingsStore.fiatApiMode == FiatApiMode.disabled;
|
||||
|
||||
@action
|
||||
void setShouldSaveRecipientAddress(bool value) => _settingsStore.shouldSaveRecipientAddress = value;
|
||||
|
||||
@action
|
||||
void setEnableExchange(bool value) => _settingsStore.disableExchange = value;
|
||||
|
||||
@action
|
||||
void setFiatMode(bool value) {
|
||||
if (value) {
|
||||
_settingsStore.fiatApiMode = FiatApiMode.disabled;
|
||||
return;
|
||||
}
|
||||
_settingsStore.fiatApiMode = FiatApiMode.enabled;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -664,5 +664,10 @@
|
|||
"disable_exchange": "Exchange deaktivieren",
|
||||
"advanced_privacy_settings": "Erweiterte Datenschutzeinstellungen",
|
||||
"settings_can_be_changed_later": "Diese Einstellungen können später in den App-Einstellungen geändert werden",
|
||||
"add_custom_node": "Neuen benutzerdefinierten Knoten hinzufügen"
|
||||
"add_custom_node": "Neuen benutzerdefinierten Knoten hinzufügen",
|
||||
"disable_fiat": "Fiat deaktivieren",
|
||||
"fiat_api": "Fiat API",
|
||||
"disabled": "Deaktiviert",
|
||||
"enabled": "Ermöglicht",
|
||||
"tor_only": "Nur Tor"
|
||||
}
|
||||
|
|
|
@ -664,5 +664,10 @@
|
|||
"disable_exchange": "Disable exchange",
|
||||
"advanced_privacy_settings": "Advanced Privacy Settings",
|
||||
"settings_can_be_changed_later": "These settings can be changed later in the app settings",
|
||||
"add_custom_node": "Add New Custom Node"
|
||||
"add_custom_node": "Add New Custom Node",
|
||||
"disable_fiat": "Disable fiat",
|
||||
"fiat_api": "Fiat API",
|
||||
"disabled": "Disabled",
|
||||
"enabled": "Enabled",
|
||||
"tor_only": "Tor only"
|
||||
}
|
||||
|
|
|
@ -664,5 +664,10 @@
|
|||
"disable_exchange": "Deshabilitar intercambio",
|
||||
"advanced_privacy_settings": "Configuración avanzada de privacidad",
|
||||
"settings_can_be_changed_later": "Estas configuraciones se pueden cambiar más tarde en la configuración de la aplicación",
|
||||
"add_custom_node": "Agregar nuevo nodo personalizado"
|
||||
"add_custom_node": "Agregar nuevo nodo personalizado",
|
||||
"disable_fiat": "Deshabilitar fiat",
|
||||
"fiat_api": "Fiat API",
|
||||
"disabled": "Desactivado",
|
||||
"enabled": "Activado",
|
||||
"tor_only": "solo Tor"
|
||||
}
|
||||
|
|
|
@ -662,5 +662,10 @@
|
|||
"disable_exchange": "Désactiver l'échange",
|
||||
"advanced_privacy_settings": "Paramètres de confidentialité avancés",
|
||||
"settings_can_be_changed_later": "Ces paramètres peuvent être modifiés ultérieurement dans les paramètres de l'application",
|
||||
"add_custom_node": "Ajouter un nouveau nœud personnalisé"
|
||||
"add_custom_node": "Ajouter un nouveau nœud personnalisé",
|
||||
"disable_fiat": "Désactiver fiat",
|
||||
"fiat_api": "Fiat API",
|
||||
"disabled": "Handicapé",
|
||||
"enabled": "Activé",
|
||||
"tor_only": "Tor uniquement"
|
||||
}
|
||||
|
|
|
@ -664,5 +664,10 @@
|
|||
"disable_exchange": "एक्सचेंज अक्षम करें",
|
||||
"advanced_privacy_settings": "उन्नत गोपनीयता सेटिंग्स",
|
||||
"settings_can_be_changed_later": "इन सेटिंग्स को बाद में ऐप सेटिंग में बदला जा सकता है",
|
||||
"add_custom_node": "नया कस्टम नोड जोड़ें"
|
||||
"add_custom_node": "नया कस्टम नोड जोड़ें",
|
||||
"disable_exchange": "एक्सचेंज अक्षम करें",
|
||||
"fiat_api": "फिएट पैसे API",
|
||||
"disabled": "अक्षम",
|
||||
"enabled": "सक्रिय",
|
||||
"tor_only": "Tor केवल"
|
||||
}
|
||||
|
|
|
@ -664,5 +664,10 @@
|
|||
"disable_exchange": "Onemogući exchange",
|
||||
"advanced_privacy_settings": "Napredne postavke privatnosti",
|
||||
"settings_can_be_changed_later": "Te se postavke mogu promijeniti kasnije u postavkama aplikacije",
|
||||
"add_custom_node": "Dodaj novi prilagođeni čvor"
|
||||
"add_custom_node": "Dodaj novi prilagođeni čvor",
|
||||
"disable_fiat": "Isključi, fiat",
|
||||
"fiat_api": "Fiat API",
|
||||
"disabled": "Onemogućeno",
|
||||
"enabled": "Omogućeno",
|
||||
"tor_only": "Samo Tor"
|
||||
}
|
||||
|
|
|
@ -664,5 +664,10 @@
|
|||
"disable_exchange": "Disabilita scambio",
|
||||
"advanced_privacy_settings": "Impostazioni avanzate sulla privacy",
|
||||
"settings_can_be_changed_later": "Queste impostazioni possono essere modificate in seguito nelle impostazioni dell'app",
|
||||
"add_custom_node": "Aggiungi nuovo nodo personalizzato"
|
||||
"add_custom_node": "Aggiungi nuovo nodo personalizzato",
|
||||
"disable_fiat": "Disabilita fiat",
|
||||
"fiat_api": "Fiat API",
|
||||
"disabled": "Disabilitato",
|
||||
"enabled": "Abilitato",
|
||||
"tor_only": "Solo Tor"
|
||||
}
|
||||
|
|
|
@ -664,5 +664,10 @@
|
|||
"disable_exchange": "交換を無効にする",
|
||||
"advanced_privacy_settings": "高度なプライバシー設定",
|
||||
"settings_can_be_changed_later": "これらの設定は、後でアプリの設定で変更できます",
|
||||
"add_custom_node": "新しいカスタム ノードを追加"
|
||||
"add_custom_node": "新しいカスタム ノードを追加",
|
||||
"disable_fiat": "フィアットを無効にする",
|
||||
"fiat_api": "不換紙幣 API",
|
||||
"disabled": "無効",
|
||||
"enabled": "有効",
|
||||
"tor_only": "Torのみ"
|
||||
}
|
||||
|
|
|
@ -664,5 +664,10 @@
|
|||
"disable_exchange": "교환 비활성화",
|
||||
"advanced_privacy_settings": "고급 개인 정보 설정",
|
||||
"settings_can_be_changed_later": "이 설정은 나중에 앱 설정에서 변경할 수 있습니다.",
|
||||
"add_custom_node": "새 사용자 정의 노드 추가"
|
||||
"add_custom_node": "새 사용자 정의 노드 추가",
|
||||
"disable_fiat": "법정화폐 비활성화",
|
||||
"fiat_api": "명목 화폐 API",
|
||||
"disabled": "장애가 있는",
|
||||
"enabled": "사용",
|
||||
"tor_only": "Tor 뿐"
|
||||
}
|
||||
|
|
|
@ -664,5 +664,10 @@
|
|||
"disable_exchange": "Uitwisseling uitschakelen",
|
||||
"advanced_privacy_settings": "Geavanceerde privacy-instellingen",
|
||||
"settings_can_be_changed_later": "Deze instellingen kunnen later worden gewijzigd in de app-instellingen",
|
||||
"add_custom_node": "Voeg een nieuw aangepast knooppunt toe"
|
||||
"add_custom_node": "Voeg een nieuw aangepast knooppunt toe",
|
||||
"disable_fiat": "Schakel Fiat uit",
|
||||
"fiat_api": "Fiat API",
|
||||
"disabled": "Gehandicapt",
|
||||
"enabled": "Ingeschakeld",
|
||||
"tor_only": "Alleen Tor"
|
||||
}
|
||||
|
|
|
@ -664,5 +664,10 @@
|
|||
"disable_exchange": "Wyłącz wymianę",
|
||||
"advanced_privacy_settings": "Zaawansowane ustawienia prywatności",
|
||||
"settings_can_be_changed_later": "Te ustawienia można później zmienić w ustawieniach aplikacji",
|
||||
"add_custom_node": "Dodaj nowy węzeł niestandardowy"
|
||||
"add_custom_node": "Dodaj nowy węzeł niestandardowy",
|
||||
"disable_fiat": "Wyłącz fiat",
|
||||
"fiat_api": "API Fiata",
|
||||
"disabled": "Wyłączone",
|
||||
"enabled": "Włączony",
|
||||
"tor_only": "Tylko Tor"
|
||||
}
|
||||
|
|
|
@ -663,5 +663,10 @@
|
|||
"disable_exchange": "Desativar troca",
|
||||
"advanced_privacy_settings": "Configurações de privacidade avançadas",
|
||||
"settings_can_be_changed_later": "Essas configurações podem ser alteradas posteriormente nas configurações do aplicativo",
|
||||
"add_custom_node": "Adicionar novo nó personalizado"
|
||||
"add_custom_node": "Adicionar novo nó personalizado",
|
||||
"disable_fiat": "Desativar fiat",
|
||||
"fiat_api": "API da Fiat",
|
||||
"disabled": "Desabilitado",
|
||||
"enabled": "Habilitado",
|
||||
"tor_only": "Tor apenas"
|
||||
}
|
||||
|
|
|
@ -664,5 +664,10 @@
|
|||
"disable_exchange": "Отключить обмен",
|
||||
"advanced_privacy_settings": "Расширенные настройки конфиденциальности",
|
||||
"settings_can_be_changed_later": "Эти настройки можно изменить позже в настройках приложения.",
|
||||
"add_custom_node": "Добавить новый пользовательский узел"
|
||||
"add_custom_node": "Добавить новый пользовательский узел",
|
||||
"disable_fiat": "Отключить фиат",
|
||||
"fiat_api": "Фиат API",
|
||||
"disabled": "Отключено",
|
||||
"enabled": "Включено",
|
||||
"tor_only": "Только Tor"
|
||||
}
|
||||
|
|
|
@ -663,5 +663,11 @@
|
|||
"disable_exchange": "Вимкнути exchange",
|
||||
"advanced_privacy_settings": "Розширені налаштування конфіденційності",
|
||||
"settings_can_be_changed_later": "Ці параметри можна змінити пізніше в налаштуваннях програми",
|
||||
"add_custom_node": "Додати новий спеціальний вузол"
|
||||
"add_custom_node": "Додати новий спеціальний вузол",
|
||||
"disable_fiat": "Вимкнути фиат",
|
||||
"fiat_api": "Фіат API",
|
||||
"disabled": "Вимкнено",
|
||||
"enabled": "Увімкнено",
|
||||
"tor_only": "Тільки Tor"
|
||||
|
||||
}
|
||||
|
|
|
@ -662,5 +662,10 @@
|
|||
"disable_exchange": "禁用交换",
|
||||
"advanced_privacy_settings": "高级隐私设置",
|
||||
"settings_can_be_changed_later": "稍后可以在应用设置中更改这些设置",
|
||||
"add_custom_node": "添加新的自定义节点"
|
||||
"add_custom_node": "添加新的自定义节点",
|
||||
"disable_fiat": "禁用法令",
|
||||
"fiat_api": "法币API",
|
||||
"disabled": "禁用",
|
||||
"enabled": "启用",
|
||||
"tor_only": "仅限 Tor"
|
||||
}
|
||||
|
|
|
@ -75,6 +75,7 @@ abstract class Bitcoin {
|
|||
List<TransactionPriority> getTransactionPriorities();
|
||||
List<TransactionPriority> getLitecoinTransactionPriorities();
|
||||
TransactionPriority deserializeBitcoinTransactionPriority(int raw);
|
||||
TransactionPriority deserializeLitecoinTransactionPriority(int raw);
|
||||
int getFeeRate(Object wallet, TransactionPriority priority);
|
||||
Future<void> generateNewAddress(Object wallet);
|
||||
Object createBitcoinTransactionCredentials(List<Output> outputs, {required TransactionPriority priority, int? feeRate});
|
||||
|
|
Loading…
Reference in a new issue