mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2024-12-22 19:49:22 +00:00
fix: Implement totp on exchange to external ticket as well as update UI properly when a preset is selected (#1156)
Co-authored-by: OmarHatem <omarh.ismail1@gmail.com>
This commit is contained in:
parent
d997ee81a1
commit
9aede1f3c1
32 changed files with 88 additions and 9 deletions
|
@ -33,6 +33,7 @@ enum VerboseControlSettings {
|
|||
sendsToNonContacts,
|
||||
sendsToInternalWallets,
|
||||
exchangesToInternalWallets,
|
||||
exchangesToExternalWallets,
|
||||
securityAndBackupSettings,
|
||||
creatingNewWallets,
|
||||
}
|
||||
|
|
|
@ -71,6 +71,8 @@ class PreferencesKey {
|
|||
'should_require_totp_2fa_for_sends_to_internal_wallets';
|
||||
static const shouldRequireTOTP2FAForExchangesToInternalWallets =
|
||||
'should_require_totp_2fa_for_exchanges_to_internal_wallets';
|
||||
static const shouldRequireTOTP2FAForExchangesToExternalWallets =
|
||||
'should_require_totp_2fa_for_exchanges_to_external_wallets';
|
||||
static const shouldRequireTOTP2FAForAddingContacts =
|
||||
'should_require_totp_2fa_for_adding_contacts';
|
||||
static const shouldRequireTOTP2FAForCreatingNewWallets =
|
||||
|
|
|
@ -133,6 +133,17 @@ class _2FAControlsWidget extends StatelessWidget {
|
|||
},
|
||||
),
|
||||
StandardListSeparator(padding: EdgeInsets.symmetric(horizontal: 24)),
|
||||
Observer(
|
||||
builder: (context) {
|
||||
return SettingsSwitcherCell(
|
||||
title: S.current.require_for_exchanges_to_external_wallets,
|
||||
value: setup2FAViewModel.shouldRequireTOTP2FAForExchangesToExternalWallets,
|
||||
onValueChange: (context, value) async =>
|
||||
setup2FAViewModel.switchShouldRequireTOTP2FAForExchangesToExternalWallets(value),
|
||||
);
|
||||
},
|
||||
),
|
||||
StandardListSeparator(padding: EdgeInsets.symmetric(horizontal: 24)),
|
||||
Observer(
|
||||
builder: (context) {
|
||||
return SettingsSwitcherCell(
|
||||
|
|
|
@ -76,6 +76,7 @@ abstract class SettingsStoreBase with Store {
|
|||
required bool initialShouldRequireTOTP2FAForSendsToNonContact,
|
||||
required bool initialShouldRequireTOTP2FAForSendsToInternalWallets,
|
||||
required bool initialShouldRequireTOTP2FAForExchangesToInternalWallets,
|
||||
required bool initialShouldRequireTOTP2FAForExchangesToExternalWallets,
|
||||
required bool initialShouldRequireTOTP2FAForAddingContacts,
|
||||
required bool initialShouldRequireTOTP2FAForCreatingNewWallets,
|
||||
required bool initialShouldRequireTOTP2FAForAllSecurityAndBackupSettings,
|
||||
|
@ -118,6 +119,8 @@ abstract class SettingsStoreBase with Store {
|
|||
initialShouldRequireTOTP2FAForSendsToInternalWallets,
|
||||
shouldRequireTOTP2FAForExchangesToInternalWallets =
|
||||
initialShouldRequireTOTP2FAForExchangesToInternalWallets,
|
||||
shouldRequireTOTP2FAForExchangesToExternalWallets =
|
||||
initialShouldRequireTOTP2FAForExchangesToExternalWallets,
|
||||
shouldRequireTOTP2FAForAddingContacts = initialShouldRequireTOTP2FAForAddingContacts,
|
||||
shouldRequireTOTP2FAForCreatingNewWallets =
|
||||
initialShouldRequireTOTP2FAForCreatingNewWallets,
|
||||
|
@ -271,6 +274,12 @@ abstract class SettingsStoreBase with Store {
|
|||
PreferencesKey.shouldRequireTOTP2FAForExchangesToInternalWallets,
|
||||
requireTOTP2FAForExchangesToInternalWallets));
|
||||
|
||||
reaction(
|
||||
(_) => shouldRequireTOTP2FAForExchangesToExternalWallets,
|
||||
(bool requireTOTP2FAForExchangesToExternalWallets) => sharedPreferences.setBool(
|
||||
PreferencesKey.shouldRequireTOTP2FAForExchangesToExternalWallets,
|
||||
requireTOTP2FAForExchangesToExternalWallets));
|
||||
|
||||
reaction(
|
||||
(_) => shouldRequireTOTP2FAForAddingContacts,
|
||||
(bool requireTOTP2FAForAddingContacts) => sharedPreferences.setBool(
|
||||
|
@ -425,6 +434,9 @@ abstract class SettingsStoreBase with Store {
|
|||
@observable
|
||||
bool shouldRequireTOTP2FAForExchangesToInternalWallets;
|
||||
|
||||
@observable
|
||||
bool shouldRequireTOTP2FAForExchangesToExternalWallets;
|
||||
|
||||
@observable
|
||||
Cake2FAPresetsOptions selectedCake2FAPreset;
|
||||
|
||||
|
@ -597,6 +609,9 @@ abstract class SettingsStoreBase with Store {
|
|||
final shouldRequireTOTP2FAForExchangesToInternalWallets = sharedPreferences
|
||||
.getBool(PreferencesKey.shouldRequireTOTP2FAForExchangesToInternalWallets) ??
|
||||
false;
|
||||
final shouldRequireTOTP2FAForExchangesToExternalWallets = sharedPreferences
|
||||
.getBool(PreferencesKey.shouldRequireTOTP2FAForExchangesToExternalWallets) ??
|
||||
false;
|
||||
final shouldRequireTOTP2FAForAddingContacts =
|
||||
sharedPreferences.getBool(PreferencesKey.shouldRequireTOTP2FAForAddingContacts) ?? false;
|
||||
final shouldRequireTOTP2FAForCreatingNewWallets =
|
||||
|
@ -751,6 +766,8 @@ abstract class SettingsStoreBase with Store {
|
|||
shouldRequireTOTP2FAForSendsToInternalWallets,
|
||||
initialShouldRequireTOTP2FAForExchangesToInternalWallets:
|
||||
shouldRequireTOTP2FAForExchangesToInternalWallets,
|
||||
initialShouldRequireTOTP2FAForExchangesToExternalWallets:
|
||||
shouldRequireTOTP2FAForExchangesToExternalWallets,
|
||||
initialShouldRequireTOTP2FAForAddingContacts: shouldRequireTOTP2FAForAddingContacts,
|
||||
initialShouldRequireTOTP2FAForCreatingNewWallets: shouldRequireTOTP2FAForCreatingNewWallets,
|
||||
initialShouldRequireTOTP2FAForAllSecurityAndBackupSettings:
|
||||
|
@ -835,6 +852,9 @@ abstract class SettingsStoreBase with Store {
|
|||
shouldRequireTOTP2FAForExchangesToInternalWallets = sharedPreferences
|
||||
.getBool(PreferencesKey.shouldRequireTOTP2FAForExchangesToInternalWallets) ??
|
||||
false;
|
||||
shouldRequireTOTP2FAForExchangesToExternalWallets = sharedPreferences
|
||||
.getBool(PreferencesKey.shouldRequireTOTP2FAForExchangesToExternalWallets) ??
|
||||
false;
|
||||
shouldRequireTOTP2FAForAddingContacts =
|
||||
sharedPreferences.getBool(PreferencesKey.shouldRequireTOTP2FAForAddingContacts) ?? false;
|
||||
shouldRequireTOTP2FAForCreatingNewWallets =
|
||||
|
|
|
@ -237,15 +237,21 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with
|
|||
bool get shouldDisplayTOTP2FAForExchangesToInternalWallet =>
|
||||
_settingsStore.shouldRequireTOTP2FAForExchangesToInternalWallets;
|
||||
|
||||
@computed
|
||||
bool get shouldDisplayTOTP2FAForExchangesToExternalWallet =>
|
||||
_settingsStore.shouldRequireTOTP2FAForExchangesToExternalWallets;
|
||||
|
||||
//* Still open to further optimize these checks
|
||||
//* It works but can be made better
|
||||
@action
|
||||
bool shouldDisplayTOTP() {
|
||||
final isInternalWallet = checkIfWalletIsAnInternalWallet(receiveAddress);
|
||||
|
||||
if (isInternalWallet) {
|
||||
return shouldDisplayTOTP2FAForExchangesToInternalWallet;
|
||||
} else {
|
||||
return shouldDisplayTOTP2FAForExchangesToExternalWallet;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@computed
|
||||
|
@ -263,7 +269,7 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with
|
|||
(wallet.type == WalletType.bitcoin ||
|
||||
wallet.type == WalletType.litecoin ||
|
||||
wallet.type == WalletType.bitcoinCash) &&
|
||||
depositCurrency == wallet.currency;
|
||||
depositCurrency == wallet.currency;
|
||||
|
||||
bool get isMoneroWallet => wallet.type == WalletType.monero;
|
||||
|
||||
|
@ -275,14 +281,11 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with
|
|||
case WalletType.bitcoin:
|
||||
return transactionPriority == bitcoin!.getBitcoinTransactionPrioritySlow();
|
||||
case WalletType.litecoin:
|
||||
return transactionPriority ==
|
||||
bitcoin!.getLitecoinTransactionPrioritySlow();
|
||||
return transactionPriority == bitcoin!.getLitecoinTransactionPrioritySlow();
|
||||
case WalletType.ethereum:
|
||||
return transactionPriority ==
|
||||
ethereum!.getEthereumTransactionPrioritySlow();
|
||||
return transactionPriority == ethereum!.getEthereumTransactionPrioritySlow();
|
||||
case WalletType.bitcoinCash:
|
||||
return transactionPriority ==
|
||||
bitcoinCash!.getBitcoinCashTransactionPrioritySlow();
|
||||
return transactionPriority == bitcoinCash!.getBitcoinCashTransactionPrioritySlow();
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
@ -535,7 +538,9 @@ abstract class ExchangeViewModelBase extends WalletChangeListenerViewModel with
|
|||
|
||||
@action
|
||||
void calculateDepositAllAmount() {
|
||||
if (wallet.type == WalletType.bitcoin || wallet.type == WalletType.litecoin || wallet.type == WalletType.bitcoinCash) {
|
||||
if (wallet.type == WalletType.bitcoin ||
|
||||
wallet.type == WalletType.litecoin ||
|
||||
wallet.type == WalletType.bitcoinCash) {
|
||||
final availableBalance = wallet.balance[wallet.currency]!.available;
|
||||
final priority = _settingsStore.priority[wallet.type]!;
|
||||
final fee = wallet.calculateEstimatedFee(priority, null);
|
||||
|
|
|
@ -74,6 +74,10 @@ abstract class Setup2FAViewModelBase with Store {
|
|||
bool get shouldRequireTOTP2FAForExchangesToInternalWallets =>
|
||||
_settingsStore.shouldRequireTOTP2FAForExchangesToInternalWallets;
|
||||
|
||||
@computed
|
||||
bool get shouldRequireTOTP2FAForExchangesToExternalWallets =>
|
||||
_settingsStore.shouldRequireTOTP2FAForExchangesToExternalWallets;
|
||||
|
||||
@computed
|
||||
bool get shouldRequireTOTP2FAForAddingContacts =>
|
||||
_settingsStore.shouldRequireTOTP2FAForAddingContacts;
|
||||
|
@ -277,6 +281,7 @@ abstract class Setup2FAViewModelBase with Store {
|
|||
switchShouldRequireTOTP2FAForAddingContacts(false);
|
||||
switchShouldRequireTOTP2FAForCreatingNewWallet(false);
|
||||
switchShouldRequireTOTP2FAForExchangesToInternalWallets(false);
|
||||
switchShouldRequireTOTP2FAForExchangesToExternalWallets(false);
|
||||
switchShouldRequireTOTP2FAForSendsToInternalWallets(false);
|
||||
switchShouldRequireTOTP2FAForAllSecurityAndBackupSettings(false);
|
||||
selected2FASettings.clear();
|
||||
|
@ -306,6 +311,7 @@ abstract class Setup2FAViewModelBase with Store {
|
|||
|
||||
@action
|
||||
void selectCakePreset(Cake2FAPresetsOptions preset) {
|
||||
setAllControlsToFalse();
|
||||
presetsMap[preset]?.forEach(toggleControl);
|
||||
_settingsStore.selectedCake2FAPreset = preset;
|
||||
}
|
||||
|
@ -324,6 +330,8 @@ abstract class Setup2FAViewModelBase with Store {
|
|||
switchShouldRequireTOTP2FAForAllSecurityAndBackupSettings,
|
||||
VerboseControlSettings.exchangesToInternalWallets:
|
||||
switchShouldRequireTOTP2FAForExchangesToInternalWallets,
|
||||
VerboseControlSettings.exchangesToExternalWallets:
|
||||
switchShouldRequireTOTP2FAForExchangesToExternalWallets,
|
||||
};
|
||||
|
||||
methodsMap[control]?.call(value);
|
||||
|
@ -359,6 +367,12 @@ abstract class Setup2FAViewModelBase with Store {
|
|||
updateSelectedSettings(VerboseControlSettings.exchangesToInternalWallets, value);
|
||||
}
|
||||
|
||||
@action
|
||||
void switchShouldRequireTOTP2FAForExchangesToExternalWallets(bool value) {
|
||||
_settingsStore.shouldRequireTOTP2FAForExchangesToExternalWallets = value;
|
||||
updateSelectedSettings(VerboseControlSettings.exchangesToExternalWallets, value);
|
||||
}
|
||||
|
||||
@action
|
||||
void switchShouldRequireTOTP2FAForAddingContacts(bool value) {
|
||||
_settingsStore.shouldRequireTOTP2FAForAddingContacts = value;
|
||||
|
|
|
@ -723,6 +723,7 @@
|
|||
"enter_seed_phrase": "أدخل عبارة البذور الخاصة بك",
|
||||
"add_contact": "ﻝﺎﺼﺗﺍ ﺔﻬﺟ ﺔﻓﺎﺿﺇ",
|
||||
"exchange_provider_unsupported": "${providerName} لم يعد مدعومًا!",
|
||||
"require_for_exchanges_to_external_wallets": "ﺔﻴﺟﺭﺎﺧ ﻆﻓﺎﺤﻣ ﻰﻟﺇ ﺕﻻﺩﺎﺒﺘﻟﺍ ﺐﻠﻄﺘﺗ",
|
||||
"camera_permission_is_required": ".ﺍﺮﻴﻣﺎﻜﻟﺍ ﻥﺫﺇ ﺏﻮﻠﻄﻣ",
|
||||
"switchToETHWallet": "ﻯﺮﺧﺃ ﺓﺮﻣ ﺔﻟﻭﺎﺤﻤﻟﺍﻭ Ethereum ﺔﻈﻔﺤﻣ ﻰﻟﺇ ﻞﻳﺪﺒﺘﻟﺍ ﻰﺟﺮﻳ"
|
||||
}
|
||||
|
|
|
@ -719,6 +719,7 @@
|
|||
"enter_seed_phrase": "Въведете вашата фраза за семена",
|
||||
"add_contact": "Добави контакт",
|
||||
"exchange_provider_unsupported": "${providerName} вече не се поддържа!",
|
||||
"require_for_exchanges_to_external_wallets": "Изискване за обмен към външни портфейли",
|
||||
"camera_permission_is_required": "Изисква се разрешение за камерата.\nМоля, активирайте го от настройките на приложението.",
|
||||
"switchToETHWallet": "Моля, преминете към портфейл Ethereum и опитайте отново"
|
||||
}
|
||||
|
|
|
@ -719,6 +719,7 @@
|
|||
"enter_seed_phrase": "Zadejte svou frázi semen",
|
||||
"add_contact": "Přidat kontakt",
|
||||
"exchange_provider_unsupported": "${providerName} již není podporováno!",
|
||||
"require_for_exchanges_to_external_wallets": "Vyžadovat pro výměny do externích peněženek",
|
||||
"camera_permission_is_required": "Vyžaduje se povolení fotoaparátu.\nPovolte jej v nastavení aplikace.",
|
||||
"switchToETHWallet": "Přejděte na peněženku Ethereum a zkuste to znovu"
|
||||
}
|
||||
|
|
|
@ -727,6 +727,7 @@
|
|||
"enter_seed_phrase": "Geben Sie Ihre Seed-Phrase ein",
|
||||
"add_contact": "Kontakt hinzufügen",
|
||||
"exchange_provider_unsupported": "${providerName} wird nicht mehr unterstützt!",
|
||||
"require_for_exchanges_to_external_wallets": "Erforderlich für den Umtausch in externe Wallets",
|
||||
"camera_permission_is_required": "Eine Kameraerlaubnis ist erforderlich.\nBitte aktivieren Sie es in den App-Einstellungen.",
|
||||
"switchToETHWallet": "Bitte wechseln Sie zu einem Ethereum-Wallet und versuchen Sie es erneut"
|
||||
}
|
||||
|
|
|
@ -728,6 +728,7 @@
|
|||
"enter_seed_phrase": "Enter your seed phrase",
|
||||
"add_contact": "Add contact",
|
||||
"exchange_provider_unsupported": "${providerName} is no longer supported!",
|
||||
"require_for_exchanges_to_external_wallets": "Require for exchanges to external wallets",
|
||||
"camera_permission_is_required": "Camera permission is required. \nPlease enable it from app settings.",
|
||||
"switchToETHWallet": "Please switch to an Ethereum wallet and try again"
|
||||
}
|
||||
|
|
|
@ -727,6 +727,7 @@
|
|||
"enter_seed_phrase": "Ingrese su frase de semillas",
|
||||
"add_contact": "Agregar contacto",
|
||||
"exchange_provider_unsupported": "¡${providerName} ya no es compatible!",
|
||||
"require_for_exchanges_to_external_wallets": "Requerido para intercambios a billeteras externas",
|
||||
"camera_permission_is_required": "Se requiere permiso de la cámara.\nHabilítelo desde la configuración de la aplicación.",
|
||||
"switchToETHWallet": "Cambie a una billetera Ethereum e inténtelo nuevamente."
|
||||
}
|
||||
|
|
|
@ -727,6 +727,7 @@
|
|||
"enter_seed_phrase": "Entrez votre phrase de semence",
|
||||
"add_contact": "Ajouter le contact",
|
||||
"exchange_provider_unsupported": "${providerName} n'est plus pris en charge!",
|
||||
"require_for_exchanges_to_external_wallets": "Exiger des échanges vers des portefeuilles externes",
|
||||
"camera_permission_is_required": "L'autorisation de la caméra est requise.\nVeuillez l'activer à partir des paramètres de l'application.",
|
||||
"switchToETHWallet": "Veuillez passer à un portefeuille Ethereum et réessayer"
|
||||
}
|
||||
|
|
|
@ -705,6 +705,7 @@
|
|||
"enter_seed_phrase": "Shigar da Sert Sentarku",
|
||||
"add_contact": "Ƙara lamba",
|
||||
"exchange_provider_unsupported": "${providerName}",
|
||||
"require_for_exchanges_to_external_wallets": "Bukatar musanya zuwa wallet na waje",
|
||||
"camera_permission_is_required": "Ana buƙatar izinin kyamara.\nDa fatan za a kunna shi daga saitunan app.",
|
||||
"switchToETHWallet": "Da fatan za a canza zuwa walat ɗin Ethereum kuma a sake gwadawa"
|
||||
}
|
||||
|
|
|
@ -727,6 +727,7 @@
|
|||
"enter_seed_phrase": "अपना बीज वाक्यांश दर्ज करें",
|
||||
"add_contact": "संपर्क जोड़ें",
|
||||
"exchange_provider_unsupported": "${providerName} अब समर्थित नहीं है!",
|
||||
"require_for_exchanges_to_external_wallets": "बाहरी वॉलेट में एक्सचेंज की आवश्यकता है",
|
||||
"camera_permission_is_required": "कैमरे की अनुमति आवश्यक है.\nकृपया इसे ऐप सेटिंग से सक्षम करें।",
|
||||
"switchToETHWallet": "कृपया एथेरियम वॉलेट पर स्विच करें और पुनः प्रयास करें"
|
||||
}
|
||||
|
|
|
@ -725,6 +725,7 @@
|
|||
"enter_seed_phrase": "Unesite svoju sjemensku frazu",
|
||||
"add_contact": "Dodaj kontakt",
|
||||
"exchange_provider_unsupported": "${providerName} više nije podržan!",
|
||||
"require_for_exchanges_to_external_wallets": "Zahtijeva razmjene na vanjske novčanike",
|
||||
"camera_permission_is_required": "Potrebno je dopuštenje kamere.\nOmogućite ga u postavkama aplikacije.",
|
||||
"switchToETHWallet": "Prijeđite na Ethereum novčanik i pokušajte ponovno"
|
||||
}
|
||||
|
|
|
@ -715,6 +715,7 @@
|
|||
"enter_seed_phrase": "Masukkan frasa benih Anda",
|
||||
"add_contact": "Tambah kontak",
|
||||
"exchange_provider_unsupported": "${providerName} tidak lagi didukung!",
|
||||
"require_for_exchanges_to_external_wallets": "Memerlukan pertukaran ke dompet eksternal",
|
||||
"camera_permission_is_required": "Izin kamera diperlukan.\nSilakan aktifkan dari pengaturan aplikasi.",
|
||||
"switchToETHWallet": "Silakan beralih ke dompet Ethereum dan coba lagi"
|
||||
}
|
||||
|
|
|
@ -727,6 +727,7 @@
|
|||
"enter_seed_phrase": "Inserisci la tua frase di semi",
|
||||
"add_contact": "Aggiungi contatto",
|
||||
"exchange_provider_unsupported": "${providerName} non è più supportato!",
|
||||
"require_for_exchanges_to_external_wallets": "Richiede scambi con portafogli esterni",
|
||||
"camera_permission_is_required": "È richiesta l'autorizzazione della fotocamera.\nAbilitalo dalle impostazioni dell'app.",
|
||||
"switchToETHWallet": "Passa a un portafoglio Ethereum e riprova"
|
||||
}
|
||||
|
|
|
@ -727,6 +727,7 @@
|
|||
"enter_seed_phrase": "シードフレーズを入力してください",
|
||||
"add_contact": "連絡先を追加",
|
||||
"exchange_provider_unsupported": "${providerName}はサポートされなくなりました!",
|
||||
"require_for_exchanges_to_external_wallets": "外部ウォレットへの交換に必要",
|
||||
"camera_permission_is_required": "カメラの許可が必要です。\nアプリの設定から有効にしてください。",
|
||||
"switchToETHWallet": "イーサリアムウォレットに切り替えてもう一度お試しください"
|
||||
}
|
||||
|
|
|
@ -725,6 +725,7 @@
|
|||
"enter_seed_phrase": "시드 문구를 입력하십시오",
|
||||
"add_contact": "주소록에 추가",
|
||||
"exchange_provider_unsupported": "${providerName}은 더 이상 지원되지 않습니다!",
|
||||
"require_for_exchanges_to_external_wallets": "외부 지갑으로의 교환을 위해 필요",
|
||||
"camera_permission_is_required": "카메라 권한이 필요합니다.\n앱 설정에서 활성화해 주세요.",
|
||||
"switchToETHWallet": "이더리움 지갑으로 전환한 후 다시 시도해 주세요."
|
||||
}
|
||||
|
|
|
@ -725,6 +725,7 @@
|
|||
"enter_seed_phrase": "သင့်ရဲ့မျိုးစေ့စကားစုကိုရိုက်ထည့်ပါ",
|
||||
"add_contact": "အဆက်အသွယ်ထည့်ပါ။",
|
||||
"exchange_provider_unsupported": "${providerName} မရှိတော့ပါ!",
|
||||
"require_for_exchanges_to_external_wallets": "ပြင်ပပိုက်ဆံအိတ်များသို့ လဲလှယ်ရန် လိုအပ်သည်။",
|
||||
"camera_permission_is_required": "ကင်မရာခွင့်ပြုချက် လိုအပ်ပါသည်။\nအက်ပ်ဆက်တင်များမှ ၎င်းကိုဖွင့်ပါ။",
|
||||
"switchToETHWallet": "ကျေးဇူးပြု၍ Ethereum ပိုက်ဆံအိတ်သို့ ပြောင်းပြီး ထပ်စမ်းကြည့်ပါ။"
|
||||
}
|
||||
|
|
|
@ -727,6 +727,7 @@
|
|||
"enter_seed_phrase": "Voer uw zaadzin in",
|
||||
"add_contact": "Contactpersoon toevoegen",
|
||||
"exchange_provider_unsupported": "${providerName} wordt niet langer ondersteund!",
|
||||
"require_for_exchanges_to_external_wallets": "Vereist voor uitwisselingen naar externe portemonnees",
|
||||
"camera_permission_is_required": "Cameratoestemming is vereist.\nSchakel dit in via de app-instellingen.",
|
||||
"switchToETHWallet": "Schakel over naar een Ethereum-portemonnee en probeer het opnieuw"
|
||||
}
|
||||
|
|
|
@ -727,6 +727,7 @@
|
|||
"enter_seed_phrase": "Wprowadź swoją frazę nasienną",
|
||||
"add_contact": "Dodaj kontakt",
|
||||
"exchange_provider_unsupported": "${providerName} nie jest już obsługiwany!",
|
||||
"require_for_exchanges_to_external_wallets": "Wymagaj wymiany na portfele zewnętrzne",
|
||||
"camera_permission_is_required": "Wymagane jest pozwolenie na korzystanie z aparatu.\nWłącz tę funkcję w ustawieniach aplikacji.",
|
||||
"switchToETHWallet": "Przejdź na portfel Ethereum i spróbuj ponownie"
|
||||
}
|
||||
|
|
|
@ -726,6 +726,7 @@
|
|||
"enter_seed_phrase": "Digite sua frase de semente",
|
||||
"add_contact": "Adicionar contato",
|
||||
"exchange_provider_unsupported": "${providerName} não é mais suportado!",
|
||||
"require_for_exchanges_to_external_wallets": "Exigir trocas para carteiras externas",
|
||||
"camera_permission_is_required": "É necessária permissão da câmera.\nAtive-o nas configurações do aplicativo.",
|
||||
"switchToETHWallet": "Mude para uma carteira Ethereum e tente novamente"
|
||||
}
|
||||
|
|
|
@ -727,6 +727,7 @@
|
|||
"enter_seed_phrase": "Введите свою семенную фразу",
|
||||
"add_contact": "Добавить контакт",
|
||||
"exchange_provider_unsupported": "${providerName} больше не поддерживается!",
|
||||
"require_for_exchanges_to_external_wallets": "Требовать обмена на внешние кошельки",
|
||||
"camera_permission_is_required": "Требуется разрешение камеры.\nПожалуйста, включите его в настройках приложения.",
|
||||
"switchToETHWallet": "Пожалуйста, переключитесь на кошелек Ethereum и повторите попытку."
|
||||
}
|
||||
|
|
|
@ -725,6 +725,7 @@
|
|||
"enter_seed_phrase": "ป้อนวลีเมล็ดพันธุ์ของคุณ",
|
||||
"add_contact": "เพิ่มผู้ติดต่อ",
|
||||
"exchange_provider_unsupported": "${providerName} ไม่ได้รับการสนับสนุนอีกต่อไป!",
|
||||
"require_for_exchanges_to_external_wallets": "จำเป็นต้องแลกเปลี่ยนกับกระเป๋าเงินภายนอก",
|
||||
"camera_permission_is_required": "ต้องได้รับอนุญาตจากกล้อง\nโปรดเปิดใช้งานจากการตั้งค่าแอป",
|
||||
"switchToETHWallet": "โปรดเปลี่ยนไปใช้กระเป๋าเงิน Ethereum แล้วลองอีกครั้ง"
|
||||
}
|
||||
|
|
|
@ -722,6 +722,7 @@
|
|||
"enter_seed_phrase": "Ipasok ang iyong pariralang binhi",
|
||||
"add_contact": "Magdagdag ng contact",
|
||||
"exchange_provider_unsupported": "Ang ${providerName} ay hindi na suportado!",
|
||||
"require_for_exchanges_to_external_wallets": "Kinakailangan para sa mga palitan sa mga panlabas na wallet",
|
||||
"camera_permission_is_required": "Kinakailangan ang pahintulot sa camera.\nMangyaring paganahin ito mula sa mga setting ng app.",
|
||||
"switchToETHWallet": "Mangyaring lumipat sa isang Ethereum wallet at subukang muli"
|
||||
}
|
||||
|
|
|
@ -725,6 +725,7 @@
|
|||
"enter_seed_phrase": "Tohum ifadenizi girin",
|
||||
"add_contact": "Kişi ekle",
|
||||
"exchange_provider_unsupported": "${providerName} artık desteklenmiyor!",
|
||||
"require_for_exchanges_to_external_wallets": "Harici cüzdanlara geçiş yapılmasını zorunlu kılın",
|
||||
"camera_permission_is_required": "Kamera izni gereklidir.\nLütfen uygulama ayarlarından etkinleştirin.",
|
||||
"switchToETHWallet": "Lütfen bir Ethereum cüzdanına geçin ve tekrar deneyin"
|
||||
}
|
||||
|
|
|
@ -727,6 +727,7 @@
|
|||
"enter_seed_phrase": "Введіть свою насіннєву фразу",
|
||||
"add_contact": "Додати контакт",
|
||||
"exchange_provider_unsupported": "${providerName} більше не підтримується!",
|
||||
"require_for_exchanges_to_external_wallets": "Потрібен для обміну на зовнішні гаманці",
|
||||
"camera_permission_is_required": "Потрібен дозвіл камери.\nУвімкніть його в налаштуваннях програми.",
|
||||
"switchToETHWallet": "Перейдіть на гаманець Ethereum і повторіть спробу"
|
||||
}
|
||||
|
|
|
@ -719,6 +719,7 @@
|
|||
"enter_seed_phrase": "اپنے بیج کا جملہ درج کریں",
|
||||
"add_contact": "۔ﮟﯾﺮﮐ ﻞﻣﺎﺷ ﮧﻄﺑﺍﺭ",
|
||||
"exchange_provider_unsupported": "${providerName} اب تعاون نہیں کیا جاتا ہے!",
|
||||
"require_for_exchanges_to_external_wallets": "۔ﮯﮨ ﺕﺭﻭﺮﺿ ﯽﮐ ﮯﻟﺩﺎﺒﺗ ﮟﯿﻣ ﮮﻮﭩﺑ ﯽﻧﻭﺮﯿﺑ",
|
||||
"camera_permission_is_required": "۔ﮯﮨ ﺭﺎﮐﺭﺩ ﺕﺯﺎﺟﺍ ﯽﮐ ﮮﺮﻤﯿﮐ",
|
||||
"switchToETHWallet": "۔ﮟﯾﺮﮐ ﺶﺷﻮﮐ ﮦﺭﺎﺑﻭﺩ ﺭﻭﺍ ﮟﯾﺮﮐ ﭻﺋﻮﺳ ﺮﭘ ﭧﯿﻟﺍﻭ Ethereum ﻡﺮﮐ ﮦﺍﺮﺑ"
|
||||
}
|
||||
|
|
|
@ -721,6 +721,7 @@
|
|||
"enter_seed_phrase": "Tẹ ọrọ-iru irugbin rẹ",
|
||||
"add_contact": "Fi olubasọrọ kun",
|
||||
"exchange_provider_unsupported": "${providerName} ko ni atilẹyin mọ!",
|
||||
"require_for_exchanges_to_external_wallets": "Beere fun awọn paṣipaarọ si awọn apamọwọ ita",
|
||||
"camera_permission_is_required": "A nilo igbanilaaye kamẹra.\nJọwọ jeki o lati app eto.",
|
||||
"switchToETHWallet": "Jọwọ yipada si apamọwọ Ethereum ki o tun gbiyanju lẹẹkansi"
|
||||
}
|
||||
|
|
|
@ -726,6 +726,7 @@
|
|||
"enter_seed_phrase": "输入您的种子短语",
|
||||
"add_contact": "增加联系人",
|
||||
"exchange_provider_unsupported": "${providerName}不再支持!",
|
||||
"require_for_exchanges_to_external_wallets": "需要兑换到外部钱包",
|
||||
"camera_permission_is_required": "需要相机许可。\n请从应用程序设置中启用它。",
|
||||
"switchToETHWallet": "请切换到以太坊钱包并重试"
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue