CW-370-add-options-to-enable-disable-buy-and-sell-actions (#920)

* feat: In the privacy settings screen, add 2 options to Enable/Disable Buy and Sell actions

* fix: add strings

* fix: add the rest of the strings

* fix: disable instead of hide buy & sell buttons

* fix: use disableSell

* fix: main actions able to be onTapped even when disabled
This commit is contained in:
Rafael Saes 2023-05-15 09:26:56 -03:00 committed by GitHub
parent 0f44bc094f
commit 7fa7c45c0c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
30 changed files with 175 additions and 56 deletions

View file

@ -210,6 +210,8 @@ class BackupService {
final currentFiatCurrency = data[PreferencesKey.currentFiatCurrencyKey] as String?; final currentFiatCurrency = data[PreferencesKey.currentFiatCurrencyKey] as String?;
final shouldSaveRecipientAddress = data[PreferencesKey.shouldSaveRecipientAddressKey] as bool?; final shouldSaveRecipientAddress = data[PreferencesKey.shouldSaveRecipientAddressKey] as bool?;
final isAppSecure = data[PreferencesKey.isAppSecureKey] as bool?; final isAppSecure = data[PreferencesKey.isAppSecureKey] as bool?;
final disableBuy = data[PreferencesKey.disableBuyKey] as bool?;
final disableSell = data[PreferencesKey.disableSellKey] as bool?;
final currentTransactionPriorityKeyLegacy = data[PreferencesKey.currentTransactionPriorityKeyLegacy] as int?; final currentTransactionPriorityKeyLegacy = data[PreferencesKey.currentTransactionPriorityKeyLegacy] as int?;
final allowBiometricalAuthentication = data[PreferencesKey.allowBiometricalAuthenticationKey] as bool?; final allowBiometricalAuthentication = data[PreferencesKey.allowBiometricalAuthenticationKey] as bool?;
final currentBitcoinElectrumSererId = data[PreferencesKey.currentBitcoinElectrumSererIdKey] as int?; final currentBitcoinElectrumSererId = data[PreferencesKey.currentBitcoinElectrumSererIdKey] as int?;
@ -251,6 +253,16 @@ class BackupService {
PreferencesKey.isAppSecureKey, PreferencesKey.isAppSecureKey,
isAppSecure); isAppSecure);
if (disableBuy != null)
await _sharedPreferences.setBool(
PreferencesKey.disableBuyKey,
disableBuy);
if (disableSell != null)
await _sharedPreferences.setBool(
PreferencesKey.disableSellKey,
disableSell);
if (currentTransactionPriorityKeyLegacy != null) if (currentTransactionPriorityKeyLegacy != null)
await _sharedPreferences.setInt( await _sharedPreferences.setInt(
PreferencesKey.currentTransactionPriorityKeyLegacy, PreferencesKey.currentTransactionPriorityKeyLegacy,
@ -421,6 +433,10 @@ class BackupService {
_sharedPreferences.getString(PreferencesKey.currentFiatCurrencyKey), _sharedPreferences.getString(PreferencesKey.currentFiatCurrencyKey),
PreferencesKey.shouldSaveRecipientAddressKey: _sharedPreferences PreferencesKey.shouldSaveRecipientAddressKey: _sharedPreferences
.getBool(PreferencesKey.shouldSaveRecipientAddressKey), .getBool(PreferencesKey.shouldSaveRecipientAddressKey),
PreferencesKey.disableBuyKey: _sharedPreferences
.getBool(PreferencesKey.disableBuyKey),
PreferencesKey.disableSellKey: _sharedPreferences
.getBool(PreferencesKey.disableSellKey),
PreferencesKey.isDarkThemeLegacy: PreferencesKey.isDarkThemeLegacy:
_sharedPreferences.getBool(PreferencesKey.isDarkThemeLegacy), _sharedPreferences.getBool(PreferencesKey.isDarkThemeLegacy),
PreferencesKey.currentPinLength: PreferencesKey.currentPinLength:

View file

@ -47,23 +47,23 @@ class MainActions {
switch (walletType) { switch (walletType) {
case WalletType.bitcoin: case WalletType.bitcoin:
case WalletType.litecoin: case WalletType.litecoin:
if (DeviceInfo.instance.isMobile) { if (viewModel.isEnabledBuyAction) {
Navigator.of(context).pushNamed(Routes.onramperPage); if (DeviceInfo.instance.isMobile) {
} else { Navigator.of(context).pushNamed(Routes.onramperPage);
final uri = getIt } else {
.get<OnRamperBuyProvider>() final uri = getIt.get<OnRamperBuyProvider>().requestUrl();
.requestUrl(); await launchUrl(uri);
await launchUrl(uri); }
} }
break; break;
case WalletType.monero: case WalletType.monero:
if (DeviceInfo.instance.isMobile) { if (viewModel.isEnabledBuyAction) {
Navigator.of(context).pushNamed(Routes.payfuraPage); if (DeviceInfo.instance.isMobile) {
} else { Navigator.of(context).pushNamed(Routes.payfuraPage);
final uri = getIt } else {
.get<PayfuraBuyProvider>() final uri = getIt.get<PayfuraBuyProvider>().requestUrl();
.requestUrl(); await launchUrl(uri);
await launchUrl(uri); }
} }
break; break;
default: default:
@ -118,12 +118,14 @@ class MainActions {
switch (walletType) { switch (walletType) {
case WalletType.bitcoin: case WalletType.bitcoin:
final moonPaySellProvider = MoonPaySellProvider(); if (viewModel.isEnabledSellAction) {
final uri = await moonPaySellProvider.requestUrl( final moonPaySellProvider = MoonPaySellProvider();
currency: viewModel.wallet.currency, final uri = await moonPaySellProvider.requestUrl(
refundWalletAddress: viewModel.wallet.walletAddresses.address, currency: viewModel.wallet.currency,
); refundWalletAddress: viewModel.wallet.walletAddresses.address,
await launchUrl(uri); );
await launchUrl(uri);
}
break; break;
default: default:
await showPopUp<void>( await showPopUp<void>(

View file

@ -10,6 +10,8 @@ class PreferencesKey {
static const currentBalanceDisplayModeKey = 'current_balance_display_mode'; static const currentBalanceDisplayModeKey = 'current_balance_display_mode';
static const shouldSaveRecipientAddressKey = 'save_recipient_address'; static const shouldSaveRecipientAddressKey = 'save_recipient_address';
static const isAppSecureKey = 'is_app_secure'; static const isAppSecureKey = 'is_app_secure';
static const disableBuyKey = 'disable_buy';
static const disableSellKey = 'disable_sell';
static const currentFiatApiModeKey = 'current_fiat_api_mode'; static const currentFiatApiModeKey = 'current_fiat_api_mode';
static const allowBiometricalAuthenticationKey = static const allowBiometricalAuthenticationKey =
'allow_biometrical_authentication'; 'allow_biometrical_authentication';

View file

@ -50,11 +50,23 @@ class PrivacyPage extends BasePage {
_privacySettingsViewModel.setShouldSaveRecipientAddress(value); _privacySettingsViewModel.setShouldSaveRecipientAddress(value);
}), }),
if (Platform.isAndroid) if (Platform.isAndroid)
SettingsSwitcherCell(
title: S.current.prevent_screenshots,
value: _privacySettingsViewModel.isAppSecure,
onValueChange: (BuildContext _, bool value) {
_privacySettingsViewModel.setIsAppSecure(value);
}),
SettingsSwitcherCell( SettingsSwitcherCell(
title: S.current.prevent_screenshots, title: S.current.disable_buy,
value: _privacySettingsViewModel.isAppSecure, value: _privacySettingsViewModel.disableBuy,
onValueChange: (BuildContext _, bool value) { onValueChange: (BuildContext _, bool value) {
_privacySettingsViewModel.setIsAppSecure(value); _privacySettingsViewModel.setDisableBuy(value);
}),
SettingsSwitcherCell(
title: S.current.disable_sell,
value: _privacySettingsViewModel.disableSell,
onValueChange: (BuildContext _, bool value) {
_privacySettingsViewModel.setDisableSell(value);
}), }),
], ],
); );

View file

@ -34,6 +34,8 @@ abstract class SettingsStoreBase with Store {
required BalanceDisplayMode initialBalanceDisplayMode, required BalanceDisplayMode initialBalanceDisplayMode,
required bool initialSaveRecipientAddress, required bool initialSaveRecipientAddress,
required bool initialAppSecure, required bool initialAppSecure,
required bool initialDisableBuy,
required bool initialDisableSell,
required FiatApiMode initialFiatMode, required FiatApiMode initialFiatMode,
required bool initialAllowBiometricalAuthentication, required bool initialAllowBiometricalAuthentication,
required ExchangeApiMode initialExchangeStatus, required ExchangeApiMode initialExchangeStatus,
@ -57,6 +59,8 @@ abstract class SettingsStoreBase with Store {
balanceDisplayMode = initialBalanceDisplayMode, balanceDisplayMode = initialBalanceDisplayMode,
shouldSaveRecipientAddress = initialSaveRecipientAddress, shouldSaveRecipientAddress = initialSaveRecipientAddress,
isAppSecure = initialAppSecure, isAppSecure = initialAppSecure,
disableBuy = initialDisableBuy,
disableSell = initialDisableSell,
fiatApiMode = initialFiatMode, fiatApiMode = initialFiatMode,
allowBiometricalAuthentication = initialAllowBiometricalAuthentication, allowBiometricalAuthentication = initialAllowBiometricalAuthentication,
shouldShowMarketPlaceInDashboard = initialShouldShowMarketPlaceInDashboard, shouldShowMarketPlaceInDashboard = initialShouldShowMarketPlaceInDashboard,
@ -130,6 +134,16 @@ abstract class SettingsStoreBase with Store {
} }
}); });
reaction(
(_) => disableBuy,
(bool disableBuy) => sharedPreferences.setBool(
PreferencesKey.disableBuyKey, disableBuy));
reaction(
(_) => disableSell,
(bool disableSell) => sharedPreferences.setBool(
PreferencesKey.disableSellKey, disableSell));
if (Platform.isAndroid) { if (Platform.isAndroid) {
setIsAppSecureNative(isAppSecure); setIsAppSecureNative(isAppSecure);
} }
@ -217,6 +231,12 @@ abstract class SettingsStoreBase with Store {
@observable @observable
bool isAppSecure; bool isAppSecure;
@observable
bool disableBuy;
@observable
bool disableSell;
@observable @observable
bool allowBiometricalAuthentication; bool allowBiometricalAuthentication;
@ -309,6 +329,10 @@ abstract class SettingsStoreBase with Store {
sharedPreferences.getBool(PreferencesKey.shouldSaveRecipientAddressKey) ?? false; sharedPreferences.getBool(PreferencesKey.shouldSaveRecipientAddressKey) ?? false;
final isAppSecure = final isAppSecure =
sharedPreferences.getBool(PreferencesKey.isAppSecureKey) ?? false; sharedPreferences.getBool(PreferencesKey.isAppSecureKey) ?? false;
final disableBuy =
sharedPreferences.getBool(PreferencesKey.disableBuyKey) ?? false;
final disableSell =
sharedPreferences.getBool(PreferencesKey.disableSellKey) ?? false;
final currentFiatApiMode = FiatApiMode.deserialize( final currentFiatApiMode = FiatApiMode.deserialize(
raw: sharedPreferences raw: sharedPreferences
.getInt(PreferencesKey.currentFiatApiModeKey) ?? FiatApiMode.enabled.raw); .getInt(PreferencesKey.currentFiatApiModeKey) ?? FiatApiMode.enabled.raw);
@ -388,6 +412,8 @@ abstract class SettingsStoreBase with Store {
initialBalanceDisplayMode: currentBalanceDisplayMode, initialBalanceDisplayMode: currentBalanceDisplayMode,
initialSaveRecipientAddress: shouldSaveRecipientAddress, initialSaveRecipientAddress: shouldSaveRecipientAddress,
initialAppSecure: isAppSecure, initialAppSecure: isAppSecure,
initialDisableBuy: disableBuy,
initialDisableSell: disableSell,
initialFiatMode: currentFiatApiMode, initialFiatMode: currentFiatApiMode,
initialAllowBiometricalAuthentication: allowBiometricalAuthentication, initialAllowBiometricalAuthentication: allowBiometricalAuthentication,
initialExchangeStatus: exchangeStatus, initialExchangeStatus: exchangeStatus,
@ -435,6 +461,10 @@ abstract class SettingsStoreBase with Store {
sharedPreferences.getBool(PreferencesKey.shouldSaveRecipientAddressKey) ?? shouldSaveRecipientAddress; sharedPreferences.getBool(PreferencesKey.shouldSaveRecipientAddressKey) ?? shouldSaveRecipientAddress;
isAppSecure = isAppSecure =
sharedPreferences.getBool(PreferencesKey.isAppSecureKey) ?? isAppSecure; sharedPreferences.getBool(PreferencesKey.isAppSecureKey) ?? isAppSecure;
disableBuy =
sharedPreferences.getBool(PreferencesKey.disableBuyKey) ?? disableBuy;
disableSell =
sharedPreferences.getBool(PreferencesKey.disableSellKey) ?? disableSell;
allowBiometricalAuthentication = sharedPreferences allowBiometricalAuthentication = sharedPreferences
.getBool(PreferencesKey.allowBiometricalAuthenticationKey) ?? .getBool(PreferencesKey.allowBiometricalAuthenticationKey) ??
allowBiometricalAuthentication; allowBiometricalAuthentication;

View file

@ -46,9 +46,7 @@ abstract class DashboardViewModelBase with Store {
required this.anonpayTransactionsStore}) required this.anonpayTransactionsStore})
: isOutdatedElectrumWallet = false, : isOutdatedElectrumWallet = false,
hasSellAction = false, hasSellAction = false,
isEnabledSellAction = false,
hasBuyAction = false, hasBuyAction = false,
isEnabledBuyAction = false,
hasExchangeAction = false, hasExchangeAction = false,
isShowFirstYatIntroduction = false, isShowFirstYatIntroduction = false,
isShowSecondYatIntroduction = false, isShowSecondYatIntroduction = false,
@ -287,14 +285,19 @@ abstract class DashboardViewModelBase with Store {
@observable @observable
bool hasExchangeAction; bool hasExchangeAction;
@observable @computed
bool isEnabledBuyAction; bool get isEnabledBuyAction =>
!settingsStore.disableBuy && wallet.type != WalletType.haven;
@observable @observable
bool hasBuyAction; bool hasBuyAction;
@observable @computed
bool isEnabledSellAction; bool get isEnabledSellAction =>
!settingsStore.disableSell &&
wallet.type != WalletType.haven &&
wallet.type != WalletType.monero &&
wallet.type != WalletType.litecoin;
@observable @observable
bool hasSellAction; bool hasSellAction;
@ -398,11 +401,7 @@ abstract class DashboardViewModelBase with Store {
void updateActions() { void updateActions() {
hasExchangeAction = !isHaven; hasExchangeAction = !isHaven;
isEnabledBuyAction = wallet.type != WalletType.haven;
hasBuyAction = !isHaven; hasBuyAction = !isHaven;
isEnabledSellAction = wallet.type != WalletType.haven
&& wallet.type != WalletType.monero
&& wallet.type != WalletType.litecoin;
hasSellAction = !isHaven; hasSellAction = !isHaven;
} }
} }

View file

@ -24,6 +24,12 @@ abstract class PrivacySettingsViewModelBase with Store {
@computed @computed
bool get isAppSecure => _settingsStore.isAppSecure; bool get isAppSecure => _settingsStore.isAppSecure;
@computed
bool get disableBuy => _settingsStore.disableBuy;
@computed
bool get disableSell => _settingsStore.disableSell;
@action @action
void setShouldSaveRecipientAddress(bool value) => _settingsStore.shouldSaveRecipientAddress = value; void setShouldSaveRecipientAddress(bool value) => _settingsStore.shouldSaveRecipientAddress = value;
@ -36,4 +42,10 @@ abstract class PrivacySettingsViewModelBase with Store {
@action @action
void setIsAppSecure(bool value) => _settingsStore.isAppSecure = value; void setIsAppSecure(bool value) => _settingsStore.isAppSecure = value;
@action
void setDisableBuy(bool value) => _settingsStore.disableBuy = value;
@action
void setDisableSell(bool value) => _settingsStore.disableSell = value;
} }

View file

@ -706,5 +706,7 @@
"error_text_input_below_minimum_limit":" المبلغ أقل من الحد الأدنى", "error_text_input_below_minimum_limit":" المبلغ أقل من الحد الأدنى",
"error_text_input_above_maximum_limit":"المبلغ أكبر من الحد الأقصى", "error_text_input_above_maximum_limit":"المبلغ أكبر من الحد الأقصى",
"show_market_place": "إظهار السوق", "show_market_place": "إظهار السوق",
"prevent_screenshots": "منع لقطات الشاشة وتسجيل الشاشة" "prevent_screenshots": "منع لقطات الشاشة وتسجيل الشاشة",
"disable_buy": "تعطيل إجراء الشراء",
"disable_sell": "قم بتعطيل إجراء البيع"
} }

View file

@ -702,5 +702,7 @@
"error_text_input_below_minimum_limit" : "Сумата е по-малко от минималната", "error_text_input_below_minimum_limit" : "Сумата е по-малко от минималната",
"error_text_input_above_maximum_limit" : "Сумата надвишава максималната", "error_text_input_above_maximum_limit" : "Сумата надвишава максималната",
"show_market_place":"Покажи пазар", "show_market_place":"Покажи пазар",
"prevent_screenshots": "Предотвратете екранни снимки и запис на екрана" "prevent_screenshots": "Предотвратете екранни снимки и запис на екрана",
"disable_buy": "Деактивирайте действието за покупка",
"disable_sell": "Деактивирайте действието за продажба"
} }

View file

@ -702,5 +702,7 @@
"error_text_input_below_minimum_limit" : "Částka je menší než minimální hodnota", "error_text_input_below_minimum_limit" : "Částka je menší než minimální hodnota",
"error_text_input_above_maximum_limit" : "Částka je větší než maximální hodnota", "error_text_input_above_maximum_limit" : "Částka je větší než maximální hodnota",
"show_market_place": "Zobrazit trh", "show_market_place": "Zobrazit trh",
"prevent_screenshots": "Zabránit vytváření snímků obrazovky a nahrávání obrazovky" "prevent_screenshots": "Zabránit vytváření snímků obrazovky a nahrávání obrazovky",
"disable_buy": "Zakázat akci nákupu",
"disable_sell": "Zakázat akci prodeje"
} }

View file

@ -708,5 +708,7 @@
"error_text_input_below_minimum_limit" : "Menge ist unter dem Minimum", "error_text_input_below_minimum_limit" : "Menge ist unter dem Minimum",
"error_text_input_above_maximum_limit" : "Menge ist über dem Maximum", "error_text_input_above_maximum_limit" : "Menge ist über dem Maximum",
"show_market_place": "Marktplatz anzeigen", "show_market_place": "Marktplatz anzeigen",
"prevent_screenshots": "Verhindern Sie Screenshots und Bildschirmaufzeichnungen" "prevent_screenshots": "Verhindern Sie Screenshots und Bildschirmaufzeichnungen",
"disable_buy": "Kaufaktion deaktivieren",
"disable_sell": "Verkaufsaktion deaktivieren"
} }

View file

@ -708,5 +708,7 @@
"error_text_input_below_minimum_limit" : "Amount is less than the minimum", "error_text_input_below_minimum_limit" : "Amount is less than the minimum",
"error_text_input_above_maximum_limit" : "Amount is more than the maximum", "error_text_input_above_maximum_limit" : "Amount is more than the maximum",
"show_market_place" :"Show Marketplace", "show_market_place" :"Show Marketplace",
"prevent_screenshots": "Prevent screenshots and screen recording" "prevent_screenshots": "Prevent screenshots and screen recording",
"disable_buy": "Disable buy action",
"disable_sell": "Disable sell action"
} }

View file

@ -708,5 +708,7 @@
"error_text_input_below_minimum_limit" : "La cantidad es menos que mínima", "error_text_input_below_minimum_limit" : "La cantidad es menos que mínima",
"error_text_input_above_maximum_limit" : "La cantidad es más que el máximo", "error_text_input_above_maximum_limit" : "La cantidad es más que el máximo",
"show_market_place": "Mostrar mercado", "show_market_place": "Mostrar mercado",
"prevent_screenshots": "Evitar capturas de pantalla y grabación de pantalla" "prevent_screenshots": "Evitar capturas de pantalla y grabación de pantalla",
"disable_buy": "Desactivar acción de compra",
"disable_sell": "Desactivar acción de venta"
} }

