mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2024-12-23 03:59:23 +00:00
add frozen balance to dashboard
This commit is contained in:
parent
505e407229
commit
9f35c39f2d
34 changed files with 209 additions and 47 deletions
|
@ -4,7 +4,7 @@ import 'package:cw_bitcoin/bitcoin_amount_format.dart';
|
||||||
import 'package:cw_core/balance.dart';
|
import 'package:cw_core/balance.dart';
|
||||||
|
|
||||||
class ElectrumBalance extends Balance {
|
class ElectrumBalance extends Balance {
|
||||||
const ElectrumBalance({required this.confirmed, required this.unconfirmed})
|
const ElectrumBalance({required this.confirmed, required this.unconfirmed, required this.frozen})
|
||||||
: super(confirmed, unconfirmed);
|
: super(confirmed, unconfirmed);
|
||||||
|
|
||||||
static ElectrumBalance? fromJSON(String? jsonSource) {
|
static ElectrumBalance? fromJSON(String? jsonSource) {
|
||||||
|
@ -16,11 +16,13 @@ class ElectrumBalance extends Balance {
|
||||||
|
|
||||||
return ElectrumBalance(
|
return ElectrumBalance(
|
||||||
confirmed: decoded['confirmed'] as int? ?? 0,
|
confirmed: decoded['confirmed'] as int? ?? 0,
|
||||||
unconfirmed: decoded['unconfirmed'] as int? ?? 0);
|
unconfirmed: decoded['unconfirmed'] as int? ?? 0,
|
||||||
|
frozen: decoded['frozen'] as int? ?? 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
final int confirmed;
|
final int confirmed;
|
||||||
final int unconfirmed;
|
final int unconfirmed;
|
||||||
|
final int frozen;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get formattedAvailableBalance =>
|
String get formattedAvailableBalance =>
|
||||||
|
@ -30,6 +32,15 @@ class ElectrumBalance extends Balance {
|
||||||
String get formattedAdditionalBalance =>
|
String get formattedAdditionalBalance =>
|
||||||
bitcoinAmountToString(amount: unconfirmed);
|
bitcoinAmountToString(amount: unconfirmed);
|
||||||
|
|
||||||
|
String get formattedFrozenBalance {
|
||||||
|
final frozenFormatted = bitcoinAmountToString(amount: frozen);
|
||||||
|
return frozenFormatted == '0.0' ? '' : frozenFormatted;
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get formattedTotalAvailableBalance =>
|
||||||
|
bitcoinAmountToString(amount: confirmed - frozen);
|
||||||
|
|
||||||
String toJSON() =>
|
String toJSON() =>
|
||||||
json.encode({'confirmed': confirmed, 'unconfirmed': unconfirmed});
|
json.encode({'confirmed': confirmed, 'unconfirmed': unconfirmed, 'frozen': frozen});
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,7 +63,8 @@ abstract class ElectrumWalletBase extends WalletBase<ElectrumBalance,
|
||||||
_scripthashesUpdateSubject = {},
|
_scripthashesUpdateSubject = {},
|
||||||
balance = ObservableMap<CryptoCurrency, ElectrumBalance>.of(
|
balance = ObservableMap<CryptoCurrency, ElectrumBalance>.of(
|
||||||
currency != null
|
currency != null
|
||||||
? {currency: initialBalance ?? const ElectrumBalance(confirmed: 0, unconfirmed: 0)}
|
? {currency: initialBalance ?? const ElectrumBalance(confirmed: 0, unconfirmed: 0,
|
||||||
|
frozen: 0)}
|
||||||
: {}),
|
: {}),
|
||||||
this.unspentCoinsInfo = unspentCoinsInfo,
|
this.unspentCoinsInfo = unspentCoinsInfo,
|
||||||
super(walletInfo) {
|
super(walletInfo) {
|
||||||
|
@ -133,8 +134,8 @@ abstract class ElectrumWalletBase extends WalletBase<ElectrumBalance,
|
||||||
await walletAddresses.discoverAddresses();
|
await walletAddresses.discoverAddresses();
|
||||||
await updateTransactions();
|
await updateTransactions();
|
||||||
_subscribeForUpdates();
|
_subscribeForUpdates();
|
||||||
await _updateBalance();
|
|
||||||
await updateUnspent();
|
await updateUnspent();
|
||||||
|
await updateBalance();
|
||||||
_feeRates = await electrumClient.feeRates();
|
_feeRates = await electrumClient.feeRates();
|
||||||
|
|
||||||
Timer.periodic(const Duration(minutes: 1),
|
Timer.periodic(const Duration(minutes: 1),
|
||||||
|
@ -343,7 +344,7 @@ abstract class ElectrumWalletBase extends WalletBase<ElectrumBalance,
|
||||||
electrumClient: electrumClient, amount: amount, fee: fee)
|
electrumClient: electrumClient, amount: amount, fee: fee)
|
||||||
..addListener((transaction) async {
|
..addListener((transaction) async {
|
||||||
transactionHistory.addOne(transaction);
|
transactionHistory.addOne(transaction);
|
||||||
await _updateBalance();
|
await updateBalance();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -634,8 +635,8 @@ abstract class ElectrumWalletBase extends WalletBase<ElectrumBalance,
|
||||||
_scripthashesUpdateSubject[sh] = electrumClient.scripthashUpdate(sh);
|
_scripthashesUpdateSubject[sh] = electrumClient.scripthashUpdate(sh);
|
||||||
_scripthashesUpdateSubject[sh]?.listen((event) async {
|
_scripthashesUpdateSubject[sh]?.listen((event) async {
|
||||||
try {
|
try {
|
||||||
await _updateBalance();
|
|
||||||
await updateUnspent();
|
await updateUnspent();
|
||||||
|
await updateBalance();
|
||||||
await updateTransactions();
|
await updateTransactions();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
print(e.toString());
|
print(e.toString());
|
||||||
|
@ -655,6 +656,15 @@ abstract class ElectrumWalletBase extends WalletBase<ElectrumBalance,
|
||||||
balanceFutures.add(balanceFuture);
|
balanceFutures.add(balanceFuture);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var totalFrozen = 0;
|
||||||
|
unspentCoinsInfo.values.forEach((info) {
|
||||||
|
unspentCoins.forEach((element) {
|
||||||
|
if (element.hash == info.hash && info.isFrozen) {
|
||||||
|
totalFrozen += element.value;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
final balances = await Future.wait(balanceFutures);
|
final balances = await Future.wait(balanceFutures);
|
||||||
var totalConfirmed = 0;
|
var totalConfirmed = 0;
|
||||||
var totalUnconfirmed = 0;
|
var totalUnconfirmed = 0;
|
||||||
|
@ -672,10 +682,11 @@ abstract class ElectrumWalletBase extends WalletBase<ElectrumBalance,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ElectrumBalance(confirmed: totalConfirmed, unconfirmed: totalUnconfirmed);
|
return ElectrumBalance(confirmed: totalConfirmed, unconfirmed: totalUnconfirmed,
|
||||||
|
frozen: totalFrozen);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> _updateBalance() async {
|
Future<void> updateBalance() async {
|
||||||
balance[currency] = await _fetchBalances();
|
balance[currency] = await _fetchBalances();
|
||||||
await save();
|
await save();
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,7 @@ class ElectrumWallletSnapshot {
|
||||||
.map((addr) => BitcoinAddressRecord.fromJSON(addr))
|
.map((addr) => BitcoinAddressRecord.fromJSON(addr))
|
||||||
.toList();
|
.toList();
|
||||||
final balance = ElectrumBalance.fromJSON(data['balance'] as String) ??
|
final balance = ElectrumBalance.fromJSON(data['balance'] as String) ??
|
||||||
ElectrumBalance(confirmed: 0, unconfirmed: 0);
|
ElectrumBalance(confirmed: 0, unconfirmed: 0, frozen: 0);
|
||||||
var regularAddressIndex = 0;
|
var regularAddressIndex = 0;
|
||||||
var changeAddressIndex = 0;
|
var changeAddressIndex = 0;
|
||||||
|
|
||||||
|
|
|
@ -8,4 +8,8 @@ abstract class Balance {
|
||||||
String get formattedAvailableBalance;
|
String get formattedAvailableBalance;
|
||||||
|
|
||||||
String get formattedAdditionalBalance;
|
String get formattedAdditionalBalance;
|
||||||
|
|
||||||
|
String get formattedFrozenBalance;
|
||||||
|
|
||||||
|
String get formattedTotalAvailableBalance;
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,4 +26,10 @@ class MoneroBalance extends Balance {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get formattedAdditionalBalance => formattedFullBalance;
|
String get formattedAdditionalBalance => formattedFullBalance;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get formattedFrozenBalance => '';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get formattedTotalAvailableBalance => '';
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,4 +71,6 @@ abstract class WalletBase<
|
||||||
void close();
|
void close();
|
||||||
|
|
||||||
Future<void> changePassword(String password);
|
Future<void> changePassword(String password);
|
||||||
|
|
||||||
|
Future<void>? updateBalance();
|
||||||
}
|
}
|
||||||
|
|
|
@ -104,6 +104,9 @@ abstract class HavenWalletBase extends WalletBase<MoneroBalance,
|
||||||
(_) async => await save());
|
(_) async => await save());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<void>? updateBalance() => null;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void close() {
|
void close() {
|
||||||
_listener?.stop();
|
_listener?.stop();
|
||||||
|
|
|
@ -118,6 +118,8 @@ abstract class MoneroWalletBase extends WalletBase<MoneroBalance,
|
||||||
Duration(seconds: _autoSaveInterval),
|
Duration(seconds: _autoSaveInterval),
|
||||||
(_) async => await save());
|
(_) async => await save());
|
||||||
}
|
}
|
||||||
|
@override
|
||||||
|
Future<void>? updateBalance() => null;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void close() {
|
void close() {
|
||||||
|
|
|
@ -75,6 +75,8 @@ class BalancePage extends StatelessWidget{
|
||||||
additionalBalanceLabel: '${dashboardViewModel.balanceViewModel.additionalBalanceLabel}',
|
additionalBalanceLabel: '${dashboardViewModel.balanceViewModel.additionalBalanceLabel}',
|
||||||
additionalBalance: balance.additionalBalance,
|
additionalBalance: balance.additionalBalance,
|
||||||
additionalFiatBalance: balance.fiatAdditionalBalance,
|
additionalFiatBalance: balance.fiatAdditionalBalance,
|
||||||
|
frozenBalance: balance.frozenBalance,
|
||||||
|
frozenFiatBalance: balance.fiatFrozenBalance,
|
||||||
currency: balance.formattedAssetTitle);
|
currency: balance.formattedAssetTitle);
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
@ -88,6 +90,8 @@ class BalancePage extends StatelessWidget{
|
||||||
required String additionalBalanceLabel,
|
required String additionalBalanceLabel,
|
||||||
required String additionalBalance,
|
required String additionalBalance,
|
||||||
required String additionalFiatBalance,
|
required String additionalFiatBalance,
|
||||||
|
required String frozenBalance,
|
||||||
|
required String frozenFiatBalance,
|
||||||
required String currency}) {
|
required String currency}) {
|
||||||
return Container(
|
return Container(
|
||||||
margin: const EdgeInsets.only(left: 16, right: 16),
|
margin: const EdgeInsets.only(left: 16, right: 16),
|
||||||
|
@ -154,6 +158,49 @@ class BalancePage extends StatelessWidget{
|
||||||
.backgroundColor!,
|
.backgroundColor!,
|
||||||
height: 1)),
|
height: 1)),
|
||||||
SizedBox(height: 26),
|
SizedBox(height: 26),
|
||||||
|
if(frozenBalance.isNotEmpty)
|
||||||
|
Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Text(S.current.frozen_balance + ':',
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 12,
|
||||||
|
fontFamily: 'Lato',
|
||||||
|
fontWeight: FontWeight.w400,
|
||||||
|
color: Theme.of(context)
|
||||||
|
.accentTextTheme!
|
||||||
|
.headline3!
|
||||||
|
.backgroundColor!,
|
||||||
|
height: 1)),
|
||||||
|
SizedBox(height: 8),
|
||||||
|
AutoSizeText(
|
||||||
|
frozenBalance,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 20,
|
||||||
|
fontFamily: 'Lato',
|
||||||
|
fontWeight: FontWeight.w400,
|
||||||
|
color: Theme.of(context)
|
||||||
|
.accentTextTheme!
|
||||||
|
.headline2!
|
||||||
|
.backgroundColor!,
|
||||||
|
height: 1),
|
||||||
|
maxLines: 1,
|
||||||
|
textAlign: TextAlign.center),
|
||||||
|
SizedBox(height: 4),
|
||||||
|
Text(frozenFiatBalance,
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 12,
|
||||||
|
fontFamily: 'Lato',
|
||||||
|
fontWeight: FontWeight.w400,
|
||||||
|
color: Theme.of(context)
|
||||||
|
.accentTextTheme!
|
||||||
|
.headline2!
|
||||||
|
.backgroundColor!,
|
||||||
|
height: 1),
|
||||||
|
),
|
||||||
|
SizedBox(height: 12)]),
|
||||||
Text('${additionalBalanceLabel}',
|
Text('${additionalBalanceLabel}',
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
|
import 'package:cake_wallet/bitcoin/bitcoin.dart';
|
||||||
import 'package:cake_wallet/entities/fiat_api_mode.dart';
|
import 'package:cake_wallet/entities/fiat_api_mode.dart';
|
||||||
|
import 'package:cw_bitcoin/bitcoin_amount_format.dart';
|
||||||
import 'package:cw_core/transaction_history.dart';
|
import 'package:cw_core/transaction_history.dart';
|
||||||
|
import 'package:cw_core/unspent_coins_info.dart';
|
||||||
import 'package:cw_core/wallet_base.dart';
|
import 'package:cw_core/wallet_base.dart';
|
||||||
import 'package:cw_core/balance.dart';
|
import 'package:cw_core/balance.dart';
|
||||||
import 'package:cw_core/crypto_currency.dart';
|
import 'package:cw_core/crypto_currency.dart';
|
||||||
|
@ -11,6 +14,7 @@ import 'package:cake_wallet/entities/calculate_fiat_amount.dart';
|
||||||
import 'package:cake_wallet/store/app_store.dart';
|
import 'package:cake_wallet/store/app_store.dart';
|
||||||
import 'package:cake_wallet/store/settings_store.dart';
|
import 'package:cake_wallet/store/settings_store.dart';
|
||||||
import 'package:cake_wallet/store/dashboard/fiat_conversion_store.dart';
|
import 'package:cake_wallet/store/dashboard/fiat_conversion_store.dart';
|
||||||
|
import 'package:hive/hive.dart';
|
||||||
import 'package:mobx/mobx.dart';
|
import 'package:mobx/mobx.dart';
|
||||||
|
|
||||||
part 'balance_view_model.g.dart';
|
part 'balance_view_model.g.dart';
|
||||||
|
@ -19,14 +23,18 @@ class BalanceRecord {
|
||||||
const BalanceRecord({
|
const BalanceRecord({
|
||||||
required this.availableBalance,
|
required this.availableBalance,
|
||||||
required this.additionalBalance,
|
required this.additionalBalance,
|
||||||
|
required this.frozenBalance,
|
||||||
required this.fiatAvailableBalance,
|
required this.fiatAvailableBalance,
|
||||||
required this.fiatAdditionalBalance,
|
required this.fiatAdditionalBalance,
|
||||||
|
required this.fiatFrozenBalance,
|
||||||
required this.asset,
|
required this.asset,
|
||||||
required this.formattedAssetTitle});
|
required this.formattedAssetTitle});
|
||||||
final String fiatAdditionalBalance;
|
final String fiatAdditionalBalance;
|
||||||
final String fiatAvailableBalance;
|
final String fiatAvailableBalance;
|
||||||
|
final String fiatFrozenBalance;
|
||||||
final String additionalBalance;
|
final String additionalBalance;
|
||||||
final String availableBalance;
|
final String availableBalance;
|
||||||
|
final String frozenBalance;
|
||||||
final CryptoCurrency asset;
|
final CryptoCurrency asset;
|
||||||
final String formattedAssetTitle;
|
final String formattedAssetTitle;
|
||||||
}
|
}
|
||||||
|
@ -135,6 +143,32 @@ abstract class BalanceViewModelBase with Store {
|
||||||
return walletBalance.formattedAvailableBalance;
|
return walletBalance.formattedAvailableBalance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@computed
|
||||||
|
String get frozenBalance {
|
||||||
|
final walletBalance = _walletBalance;
|
||||||
|
|
||||||
|
if (displayMode == BalanceDisplayMode.hiddenBalance) {
|
||||||
|
return '---';
|
||||||
|
}
|
||||||
|
|
||||||
|
return walletBalance.formattedFrozenBalance;
|
||||||
|
}
|
||||||
|
|
||||||
|
@computed
|
||||||
|
String get frozenFiatBalance {
|
||||||
|
final walletBalance = _walletBalance;
|
||||||
|
final fiatCurrency = settingsStore.fiatCurrency;
|
||||||
|
|
||||||
|
if (displayMode == BalanceDisplayMode.hiddenBalance) {
|
||||||
|
return '---';
|
||||||
|
}
|
||||||
|
|
||||||
|
return _getFiatBalance(
|
||||||
|
price: price,
|
||||||
|
cryptoAmount: walletBalance.formattedFrozenBalance) + ' ' + fiatCurrency.toString();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@computed
|
@computed
|
||||||
String get additionalBalance {
|
String get additionalBalance {
|
||||||
final walletBalance = _walletBalance;
|
final walletBalance = _walletBalance;
|
||||||
|
@ -183,8 +217,10 @@ abstract class BalanceViewModelBase with Store {
|
||||||
return MapEntry(key, BalanceRecord(
|
return MapEntry(key, BalanceRecord(
|
||||||
availableBalance: '---',
|
availableBalance: '---',
|
||||||
additionalBalance: '---',
|
additionalBalance: '---',
|
||||||
|
frozenBalance: '---',
|
||||||
fiatAdditionalBalance: isFiatDisabled ? '' : '---',
|
fiatAdditionalBalance: isFiatDisabled ? '' : '---',
|
||||||
fiatAvailableBalance: isFiatDisabled ? '' : '---',
|
fiatAvailableBalance: isFiatDisabled ? '' : '---',
|
||||||
|
fiatFrozenBalance: isFiatDisabled ? '' : '---',
|
||||||
asset: key,
|
asset: key,
|
||||||
formattedAssetTitle: _formatterAsset(key)));
|
formattedAssetTitle: _formatterAsset(key)));
|
||||||
}
|
}
|
||||||
|
@ -205,13 +241,29 @@ abstract class BalanceViewModelBase with Store {
|
||||||
+ ' '
|
+ ' '
|
||||||
+ _getFiatBalance(
|
+ _getFiatBalance(
|
||||||
price: price,
|
price: price,
|
||||||
cryptoAmount: value.formattedAvailableBalance));
|
cryptoAmount: value.formattedFrozenBalance.isEmpty
|
||||||
|
? value.formattedAvailableBalance
|
||||||
|
: value.formattedTotalAvailableBalance));
|
||||||
|
|
||||||
return MapEntry(key, BalanceRecord(
|
|
||||||
availableBalance: value.formattedAvailableBalance,
|
final frozenFiatBalance = isFiatDisabled ? '' : (fiatCurrency.toString()
|
||||||
|
+ ' '
|
||||||
|
+ _getFiatBalance(
|
||||||
|
price: price,
|
||||||
|
cryptoAmount: value.formattedFrozenBalance));
|
||||||
|
|
||||||
|
|
||||||
|
return MapEntry(
|
||||||
|
key,
|
||||||
|
BalanceRecord(
|
||||||
|
availableBalance: value.formattedFrozenBalance.isEmpty
|
||||||
|
? value.formattedAvailableBalance
|
||||||
|
: value.formattedTotalAvailableBalance,
|
||||||
additionalBalance: value.formattedAdditionalBalance,
|
additionalBalance: value.formattedAdditionalBalance,
|
||||||
|
frozenBalance: value.formattedFrozenBalance,
|
||||||
fiatAdditionalBalance: additionalFiatBalance,
|
fiatAdditionalBalance: additionalFiatBalance,
|
||||||
fiatAvailableBalance: availableFiatBalance,
|
fiatAvailableBalance: availableFiatBalance,
|
||||||
|
fiatFrozenBalance: frozenFiatBalance,
|
||||||
asset: key,
|
asset: key,
|
||||||
formattedAssetTitle: _formatterAsset(key)));
|
formattedAssetTitle: _formatterAsset(key)));
|
||||||
});
|
});
|
||||||
|
@ -290,7 +342,7 @@ abstract class BalanceViewModelBase with Store {
|
||||||
}
|
}
|
||||||
|
|
||||||
String _getFiatBalance({required double price, String? cryptoAmount}) {
|
String _getFiatBalance({required double price, String? cryptoAmount}) {
|
||||||
if (cryptoAmount == null) {
|
if (cryptoAmount == null || cryptoAmount.isEmpty) {
|
||||||
return '0.00';
|
return '0.00';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,7 @@ abstract class UnspentCoinsListViewModelBase with Store {
|
||||||
|
|
||||||
await info.save();
|
await info.save();
|
||||||
bitcoin!.updateUnspents(wallet);
|
bitcoin!.updateUnspents(wallet);
|
||||||
|
wallet.updateBalance();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
print(e.toString());
|
print(e.toString());
|
||||||
}
|
}
|
||||||
|
|
|
@ -684,5 +684,6 @@
|
||||||
"do_not_send": "لا ترسل",
|
"do_not_send": "لا ترسل",
|
||||||
"error_dialog_content": "عفوًا ، لقد حصلنا على بعض الخطأ.\n\nيرجى إرسال تقرير التعطل إلى فريق الدعم لدينا لتحسين التطبيق.",
|
"error_dialog_content": "عفوًا ، لقد حصلنا على بعض الخطأ.\n\nيرجى إرسال تقرير التعطل إلى فريق الدعم لدينا لتحسين التطبيق.",
|
||||||
"decimal_places_error": "عدد كبير جدًا من المنازل العشرية",
|
"decimal_places_error": "عدد كبير جدًا من المنازل العشرية",
|
||||||
"edit_node": "تحرير العقدة"
|
"edit_node": "تحرير العقدة",
|
||||||
|
"frozen_balance": "الرصيد المجمد"
|
||||||
}
|
}
|
||||||
|
|
|
@ -686,5 +686,6 @@
|
||||||
"do_not_send": "Не изпращай",
|
"do_not_send": "Не изпращай",
|
||||||
"error_dialog_content": "Получихме грешка.\n\nМоля, изпратете доклада до нашия отдел поддръжка, за да подобрим приложението.",
|
"error_dialog_content": "Получихме грешка.\n\nМоля, изпратете доклада до нашия отдел поддръжка, за да подобрим приложението.",
|
||||||
"decimal_places_error": "Твърде много знаци след десетичната запетая",
|
"decimal_places_error": "Твърде много знаци след десетичната запетая",
|
||||||
"edit_node": "Редактиране на възел"
|
"edit_node": "Редактиране на възел",
|
||||||
|
"frozen_balance": "Замразен баланс"
|
||||||
}
|
}
|
||||||
|
|
|
@ -686,5 +686,6 @@
|
||||||
"do_not_send": "Neodesílat",
|
"do_not_send": "Neodesílat",
|
||||||
"error_dialog_content": "Nastala chyba.\n\nProsím odešlete zprávu o chybě naší podpoře, aby mohli zajistit opravu.",
|
"error_dialog_content": "Nastala chyba.\n\nProsím odešlete zprávu o chybě naší podpoře, aby mohli zajistit opravu.",
|
||||||
"decimal_places_error": "Příliš mnoho desetinných míst",
|
"decimal_places_error": "Příliš mnoho desetinných míst",
|
||||||
"edit_node": "Upravit uzel"
|
"edit_node": "Upravit uzel",
|
||||||
|
"frozen_balance": "Zmrazená bilance"
|
||||||
}
|
}
|
||||||
|
|
|
@ -686,5 +686,6 @@
|
||||||
"do_not_send": "Nicht senden",
|
"do_not_send": "Nicht senden",
|
||||||
"error_dialog_content": "Hoppla, wir haben einen Fehler.\n\nBitte senden Sie den Absturzbericht an unser Support-Team, um die Anwendung zu verbessern.",
|
"error_dialog_content": "Hoppla, wir haben einen Fehler.\n\nBitte senden Sie den Absturzbericht an unser Support-Team, um die Anwendung zu verbessern.",
|
||||||
"decimal_places_error": "Zu viele Nachkommastellen",
|
"decimal_places_error": "Zu viele Nachkommastellen",
|
||||||
"edit_node": "Knoten bearbeiten"
|
"edit_node": "Knoten bearbeiten",
|
||||||
|
"frozen_balance": "Gefrorenes Gleichgewicht"
|
||||||
}
|
}
|
||||||
|
|
|
@ -686,5 +686,6 @@
|
||||||
"do_not_send": "Don't send",
|
"do_not_send": "Don't send",
|
||||||
"error_dialog_content": "Oops, we got some error.\n\nPlease send the crash report to our support team to make the application better.",
|
"error_dialog_content": "Oops, we got some error.\n\nPlease send the crash report to our support team to make the application better.",
|
||||||
"decimal_places_error": "Too many decimal places",
|
"decimal_places_error": "Too many decimal places",
|
||||||
"edit_node": "Edit Node"
|
"edit_node": "Edit Node",
|
||||||
|
"frozen_balance": "Frozen Balance"
|
||||||
}
|
}
|
||||||
|
|
|
@ -686,5 +686,6 @@
|
||||||
"do_not_send": "no enviar",
|
"do_not_send": "no enviar",
|
||||||
"error_dialog_content": "Vaya, tenemos un error.\n\nEnvíe el informe de bloqueo a nuestro equipo de soporte para mejorar la aplicación.",
|
"error_dialog_content": "Vaya, tenemos un error.\n\nEnvíe el informe de bloqueo a nuestro equipo de soporte para mejorar la aplicación.",
|
||||||
"decimal_places_error": "Demasiados lugares decimales",
|
"decimal_places_error": "Demasiados lugares decimales",
|
||||||
"edit_node": "Edit Node"
|
"edit_node": "Editar nodo",
|
||||||
|
"frozen_balance": "Balance congelado"
|
||||||
}
|
}
|
||||||
|
|
|
@ -684,5 +684,6 @@
|
||||||
"do_not_send": "N'envoyez pas",
|
"do_not_send": "N'envoyez pas",
|
||||||
"error_dialog_content": "Oups, nous avons eu une erreur.\n\nVeuillez envoyer le rapport de plantage à notre équipe d'assistance pour améliorer l'application.",
|
"error_dialog_content": "Oups, nous avons eu une erreur.\n\nVeuillez envoyer le rapport de plantage à notre équipe d'assistance pour améliorer l'application.",
|
||||||
"decimal_places_error": "Trop de décimales",
|
"decimal_places_error": "Trop de décimales",
|
||||||
"edit_node": "Modifier le nœud"
|
"edit_node": "Modifier le nœud",
|
||||||
|
"frozen_balance": "Équilibre gelé"
|
||||||
}
|
}
|
||||||
|
|
|
@ -686,5 +686,6 @@
|
||||||
"do_not_send": "मत भेजो",
|
"do_not_send": "मत भेजो",
|
||||||
"error_dialog_content": "ओह, हमसे कुछ गड़बड़ी हुई है.\n\nएप्लिकेशन को बेहतर बनाने के लिए कृपया क्रैश रिपोर्ट हमारी सहायता टीम को भेजें।",
|
"error_dialog_content": "ओह, हमसे कुछ गड़बड़ी हुई है.\n\nएप्लिकेशन को बेहतर बनाने के लिए कृपया क्रैश रिपोर्ट हमारी सहायता टीम को भेजें।",
|
||||||
"decimal_places_error": "बहुत अधिक दशमलव स्थान",
|
"decimal_places_error": "बहुत अधिक दशमलव स्थान",
|
||||||
"edit_node": "नोड संपादित करें"
|
"edit_node": "नोड संपादित करें",
|
||||||
|
"frozen_balance": "जमे हुए संतुलन"
|
||||||
}
|
}
|
||||||
|
|
|
@ -686,5 +686,6 @@
|
||||||
"do_not_send": "Ne šalji",
|
"do_not_send": "Ne šalji",
|
||||||
"error_dialog_content": "Ups, imamo grešku.\n\nPošaljite izvješće o padu našem timu za podršku kako bismo poboljšali aplikaciju.",
|
"error_dialog_content": "Ups, imamo grešku.\n\nPošaljite izvješće o padu našem timu za podršku kako bismo poboljšali aplikaciju.",
|
||||||
"decimal_places_error": "Previše decimalnih mjesta",
|
"decimal_places_error": "Previše decimalnih mjesta",
|
||||||
"edit_node": "Uredi čvor"
|
"edit_node": "Uredi čvor",
|
||||||
|
"frozen_balance": "Zamrznuti saldo"
|
||||||
}
|
}
|
||||||
|
|
|
@ -668,5 +668,6 @@
|
||||||
"contact_list_contacts": "Kontak",
|
"contact_list_contacts": "Kontak",
|
||||||
"contact_list_wallets": "Dompet Saya",
|
"contact_list_wallets": "Dompet Saya",
|
||||||
"decimal_places_error": "Terlalu banyak tempat desimal",
|
"decimal_places_error": "Terlalu banyak tempat desimal",
|
||||||
"edit_node": "Sunting Node"
|
"edit_node": "Sunting Node",
|
||||||
|
"frozen_balance": "Saldo Beku"
|
||||||
}
|
}
|
||||||
|
|
|
@ -686,5 +686,6 @@
|
||||||
"do_not_send": "Non inviare",
|
"do_not_send": "Non inviare",
|
||||||
"error_dialog_content": "Spiacenti, abbiamo riscontrato un errore.\n\nSi prega di inviare il rapporto sull'arresto anomalo al nostro team di supporto per migliorare l'applicazione.",
|
"error_dialog_content": "Spiacenti, abbiamo riscontrato un errore.\n\nSi prega di inviare il rapporto sull'arresto anomalo al nostro team di supporto per migliorare l'applicazione.",
|
||||||
"decimal_places_error": "Troppe cifre decimali",
|
"decimal_places_error": "Troppe cifre decimali",
|
||||||
"edit_node": "Modifica nodo"
|
"edit_node": "Modifica nodo",
|
||||||
|
"frozen_balance": "Equilibrio congelato"
|
||||||
}
|
}
|
||||||
|
|
|
@ -686,5 +686,6 @@
|
||||||
"do_not_send": "送信しない",
|
"do_not_send": "送信しない",
|
||||||
"error_dialog_content": "エラーが発生しました。\n\nアプリケーションを改善するために、クラッシュ レポートをサポート チームに送信してください。",
|
"error_dialog_content": "エラーが発生しました。\n\nアプリケーションを改善するために、クラッシュ レポートをサポート チームに送信してください。",
|
||||||
"decimal_places_error": "小数点以下の桁数が多すぎる",
|
"decimal_places_error": "小数点以下の桁数が多すぎる",
|
||||||
"edit_node": "ノードを編集"
|
"edit_node": "ノードを編集",
|
||||||
|
"frozen_balance": "冷凍残高"
|
||||||
}
|
}
|
||||||
|
|
|
@ -686,5 +686,6 @@
|
||||||
"do_not_send": "보내지 마세요",
|
"do_not_send": "보내지 마세요",
|
||||||
"error_dialog_content": "죄송합니다. 오류가 발생했습니다.\n\n응용 프로그램을 개선하려면 지원 팀에 충돌 보고서를 보내주십시오.",
|
"error_dialog_content": "죄송합니다. 오류가 발생했습니다.\n\n응용 프로그램을 개선하려면 지원 팀에 충돌 보고서를 보내주십시오.",
|
||||||
"decimal_places_error": "소수점 이하 자릿수가 너무 많습니다.",
|
"decimal_places_error": "소수점 이하 자릿수가 너무 많습니다.",
|
||||||
"edit_node": "노드 편집"
|
"edit_node": "노드 편집",
|
||||||
|
"frozen_balance": "얼어붙은 균형"
|
||||||
}
|
}
|
||||||
|
|
|
@ -686,5 +686,6 @@
|
||||||
"do_not_send": "မပို့ပါနှင့်",
|
"do_not_send": "မပို့ပါနှင့်",
|
||||||
"error_dialog_content": "အိုး၊ ကျွန်ုပ်တို့တွင် အမှားအယွင်းအချို့ရှိသည်။\n\nအပလီကေးရှင်းကို ပိုမိုကောင်းမွန်စေရန်အတွက် ပျက်စီးမှုအစီရင်ခံစာကို ကျွန်ုပ်တို့၏ပံ့ပိုးကူညီရေးအဖွဲ့ထံ ပေးပို့ပါ။",
|
"error_dialog_content": "အိုး၊ ကျွန်ုပ်တို့တွင် အမှားအယွင်းအချို့ရှိသည်။\n\nအပလီကေးရှင်းကို ပိုမိုကောင်းမွန်စေရန်အတွက် ပျက်စီးမှုအစီရင်ခံစာကို ကျွန်ုပ်တို့၏ပံ့ပိုးကူညီရေးအဖွဲ့ထံ ပေးပို့ပါ။",
|
||||||
"decimal_places_error": "ဒဿမနေရာများ များလွန်းသည်။",
|
"decimal_places_error": "ဒဿမနေရာများ များလွန်းသည်။",
|
||||||
"edit_node": "Node ကို တည်းဖြတ်ပါ။"
|
"edit_node": "Node ကို တည်းဖြတ်ပါ။",
|
||||||
|
"frozen_balance": "ေးခဲမှူ"
|
||||||
}
|
}
|
||||||
|
|
|
@ -686,5 +686,6 @@
|
||||||
"do_not_send": "Niet sturen",
|
"do_not_send": "Niet sturen",
|
||||||
"error_dialog_content": "Oeps, er is een fout opgetreden.\n\nStuur het crashrapport naar ons ondersteuningsteam om de applicatie te verbeteren.",
|
"error_dialog_content": "Oeps, er is een fout opgetreden.\n\nStuur het crashrapport naar ons ondersteuningsteam om de applicatie te verbeteren.",
|
||||||
"decimal_places_error": "Te veel decimalen",
|
"decimal_places_error": "Te veel decimalen",
|
||||||
"edit_node": "Knooppunt bewerken"
|
"edit_node": "Knooppunt bewerken",
|
||||||
|
"frozen_balance": "Bevroren saldo"
|
||||||
}
|
}
|
||||||
|
|
|
@ -686,5 +686,6 @@
|
||||||
"do_not_send": "Nie wysyłaj",
|
"do_not_send": "Nie wysyłaj",
|
||||||
"error_dialog_content": "Ups, wystąpił błąd.\n\nPrześlij raport o awarii do naszego zespołu wsparcia, aby ulepszyć aplikację.",
|
"error_dialog_content": "Ups, wystąpił błąd.\n\nPrześlij raport o awarii do naszego zespołu wsparcia, aby ulepszyć aplikację.",
|
||||||
"decimal_places_error": "Za dużo miejsc dziesiętnych",
|
"decimal_places_error": "Za dużo miejsc dziesiętnych",
|
||||||
"edit_node": "Edytuj węzeł"
|
"edit_node": "Edytuj węzeł",
|
||||||
|
"frozen_balance": "Zamrożona równowaga"
|
||||||
}
|
}
|
||||||
|
|
|
@ -685,5 +685,6 @@
|
||||||
"do_not_send": "não envie",
|
"do_not_send": "não envie",
|
||||||
"error_dialog_content": "Ops, houve algum erro.\n\nPor favor, envie o relatório de falha para nossa equipe de suporte para melhorar o aplicativo.",
|
"error_dialog_content": "Ops, houve algum erro.\n\nPor favor, envie o relatório de falha para nossa equipe de suporte para melhorar o aplicativo.",
|
||||||
"decimal_places_error": "Muitas casas decimais",
|
"decimal_places_error": "Muitas casas decimais",
|
||||||
"edit_node": "Editar nó"
|
"edit_node": "Editar nó",
|
||||||
|
"frozen_balance": "Saldo Congelado"
|
||||||
}
|
}
|
||||||
|
|
|
@ -686,5 +686,6 @@
|
||||||
"do_not_send": "Не отправлять",
|
"do_not_send": "Не отправлять",
|
||||||
"error_dialog_content": "Ой, у нас какая-то ошибка.\n\nПожалуйста, отправьте отчет о сбое в нашу службу поддержки, чтобы сделать приложение лучше.",
|
"error_dialog_content": "Ой, у нас какая-то ошибка.\n\nПожалуйста, отправьте отчет о сбое в нашу службу поддержки, чтобы сделать приложение лучше.",
|
||||||
"decimal_places_error": "Слишком много десятичных знаков",
|
"decimal_places_error": "Слишком много десятичных знаков",
|
||||||
"edit_node": "Редактировать узел"
|
"edit_node": "Редактировать узел",
|
||||||
|
"frozen_balance": "Замороженный баланс"
|
||||||
}
|
}
|
||||||
|
|
|
@ -684,5 +684,6 @@
|
||||||
"do_not_send": "อย่าส่ง",
|
"do_not_send": "อย่าส่ง",
|
||||||
"error_dialog_content": "อ๊ะ เราพบข้อผิดพลาดบางอย่าง\n\nโปรดส่งรายงานข้อขัดข้องไปยังทีมสนับสนุนของเราเพื่อปรับปรุงแอปพลิเคชันให้ดียิ่งขึ้น",
|
"error_dialog_content": "อ๊ะ เราพบข้อผิดพลาดบางอย่าง\n\nโปรดส่งรายงานข้อขัดข้องไปยังทีมสนับสนุนของเราเพื่อปรับปรุงแอปพลิเคชันให้ดียิ่งขึ้น",
|
||||||
"decimal_places_error": "ทศนิยมมากเกินไป",
|
"decimal_places_error": "ทศนิยมมากเกินไป",
|
||||||
"edit_node": "แก้ไขโหนด"
|
"edit_node": "แก้ไขโหนด",
|
||||||
|
"frozen_balance": "ยอดคงเหลือแช่แข็ง"
|
||||||
}
|
}
|
||||||
|
|
|
@ -686,5 +686,6 @@
|
||||||
"do_not_send": "Gönderme",
|
"do_not_send": "Gönderme",
|
||||||
"error_dialog_content": "Hay aksi, bir hatamız var.\n\nUygulamayı daha iyi hale getirmek için lütfen kilitlenme raporunu destek ekibimize gönderin.",
|
"error_dialog_content": "Hay aksi, bir hatamız var.\n\nUygulamayı daha iyi hale getirmek için lütfen kilitlenme raporunu destek ekibimize gönderin.",
|
||||||
"decimal_places_error": "Çok fazla ondalık basamak",
|
"decimal_places_error": "Çok fazla ondalık basamak",
|
||||||
"edit_node": "Düğümü Düzenle"
|
"edit_node": "Düğümü Düzenle",
|
||||||
|
"frozen_balance": "Dondurulmuş Bakiye"
|
||||||
}
|
}
|
||||||
|
|
|
@ -685,5 +685,6 @@
|
||||||
"do_not_send": "Не надсилайте",
|
"do_not_send": "Не надсилайте",
|
||||||
"error_dialog_content": "На жаль, ми отримали помилку.\n\nБудь ласка, надішліть звіт про збій нашій команді підтримки, щоб покращити додаток.",
|
"error_dialog_content": "На жаль, ми отримали помилку.\n\nБудь ласка, надішліть звіт про збій нашій команді підтримки, щоб покращити додаток.",
|
||||||
"decimal_places_error": "Забагато знаків після коми",
|
"decimal_places_error": "Забагато знаків після коми",
|
||||||
"edit_node": "Редагувати вузол"
|
"edit_node": "Редагувати вузол",
|
||||||
|
"frozen_balance": "Заморожений баланс"
|
||||||
}
|
}
|
||||||
|
|
|
@ -687,5 +687,6 @@
|
||||||
"do_not_send" : "مت بھیجیں۔",
|
"do_not_send" : "مت بھیجیں۔",
|
||||||
"error_dialog_content" : "افوہ، ہمیں کچھ خرابی ملی۔\n\nایپلی کیشن کو بہتر بنانے کے لیے براہ کرم کریش رپورٹ ہماری سپورٹ ٹیم کو بھیجیں۔",
|
"error_dialog_content" : "افوہ، ہمیں کچھ خرابی ملی۔\n\nایپلی کیشن کو بہتر بنانے کے لیے براہ کرم کریش رپورٹ ہماری سپورٹ ٹیم کو بھیجیں۔",
|
||||||
"decimal_places_error": "بہت زیادہ اعشاریہ جگہیں۔",
|
"decimal_places_error": "بہت زیادہ اعشاریہ جگہیں۔",
|
||||||
"edit_node": "نوڈ میں ترمیم کریں۔"
|
"edit_node": "نوڈ میں ترمیم کریں۔",
|
||||||
|
"frozen_balance": "منجمد بیلنس"
|
||||||
}
|
}
|
||||||
|
|
|
@ -684,5 +684,6 @@
|
||||||
"do_not_send": "不要发送",
|
"do_not_send": "不要发送",
|
||||||
"error_dialog_content": "糟糕,我们遇到了一些错误。\n\n请将崩溃报告发送给我们的支持团队,以改进应用程序。",
|
"error_dialog_content": "糟糕,我们遇到了一些错误。\n\n请将崩溃报告发送给我们的支持团队,以改进应用程序。",
|
||||||
"decimal_places_error": "小数位太多",
|
"decimal_places_error": "小数位太多",
|
||||||
"edit_node": "编辑节点"
|
"edit_node": "编辑节点",
|
||||||
|
"frozen_balance": "冻结余额"
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue