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

Rafael Saes committed May 15, 2023 at 09:26 UTC 7fa7c45c0cd54006a4c89d3fbebd25bc86f45f0d
30 files changed +175 -56
lib/core/backup_service.dart
+16
@@ -210,6 +210,8 @@ class BackupService {
210 final currentFiatCurrency = data[PreferencesKey.currentFiatCurrencyKey] as String?;
211 final shouldSaveRecipientAddress = data[PreferencesKey.shouldSaveRecipientAddressKey] as bool?;
212 final isAppSecure = data[PreferencesKey.isAppSecureKey] as bool?;
213 + final disableBuy = data[PreferencesKey.disableBuyKey] as bool?;
214 + final disableSell = data[PreferencesKey.disableSellKey] as bool?;
215 final currentTransactionPriorityKeyLegacy = data[PreferencesKey.currentTransactionPriorityKeyLegacy] as int?;
216 final allowBiometricalAuthentication = data[PreferencesKey.allowBiometricalAuthenticationKey] as bool?;
217 final currentBitcoinElectrumSererId = data[PreferencesKey.currentBitcoinElectrumSererIdKey] as int?;
@@ -251,6 +253,16 @@ class BackupService {
253 PreferencesKey.isAppSecureKey,
254 isAppSecure);
255
256 + if (disableBuy != null)
257 + await _sharedPreferences.setBool(
258 + PreferencesKey.disableBuyKey,
259 + disableBuy);
260 +
261 + if (disableSell != null)
262 + await _sharedPreferences.setBool(
263 + PreferencesKey.disableSellKey,
264 + disableSell);
265 +
266 if (currentTransactionPriorityKeyLegacy != null)
267 await _sharedPreferences.setInt(
268 PreferencesKey.currentTransactionPriorityKeyLegacy,
@@ -421,6 +433,10 @@ class BackupService {
433 _sharedPreferences.getString(PreferencesKey.currentFiatCurrencyKey),
434 PreferencesKey.shouldSaveRecipientAddressKey: _sharedPreferences
435 .getBool(PreferencesKey.shouldSaveRecipientAddressKey),
436 + PreferencesKey.disableBuyKey: _sharedPreferences
437 + .getBool(PreferencesKey.disableBuyKey),
438 + PreferencesKey.disableSellKey: _sharedPreferences
439 + .getBool(PreferencesKey.disableSellKey),
440 PreferencesKey.isDarkThemeLegacy:
441 _sharedPreferences.getBool(PreferencesKey.isDarkThemeLegacy),
442 PreferencesKey.currentPinLength:
lib/entities/main_actions.dart
+22 -20
@@ -47,23 +47,23 @@ class MainActions {
47 switch (walletType) {
48 case WalletType.bitcoin:
49 case WalletType.litecoin:
50 - if (DeviceInfo.instance.isMobile) {
51 - Navigator.of(context).pushNamed(Routes.onramperPage);
52 - } else {
53 - final uri = getIt
54 - .get<OnRamperBuyProvider>()
55 - .requestUrl();
56 - await launchUrl(uri);
50 + if (viewModel.isEnabledBuyAction) {
51 + if (DeviceInfo.instance.isMobile) {
52 + Navigator.of(context).pushNamed(Routes.onramperPage);
53 + } else {
54 + final uri = getIt.get<OnRamperBuyProvider>().requestUrl();
55 + await launchUrl(uri);
56 + }
57 }
58 break;
59 case WalletType.monero:
60 - if (DeviceInfo.instance.isMobile) {
61 - Navigator.of(context).pushNamed(Routes.payfuraPage);
62 - } else {
63 - final uri = getIt
64 - .get<PayfuraBuyProvider>()
65 - .requestUrl();
66 - await launchUrl(uri);
60 + if (viewModel.isEnabledBuyAction) {
61 + if (DeviceInfo.instance.isMobile) {
62 + Navigator.of(context).pushNamed(Routes.payfuraPage);
63 + } else {
64 + final uri = getIt.get<PayfuraBuyProvider>().requestUrl();
65 + await launchUrl(uri);
66 + }
67 }
68 break;
69 default:
@@ -118,12 +118,14 @@ class MainActions {
118
119 switch (walletType) {
120 case WalletType.bitcoin:
121 - final moonPaySellProvider = MoonPaySellProvider();
122 - final uri = await moonPaySellProvider.requestUrl(
123 - currency: viewModel.wallet.currency,
124 - refundWalletAddress: viewModel.wallet.walletAddresses.address,
125 - );
126 - await launchUrl(uri);
121 + if (viewModel.isEnabledSellAction) {
122 + final moonPaySellProvider = MoonPaySellProvider();
123 + final uri = await moonPaySellProvider.requestUrl(
124 + currency: viewModel.wallet.currency,
125 + refundWalletAddress: viewModel.wallet.walletAddresses.address,
126 + );
127 + await launchUrl(uri);
128 + }
129 break;
130 default:
131 await showPopUp<void>(
lib/entities/preferences_key.dart
+2
@@ -10,6 +10,8 @@ class PreferencesKey {
10 static const currentBalanceDisplayModeKey = 'current_balance_display_mode';
11 static const shouldSaveRecipientAddressKey = 'save_recipient_address';
12 static const isAppSecureKey = 'is_app_secure';
13 + static const disableBuyKey = 'disable_buy';
14 + static const disableSellKey = 'disable_sell';
15 static const currentFiatApiModeKey = 'current_fiat_api_mode';
16 static const allowBiometricalAuthenticationKey =
17 'allow_biometrical_authentication';
lib/src/screens/settings/privacy_page.dart
+15 -3
@@ -50,11 +50,23 @@ class PrivacyPage extends BasePage {
50 _privacySettingsViewModel.setShouldSaveRecipientAddress(value);
51 }),
52 if (Platform.isAndroid)
53 + SettingsSwitcherCell(
54 + title: S.current.prevent_screenshots,
55 + value: _privacySettingsViewModel.isAppSecure,
56 + onValueChange: (BuildContext _, bool value) {
57 + _privacySettingsViewModel.setIsAppSecure(value);
58 + }),
59 SettingsSwitcherCell(
54 - title: S.current.prevent_screenshots,
55 - value: _privacySettingsViewModel.isAppSecure,
60 + title: S.current.disable_buy,
61 + value: _privacySettingsViewModel.disableBuy,
62 onValueChange: (BuildContext _, bool value) {
57 - _privacySettingsViewModel.setIsAppSecure(value);
63 + _privacySettingsViewModel.setDisableBuy(value);
64 + }),
65 + SettingsSwitcherCell(
66 + title: S.current.disable_sell,
67 + value: _privacySettingsViewModel.disableSell,
68 + onValueChange: (BuildContext _, bool value) {
69 + _privacySettingsViewModel.setDisableSell(value);
70 }),
71 ],
72 );
lib/store/settings_store.dart
+30
@@ -34,6 +34,8 @@ abstract class SettingsStoreBase with Store {
34 required BalanceDisplayMode initialBalanceDisplayMode,
35 required bool initialSaveRecipientAddress,
36 required bool initialAppSecure,
37 + required bool initialDisableBuy,
38 + required bool initialDisableSell,
39 required FiatApiMode initialFiatMode,
40 required bool initialAllowBiometricalAuthentication,
41 required ExchangeApiMode initialExchangeStatus,
@@ -57,6 +59,8 @@ abstract class SettingsStoreBase with Store {
59 balanceDisplayMode = initialBalanceDisplayMode,
60 shouldSaveRecipientAddress = initialSaveRecipientAddress,
61 isAppSecure = initialAppSecure,
62 + disableBuy = initialDisableBuy,
63 + disableSell = initialDisableSell,
64 fiatApiMode = initialFiatMode,
65 allowBiometricalAuthentication = initialAllowBiometricalAuthentication,
66 shouldShowMarketPlaceInDashboard = initialShouldShowMarketPlaceInDashboard,
@@ -130,6 +134,16 @@ abstract class SettingsStoreBase with Store {
134 }
135 });
136
137 + reaction(
138 + (_) => disableBuy,
139 + (bool disableBuy) => sharedPreferences.setBool(
140 + PreferencesKey.disableBuyKey, disableBuy));
141 +
142 + reaction(
143 + (_) => disableSell,
144 + (bool disableSell) => sharedPreferences.setBool(
145 + PreferencesKey.disableSellKey, disableSell));
146 +
147 if (Platform.isAndroid) {
148 setIsAppSecureNative(isAppSecure);
149 }
@@ -217,6 +231,12 @@ abstract class SettingsStoreBase with Store {
231 @observable
232 bool isAppSecure;
233
234 + @observable
235 + bool disableBuy;
236 +
237 + @observable
238 + bool disableSell;
239 +
240 @observable
241 bool allowBiometricalAuthentication;
242
@@ -309,6 +329,10 @@ abstract class SettingsStoreBase with Store {
329 sharedPreferences.getBool(PreferencesKey.shouldSaveRecipientAddressKey) ?? false;
330 final isAppSecure =
331 sharedPreferences.getBool(PreferencesKey.isAppSecureKey) ?? false;
332 + final disableBuy =
333 + sharedPreferences.getBool(PreferencesKey.disableBuyKey) ?? false;
334 + final disableSell =
335 + sharedPreferences.getBool(PreferencesKey.disableSellKey) ?? false;
336 final currentFiatApiMode = FiatApiMode.deserialize(
337 raw: sharedPreferences
338 .getInt(PreferencesKey.currentFiatApiModeKey) ?? FiatApiMode.enabled.raw);
@@ -388,6 +412,8 @@ abstract class SettingsStoreBase with Store {
412 initialBalanceDisplayMode: currentBalanceDisplayMode,
413 initialSaveRecipientAddress: shouldSaveRecipientAddress,
414 initialAppSecure: isAppSecure,
415 + initialDisableBuy: disableBuy,
416 + initialDisableSell: disableSell,
417 initialFiatMode: currentFiatApiMode,
418 initialAllowBiometricalAuthentication: allowBiometricalAuthentication,
419 initialExchangeStatus: exchangeStatus,
@@ -435,6 +461,10 @@ abstract class SettingsStoreBase with Store {
461 sharedPreferences.getBool(PreferencesKey.shouldSaveRecipientAddressKey) ?? shouldSaveRecipientAddress;
462 isAppSecure =
463 sharedPreferences.getBool(PreferencesKey.isAppSecureKey) ?? isAppSecure;
464 + disableBuy =
465 + sharedPreferences.getBool(PreferencesKey.disableBuyKey) ?? disableBuy;
466 + disableSell =
467 + sharedPreferences.getBool(PreferencesKey.disableSellKey) ?? disableSell;
468 allowBiometricalAuthentication = sharedPreferences
469 .getBool(PreferencesKey.allowBiometricalAuthenticationKey) ??
470 allowBiometricalAuthentication;
lib/view_model/dashboard/dashboard_view_model.dart
+9 -10
@@ -46,9 +46,7 @@ abstract class DashboardViewModelBase with Store {
46 required this.anonpayTransactionsStore})
47 : isOutdatedElectrumWallet = false,
48 hasSellAction = false,
49 - isEnabledSellAction = false,
49 hasBuyAction = false,
51 - isEnabledBuyAction = false,
50 hasExchangeAction = false,
51 isShowFirstYatIntroduction = false,
52 isShowSecondYatIntroduction = false,
@@ -287,14 +285,19 @@ abstract class DashboardViewModelBase with Store {
285 @observable
286 bool hasExchangeAction;
287
290 - @observable
291 - bool isEnabledBuyAction;
288 + @computed
289 + bool get isEnabledBuyAction =>
290 + !settingsStore.disableBuy && wallet.type != WalletType.haven;
291
292 @observable
293 bool hasBuyAction;
294
296 - @observable
297 - bool isEnabledSellAction;
295 + @computed
296 + bool get isEnabledSellAction =>
297 + !settingsStore.disableSell &&
298 + wallet.type != WalletType.haven &&
299 + wallet.type != WalletType.monero &&
300 + wallet.type != WalletType.litecoin;
301
302 @observable
303 bool hasSellAction;
@@ -398,11 +401,7 @@ abstract class DashboardViewModelBase with Store {
401
402 void updateActions() {
403 hasExchangeAction = !isHaven;
401 - isEnabledBuyAction = wallet.type != WalletType.haven;
404 hasBuyAction = !isHaven;
403 - isEnabledSellAction = wallet.type != WalletType.haven
404 - && wallet.type != WalletType.monero
405 - && wallet.type != WalletType.litecoin;
405 hasSellAction = !isHaven;
406 }
407 }
lib/view_model/settings/privacy_settings_view_model.dart
+12
@@ -24,6 +24,12 @@ abstract class PrivacySettingsViewModelBase with Store {
24 @computed
25 bool get isAppSecure => _settingsStore.isAppSecure;
26
27 + @computed
28 + bool get disableBuy => _settingsStore.disableBuy;
29 +
30 + @computed
31 + bool get disableSell => _settingsStore.disableSell;
32 +
33 @action
34 void setShouldSaveRecipientAddress(bool value) => _settingsStore.shouldSaveRecipientAddress = value;
35
@@ -36,4 +42,10 @@ abstract class PrivacySettingsViewModelBase with Store {
42 @action
43 void setIsAppSecure(bool value) => _settingsStore.isAppSecure = value;
44
45 + @action
46 + void setDisableBuy(bool value) => _settingsStore.disableBuy = value;
47 +
48 + @action
49 + void setDisableSell(bool value) => _settingsStore.disableSell = value;
50 +
51 }
res/values/strings_ar.arb
+3 -1
@@ -706,5 +706,7 @@
706 "error_text_input_below_minimum_limit":" المبلغ أقل من الحد الأدنى",
707 "error_text_input_above_maximum_limit":"المبلغ أكبر من الحد الأقصى",
708 "show_market_place": "إظهار السوق",
709 - "prevent_screenshots": "منع لقطات الشاشة وتسجيل الشاشة"
709 + "prevent_screenshots": "منع لقطات الشاشة وتسجيل الشاشة",
710 + "disable_buy": "تعطيل إجراء الشراء",
711 + "disable_sell": "قم بتعطيل إجراء البيع"
712 }
res/values/strings_bg.arb
+3 -1
@@ -702,5 +702,7 @@
702 "error_text_input_below_minimum_limit" : "Сумата е по-малко от минималната",
703 "error_text_input_above_maximum_limit" : "Сумата надвишава максималната",
704 "show_market_place":"Покажи пазар",
705 - "prevent_screenshots": "Предотвратете екранни снимки и запис на екрана"
705 + "prevent_screenshots": "Предотвратете екранни снимки и запис на екрана",
706 + "disable_buy": "Деактивирайте действието за покупка",
707 + "disable_sell": "Деактивирайте действието за продажба"
708 }
res/values/strings_cs.arb
+3 -1
@@ -702,5 +702,7 @@
702 "error_text_input_below_minimum_limit" : "Částka je menší než minimální hodnota",
703 "error_text_input_above_maximum_limit" : "Částka je větší než maximální hodnota",
704 "show_market_place": "Zobrazit trh",
705 - "prevent_screenshots": "Zabránit vytváření snímků obrazovky a nahrávání obrazovky"
705 + "prevent_screenshots": "Zabránit vytváření snímků obrazovky a nahrávání obrazovky",
706 + "disable_buy": "Zakázat akci nákupu",
707 + "disable_sell": "Zakázat akci prodeje"
708 }
res/values/strings_de.arb
+3 -1
@@ -708,5 +708,7 @@
708 "error_text_input_below_minimum_limit" : "Menge ist unter dem Minimum",
709 "error_text_input_above_maximum_limit" : "Menge ist über dem Maximum",
710 "show_market_place": "Marktplatz anzeigen",
711 - "prevent_screenshots": "Verhindern Sie Screenshots und Bildschirmaufzeichnungen"
711 + "prevent_screenshots": "Verhindern Sie Screenshots und Bildschirmaufzeichnungen",
712 + "disable_buy": "Kaufaktion deaktivieren",
713 + "disable_sell": "Verkaufsaktion deaktivieren"
714 }
res/values/strings_en.arb
+3 -1
@@ -708,5 +708,7 @@
708 "error_text_input_below_minimum_limit" : "Amount is less than the minimum",
709 "error_text_input_above_maximum_limit" : "Amount is more than the maximum",
710 "show_market_place" :"Show Marketplace",
711 - "prevent_screenshots": "Prevent screenshots and screen recording"
711 + "prevent_screenshots": "Prevent screenshots and screen recording",
712 + "disable_buy": "Disable buy action",
713 + "disable_sell": "Disable sell action"
714 }
res/values/strings_es.arb
+3 -1
@@ -708,5 +708,7 @@
708 "error_text_input_below_minimum_limit" : "La cantidad es menos que mínima",
709 "error_text_input_above_maximum_limit" : "La cantidad es más que el máximo",
710 "show_market_place": "Mostrar mercado",
711 - "prevent_screenshots": "Evitar capturas de pantalla y grabación de pantalla"
711 + "prevent_screenshots": "Evitar capturas de pantalla y grabación de pantalla",
712 + "disable_buy": "Desactivar acción de compra",
713 + "disable_sell": "Desactivar acción de venta"
714 }
res/values/strings_fr.arb
+3 -1
@@ -708,5 +708,7 @@
708 "error_text_input_below_minimum_limit" : "Le montant est inférieur au minimum",
709 "error_text_input_above_maximum_limit" : "Le montant est supérieur au maximum",
710 "show_market_place" :"Afficher la place de marché",
711 - "prevent_screenshots": "Empêcher les captures d'écran et l'enregistrement d'écran"
711 + "prevent_screenshots": "Empêcher les captures d'écran et l'enregistrement d'écran",
712 + "disable_buy": "Désactiver l'action d'achat",
713 + "disable_sell": "Désactiver l'action de vente"
714 }
res/values/strings_hi.arb
+3 -1
@@ -708,5 +708,7 @@
708 "error_text_input_below_minimum_limit" : "राशि न्यूनतम से कम है",
709 "error_text_input_above_maximum_limit" : "राशि अधिकतम से अधिक है",
710 "show_market_place":"बाज़ार दिखाएँ",
711 - "prevent_screenshots": "स्क्रीनशॉट और स्क्रीन रिकॉर्डिंग रोकें"
711 + "prevent_screenshots": "स्क्रीनशॉट और स्क्रीन रिकॉर्डिंग रोकें",
712 + "disable_buy": "खरीद कार्रवाई अक्षम करें",
713 + "disable_sell": "बेचने की कार्रवाई अक्षम करें"
714 }
res/values/strings_hr.arb
+3 -1
@@ -708,5 +708,7 @@
708 "error_text_input_below_minimum_limit" : "Iznos je manji od minimalnog",
709 "error_text_input_above_maximum_limit" : "Iznos je veći od maskimalnog",
710 "show_market_place" : "Prikaži tržište",
711 - "prevent_screenshots": "Spriječite snimke zaslona i snimanje zaslona"
711 + "prevent_screenshots": "Spriječite snimke zaslona i snimanje zaslona",
712 + "disable_buy": "Onemogući kupnju",
713 + "disable_sell": "Onemogući akciju prodaje"
714 }
res/values/strings_id.arb
+3 -1
@@ -684,5 +684,7 @@
684 "error_text_input_below_minimum_limit" : "Jumlah kurang dari minimal",
685 "error_text_input_above_maximum_limit" : "Jumlah lebih dari maksimal",
686 "show_market_place": "Tampilkan Pasar",
687 - "prevent_screenshots": "Cegah tangkapan layar dan perekaman layar"
687 + "prevent_screenshots": "Cegah tangkapan layar dan perekaman layar",
688 + "disable_buy": "Nonaktifkan tindakan beli",
689 + "disable_sell": "Nonaktifkan aksi jual"
690 }
res/values/strings_it.arb
+3 -1
@@ -708,5 +708,7 @@
708 "error_text_input_below_minimum_limit" : "L'ammontare è inferiore al minimo",
709 "error_text_input_above_maximum_limit" : "L'ammontare è superiore al massimo",
710 "show_market_place":"Mostra mercato",
711 - "prevent_screenshots": "Impedisci screenshot e registrazione dello schermo"
711 + "prevent_screenshots": "Impedisci screenshot e registrazione dello schermo",
712 + "disable_buy": "Disabilita l'azione di acquisto",
713 + "disable_sell": "Disabilita l'azione di vendita"
714 }
res/values/strings_ja.arb
+3 -1
@@ -708,5 +708,7 @@
708 "error_text_input_below_minimum_limit" : "金額は最小額より少ない",
709 "error_text_input_above_maximum_limit" : "金額は最大値を超えています",
710 "show_market_place":"マーケットプレイスを表示",
711 - "prevent_screenshots": "スクリーンショットと画面録画を防止する"
711 + "prevent_screenshots": "スクリーンショットと画面録画を防止する",
712 + "disable_buy": "購入アクションを無効にする",
713 + "disable_sell": "販売アクションを無効にする"
714 }
res/values/strings_ko.arb
+3 -1
@@ -708,5 +708,7 @@
708 "error_text_input_below_minimum_limit" : "금액이 최소보다 적습니다.",
709 "error_text_input_above_maximum_limit" : "금액이 최대 값보다 많습니다.",
710 "show_market_place":"마켓플레이스 표시",
711 - "prevent_screenshots": "스크린샷 및 화면 녹화 방지"
711 + "prevent_screenshots": "스크린샷 및 화면 녹화 방지",
712 + "disable_buy": "구매 행동 비활성화",
713 + "disable_sell": "판매 조치 비활성화"
714 }
res/values/strings_my.arb
+3 -1
@@ -708,5 +708,7 @@
708 "error_text_input_below_minimum_limit" : "ပမာဏသည် အနိမ့်ဆုံးထက်နည်းသည်။",
709 "error_text_input_above_maximum_limit" : "ပမာဏသည် အများဆုံးထက် ပိုများသည်။",
710 "show_market_place":"စျေးကွက်ကိုပြသပါ။",
711 - "prevent_screenshots": "ဖန်သားပြင်ဓာတ်ပုံများနှင့် မျက်နှာပြင်ရိုက်ကူးခြင်းကို တားဆီးပါ။"
711 + "prevent_screenshots": "ဖန်သားပြင်ဓာတ်ပုံများနှင့် မျက်နှာပြင်ရိုက်ကူးခြင်းကို တားဆီးပါ။",
712 + "disable_buy": "ဝယ်ယူမှု လုပ်ဆောင်ချက်ကို ပိတ်ပါ။",
713 + "disable_sell": "ရောင်းချခြင်းလုပ်ဆောင်ချက်ကို ပိတ်ပါ။"
714 }
res/values/strings_nl.arb
+3 -1
@@ -708,5 +708,7 @@
708 "error_text_input_below_minimum_limit" : "Bedrag is minder dan minimaal",
709 "error_text_input_above_maximum_limit" : "Bedrag is meer dan maximaal",
710 "show_market_place":"Toon Marktplaats",
711 - "prevent_screenshots": "Voorkom screenshots en schermopname"
711 + "prevent_screenshots": "Voorkom screenshots en schermopname",
712 + "disable_buy": "Koopactie uitschakelen",
713 + "disable_sell": "Verkoopactie uitschakelen"
714 }
res/values/strings_pl.arb
+3 -1
@@ -708,5 +708,7 @@
708 "error_text_input_below_minimum_limit" : "Kwota jest mniejsza niż minimalna",
709 "error_text_input_above_maximum_limit" : "Kwota jest większa niż maksymalna",
710 "show_market_place" : "Pokaż rynek",
711 - "prevent_screenshots": "Zapobiegaj zrzutom ekranu i nagrywaniu ekranu"
711 + "prevent_screenshots": "Zapobiegaj zrzutom ekranu i nagrywaniu ekranu",
712 + "disable_buy": "Wyłącz akcję kupna",
713 + "disable_sell": "Wyłącz akcję sprzedaży"
714 }
res/values/strings_pt.arb
+3 -1
@@ -707,5 +707,7 @@
707 "error_text_input_below_minimum_limit" : "O valor é menor que o mínimo",
708 "error_text_input_above_maximum_limit" : "O valor é superior ao máximo",
709 "show_market_place":"Mostrar mercado",
710 - "prevent_screenshots": "Evite capturas de tela e gravação de tela"
710 + "prevent_screenshots": "Evite capturas de tela e gravação de tela",
711 + "disable_buy": "Desativar ação de compra",
712 + "disable_sell": "Desativar ação de venda"
713 }
res/values/strings_ru.arb
+3 -1
@@ -708,5 +708,7 @@
708 "error_text_input_below_minimum_limit" : "Сумма меньше минимальной",
709 "error_text_input_above_maximum_limit" : "Сумма больше максимальной",
710 "show_market_place":"Показать торговую площадку",
711 - "prevent_screenshots": "Предотвратить скриншоты и запись экрана"
711 + "prevent_screenshots": "Предотвратить скриншоты и запись экрана",
712 + "disable_buy": "Отключить действие покупки",
713 + "disable_sell": "Отключить действие продажи"
714 }
res/values/strings_th.arb
+3 -1
@@ -706,5 +706,7 @@
706 "error_text_input_below_minimum_limit" : "จำนวนเงินน้อยกว่าขั้นต่ำ",
707 "error_text_input_above_maximum_limit" : "จำนวนเงินสูงกว่าค่าสูงสุด",
708 "show_market_place":"แสดงตลาดกลาง",
709 - "prevent_screenshots": "ป้องกันภาพหน้าจอและการบันทึกหน้าจอ"
709 + "prevent_screenshots": "ป้องกันภาพหน้าจอและการบันทึกหน้าจอ",
710 + "disable_buy": "ปิดการใช้งานการซื้อ",
711 + "disable_sell": "ปิดการใช้งานการขาย"
712 }
res/values/strings_tr.arb
+3 -1
@@ -708,5 +708,7 @@
708 "error_text_input_below_minimum_limit" : "Miktar minimumdan daha azdır",
709 "error_text_input_above_maximum_limit" : "Miktar maksimumdan daha fazla",
710 "show_market_place":"Pazar Yerini Göster",
711 - "prevent_screenshots": "Ekran görüntülerini ve ekran kaydını önleyin"
711 + "prevent_screenshots": "Ekran görüntülerini ve ekran kaydını önleyin",
712 + "disable_buy": "Satın alma işlemini devre dışı bırak",
713 + "disable_sell": "Satış işlemini devre dışı bırak"
714 }
res/values/strings_uk.arb
+3 -1
@@ -707,5 +707,7 @@
707 "error_text_input_below_minimum_limit" : "Сума менша мінімальної",
708 "error_text_input_above_maximum_limit" : "Сума більше максимальної",
709 "show_market_place":"Відображати маркетплейс",
710 - "prevent_screenshots": "Запобігати знімкам екрана та запису екрана"
710 + "prevent_screenshots": "Запобігати знімкам екрана та запису екрана",
711 + "disable_buy": "Вимкнути дію покупки",
712 + "disable_sell": "Вимкнути дію продажу"
713 }
res/values/strings_ur.arb
+3 -1
@@ -703,5 +703,7 @@
703 "error_text_input_below_minimum_limit" : "رقم کم از کم سے کم ہے۔",
704 "error_text_input_above_maximum_limit" : "رقم زیادہ سے زیادہ سے زیادہ ہے۔",
705 "show_market_place":"بازار دکھائیں۔",
706 - "prevent_screenshots": "اسکرین شاٹس اور اسکرین ریکارڈنگ کو روکیں۔"
706 + "prevent_screenshots": "اسکرین شاٹس اور اسکرین ریکارڈنگ کو روکیں۔",
707 + "disable_buy": "خرید ایکشن کو غیر فعال کریں۔",
708 + "disable_sell": "فروخت کی کارروائی کو غیر فعال کریں۔"
709 }
res/values/strings_zh.arb
+3 -1
@@ -707,5 +707,7 @@
707 "error_text_input_below_minimum_limit" : "金额小于最小值",
708 "error_text_input_above_maximum_limit" : "金额大于最大值",
709 "show_market_place" :"显示市场",
710 - "prevent_screenshots": "防止截屏和录屏"
710 + "prevent_screenshots": "防止截屏和录屏",
711 + "disable_buy": "禁用购买操作",
712 + "disable_sell": "禁用卖出操作"
713 }