View file

@ -708,5 +708,7 @@
"error_text_input_below_minimum_limit" : "Le montant est inférieur au minimum", "error_text_input_below_minimum_limit" : "Le montant est inférieur au minimum",
"error_text_input_above_maximum_limit" : "Le montant est supérieur au maximum", "error_text_input_above_maximum_limit" : "Le montant est supérieur au maximum",
"show_market_place" :"Afficher la place de marché", "show_market_place" :"Afficher la place de marché",
"prevent_screenshots": "Empêcher les captures d'écran et l'enregistrement d'écran" "prevent_screenshots": "Empêcher les captures d'écran et l'enregistrement d'écran",
"disable_buy": "Désactiver l'action d'achat",
"disable_sell": "Désactiver l'action de vente"
} }

View file

@ -708,5 +708,7 @@
"error_text_input_below_minimum_limit" : "राशि न्यूनतम से कम है", "error_text_input_below_minimum_limit" : "राशि न्यूनतम से कम है",
"error_text_input_above_maximum_limit" : "राशि अधिकतम से अधिक है", "error_text_input_above_maximum_limit" : "राशि अधिकतम से अधिक है",
"show_market_place":"बाज़ार दिखाएँ", "show_market_place":"बाज़ार दिखाएँ",
"prevent_screenshots": "स्क्रीनशॉट और स्क्रीन रिकॉर्डिंग रोकें" "prevent_screenshots": "स्क्रीनशॉट और स्क्रीन रिकॉर्डिंग रोकें",
"disable_buy": "खरीद कार्रवाई अक्षम करें",
"disable_sell": "बेचने की कार्रवाई अक्षम करें"
} }

View file

@ -708,5 +708,7 @@
"error_text_input_below_minimum_limit" : "Iznos je manji od minimalnog", "error_text_input_below_minimum_limit" : "Iznos je manji od minimalnog",
"error_text_input_above_maximum_limit" : "Iznos je veći od maskimalnog", "error_text_input_above_maximum_limit" : "Iznos je veći od maskimalnog",
"show_market_place" : "Prikaži tržište", "show_market_place" : "Prikaži tržište",
"prevent_screenshots": "Spriječite snimke zaslona i snimanje zaslona" "prevent_screenshots": "Spriječite snimke zaslona i snimanje zaslona",
"disable_buy": "Onemogući kupnju",
"disable_sell": "Onemogući akciju prodaje"
} }

View file

@ -684,5 +684,7 @@
"error_text_input_below_minimum_limit" : "Jumlah kurang dari minimal", "error_text_input_below_minimum_limit" : "Jumlah kurang dari minimal",
"error_text_input_above_maximum_limit" : "Jumlah lebih dari maksimal", "error_text_input_above_maximum_limit" : "Jumlah lebih dari maksimal",
"show_market_place": "Tampilkan Pasar", "show_market_place": "Tampilkan Pasar",
"prevent_screenshots": "Cegah tangkapan layar dan perekaman layar" "prevent_screenshots": "Cegah tangkapan layar dan perekaman layar",
"disable_buy": "Nonaktifkan tindakan beli",
"disable_sell": "Nonaktifkan aksi jual"
} }

View file

@ -708,5 +708,7 @@
"error_text_input_below_minimum_limit" : "L'ammontare è inferiore al minimo", "error_text_input_below_minimum_limit" : "L'ammontare è inferiore al minimo",
"error_text_input_above_maximum_limit" : "L'ammontare è superiore al massimo", "error_text_input_above_maximum_limit" : "L'ammontare è superiore al massimo",
"show_market_place":"Mostra mercato", "show_market_place":"Mostra mercato",
"prevent_screenshots": "Impedisci screenshot e registrazione dello schermo" "prevent_screenshots": "Impedisci screenshot e registrazione dello schermo",
"disable_buy": "Disabilita l'azione di acquisto",
"disable_sell": "Disabilita l'azione di vendita"
} }

View file

@ -708,5 +708,7 @@
"error_text_input_below_minimum_limit" : "金額は最小額より少ない", "error_text_input_below_minimum_limit" : "金額は最小額より少ない",
"error_text_input_above_maximum_limit" : "金額は最大値を超えています", "error_text_input_above_maximum_limit" : "金額は最大値を超えています",
"show_market_place":"マーケットプレイスを表示", "show_market_place":"マーケットプレイスを表示",
"prevent_screenshots": "スクリーンショットと画面録画を防止する" "prevent_screenshots": "スクリーンショットと画面録画を防止する",
"disable_buy": "購入アクションを無効にする",
"disable_sell": "販売アクションを無効にする"
} }

View file

@ -708,5 +708,7 @@
"error_text_input_below_minimum_limit" : "금액이 최소보다 적습니다.", "error_text_input_below_minimum_limit" : "금액이 최소보다 적습니다.",
"error_text_input_above_maximum_limit" : "금액이 최대 값보다 많습니다.", "error_text_input_above_maximum_limit" : "금액이 최대 값보다 많습니다.",
"show_market_place":"마켓플레이스 표시", "show_market_place":"마켓플레이스 표시",
"prevent_screenshots": "스크린샷 및 화면 녹화 방지" "prevent_screenshots": "스크린샷 및 화면 녹화 방지",
"disable_buy": "구매 행동 비활성화",
"disable_sell": "판매 조치 비활성화"
} }

View file

@ -708,5 +708,7 @@
"error_text_input_below_minimum_limit" : "ပမာဏသည် အနိမ့်ဆုံးထက်နည်းသည်။", "error_text_input_below_minimum_limit" : "ပမာဏသည် အနိမ့်ဆုံးထက်နည်းသည်။",
"error_text_input_above_maximum_limit" : "ပမာဏသည် အများဆုံးထက် ပိုများသည်။", "error_text_input_above_maximum_limit" : "ပမာဏသည် အများဆုံးထက် ပိုများသည်။",
"show_market_place":"စျေးကွက်ကိုပြသပါ။", "show_market_place":"စျေးကွက်ကိုပြသပါ။",
"prevent_screenshots": "ဖန်သားပြင်ဓာတ်ပုံများနှင့် မျက်နှာပြင်ရိုက်ကူးခြင်းကို တားဆီးပါ။" "prevent_screenshots": "ဖန်သားပြင်ဓာတ်ပုံများနှင့် မျက်နှာပြင်ရိုက်ကူးခြင်းကို တားဆီးပါ။",
"disable_buy": "ဝယ်ယူမှု လုပ်ဆောင်ချက်ကို ပိတ်ပါ။",
"disable_sell": "ရောင်းချခြင်းလုပ်ဆောင်ချက်ကို ပိတ်ပါ။"
} }

View file

@ -708,5 +708,7 @@
"error_text_input_below_minimum_limit" : "Bedrag is minder dan minimaal", "error_text_input_below_minimum_limit" : "Bedrag is minder dan minimaal",
"error_text_input_above_maximum_limit" : "Bedrag is meer dan maximaal", "error_text_input_above_maximum_limit" : "Bedrag is meer dan maximaal",
"show_market_place":"Toon Marktplaats", "show_market_place":"Toon Marktplaats",
"prevent_screenshots": "Voorkom screenshots en schermopname" "prevent_screenshots": "Voorkom screenshots en schermopname",
"disable_buy": "Koopactie uitschakelen",
"disable_sell": "Verkoopactie uitschakelen"
} }

View file

@ -708,5 +708,7 @@
"error_text_input_below_minimum_limit" : "Kwota jest mniejsza niż minimalna", "error_text_input_below_minimum_limit" : "Kwota jest mniejsza niż minimalna",
"error_text_input_above_maximum_limit" : "Kwota jest większa niż maksymalna", "error_text_input_above_maximum_limit" : "Kwota jest większa niż maksymalna",
"show_market_place" : "Pokaż rynek", "show_market_place" : "Pokaż rynek",
"prevent_screenshots": "Zapobiegaj zrzutom ekranu i nagrywaniu ekranu" "prevent_screenshots": "Zapobiegaj zrzutom ekranu i nagrywaniu ekranu",
"disable_buy": "Wyłącz akcję kupna",
"disable_sell": "Wyłącz akcję sprzedaży"
} }

View file

@ -707,5 +707,7 @@
"error_text_input_below_minimum_limit" : "O valor é menor que o mínimo", "error_text_input_below_minimum_limit" : "O valor é menor que o mínimo",
"error_text_input_above_maximum_limit" : "O valor é superior ao máximo", "error_text_input_above_maximum_limit" : "O valor é superior ao máximo",
"show_market_place":"Mostrar mercado", "show_market_place":"Mostrar mercado",
"prevent_screenshots": "Evite capturas de tela e gravação de tela" "prevent_screenshots": "Evite capturas de tela e gravação de tela",
"disable_buy": "Desativar ação de compra",
"disable_sell": "Desativar ação de venda"
} }

View file

@ -708,5 +708,7 @@
"error_text_input_below_minimum_limit" : "Сумма меньше минимальной", "error_text_input_below_minimum_limit" : "Сумма меньше минимальной",
"error_text_input_above_maximum_limit" : "Сумма больше максимальной", "error_text_input_above_maximum_limit" : "Сумма больше максимальной",
"show_market_place":"Показать торговую площадку", "show_market_place":"Показать торговую площадку",
"prevent_screenshots": "Предотвратить скриншоты и запись экрана" "prevent_screenshots": "Предотвратить скриншоты и запись экрана",
"disable_buy": "Отключить действие покупки",
"disable_sell": "Отключить действие продажи"
} }

View file

@ -706,5 +706,7 @@
"error_text_input_below_minimum_limit" : "จำนวนเงินน้อยกว่าขั้นต่ำ", "error_text_input_below_minimum_limit" : "จำนวนเงินน้อยกว่าขั้นต่ำ",
"error_text_input_above_maximum_limit" : "จำนวนเงินสูงกว่าค่าสูงสุด", "error_text_input_above_maximum_limit" : "จำนวนเงินสูงกว่าค่าสูงสุด",
"show_market_place":"แสดงตลาดกลาง", "show_market_place":"แสดงตลาดกลาง",
"prevent_screenshots": "ป้องกันภาพหน้าจอและการบันทึกหน้าจอ" "prevent_screenshots": "ป้องกันภาพหน้าจอและการบันทึกหน้าจอ",
"disable_buy": "ปิดการใช้งานการซื้อ",
"disable_sell": "ปิดการใช้งานการขาย"
} }

View file

@ -708,5 +708,7 @@
"error_text_input_below_minimum_limit" : "Miktar minimumdan daha azdır", "error_text_input_below_minimum_limit" : "Miktar minimumdan daha azdır",
"error_text_input_above_maximum_limit" : "Miktar maksimumdan daha fazla", "error_text_input_above_maximum_limit" : "Miktar maksimumdan daha fazla",
"show_market_place":"Pazar Yerini Göster", "show_market_place":"Pazar Yerini Göster",
"prevent_screenshots": "Ekran görüntülerini ve ekran kaydını önleyin" "prevent_screenshots": "Ekran görüntülerini ve ekran kaydını önleyin",
"disable_buy": "Satın alma işlemini devre dışı bırak",
"disable_sell": "Satış işlemini devre dışı bırak"
} }

View file

@ -707,5 +707,7 @@
"error_text_input_below_minimum_limit" : "Сума менша мінімальної", "error_text_input_below_minimum_limit" : "Сума менша мінімальної",
"error_text_input_above_maximum_limit" : "Сума більше максимальної", "error_text_input_above_maximum_limit" : "Сума більше максимальної",
"show_market_place":"Відображати маркетплейс", "show_market_place":"Відображати маркетплейс",
"prevent_screenshots": "Запобігати знімкам екрана та запису екрана" "prevent_screenshots": "Запобігати знімкам екрана та запису екрана",
"disable_buy": "Вимкнути дію покупки",
"disable_sell": "Вимкнути дію продажу"
} }

View file

@ -703,5 +703,7 @@
"error_text_input_below_minimum_limit" : "رقم کم از کم سے کم ہے۔", "error_text_input_below_minimum_limit" : "رقم کم از کم سے کم ہے۔",
"error_text_input_above_maximum_limit" : "رقم زیادہ سے زیادہ سے زیادہ ہے۔", "error_text_input_above_maximum_limit" : "رقم زیادہ سے زیادہ سے زیادہ ہے۔",
"show_market_place":"بازار دکھائیں۔", "show_market_place":"بازار دکھائیں۔",
"prevent_screenshots": "اسکرین شاٹس اور اسکرین ریکارڈنگ کو روکیں۔" "prevent_screenshots": "اسکرین شاٹس اور اسکرین ریکارڈنگ کو روکیں۔",
"disable_buy": "خرید ایکشن کو غیر فعال کریں۔",
"disable_sell": "فروخت کی کارروائی کو غیر فعال کریں۔"
} }

View file

@ -707,5 +707,7 @@
"error_text_input_below_minimum_limit" : "金额小于最小值", "error_text_input_below_minimum_limit" : "金额小于最小值",
"error_text_input_above_maximum_limit" : "金额大于最大值", "error_text_input_above_maximum_limit" : "金额大于最大值",
"show_market_place" :"显示市场", "show_market_place" :"显示市场",
"prevent_screenshots": "防止截屏和录屏" "prevent_screenshots": "防止截屏和录屏",
"disable_buy": "禁用购买操作",
"disable_sell": "禁用卖出操作"
} }