tor updates

This commit is contained in:
Matthew Fosse 2024-01-02 13:33:48 -05:00
parent e93891682b
commit c8dcf49503
33 changed files with 195 additions and 92 deletions

View file

@ -297,7 +297,7 @@ Future<void> setup({
: ThemeList.darkTheme,
);
if (settingsStore.shouldStartTorOnLaunch) {
if (DeviceInfo.instance.isMobile && settingsStore.shouldStartTorOnLaunch) {
Tor.instance.enable();
Tor.instance.start();
}

View file

@ -1,3 +1,4 @@
import 'package:cake_wallet/generated/i18n.dart';
import 'package:flutter/material.dart';
import 'package:cake_wallet/palette.dart';
@ -8,11 +9,20 @@ class NodeIndicator extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
width: 12.0,
height: 12.0,
decoration: BoxDecoration(
shape: BoxShape.circle, color: isLive ? Palette.green : Palette.red),
return Row(
children: [
Container(
width: 12.0,
height: 12.0,
decoration:
BoxDecoration(shape: BoxShape.circle, color: isLive ? Palette.green : Palette.red),
),
const SizedBox(width: 8.0),
Text(
isLive ? S.current.connected : S.current.disconnected,
style: TextStyle(fontSize: 14.0),
)
],
);
}
}

View file

@ -2,6 +2,7 @@ import 'package:cake_wallet/reactions/wallet_connect.dart';
import 'package:cake_wallet/src/screens/settings/widgets/settings_cell_with_arrow.dart';
import 'package:cake_wallet/src/screens/settings/widgets/settings_picker_cell.dart';
import 'package:cake_wallet/src/screens/settings/widgets/settings_switcher_cell.dart';
import 'package:cake_wallet/src/screens/settings/widgets/settings_tor_status.dart';
import 'package:cake_wallet/src/screens/settings/widgets/wallet_connect_button.dart';
import 'package:cake_wallet/utils/device_info.dart';
import 'package:cake_wallet/utils/feature_flag.dart';
@ -92,22 +93,29 @@ class ConnectionSyncPage extends BasePage {
],
if (FeatureFlag.isInAppTorEnabled) ...[
Container(
color: Colors.amber, // TODO: CW-519 change
padding: EdgeInsets.symmetric(horizontal: 24, vertical: 10),
padding: EdgeInsets.symmetric(horizontal: 12, vertical: 10),
child: Column(children: [
Observer(builder: (context) {
return SettingsPickerCell<TorConnection>(
title: S.current.background_sync_mode,
title: S.current.tor_connection,
items: TorConnection.all,
displayItem: (TorConnection torConnection) => torConnection.name,
selectedItem: dashboardViewModel.torConnection,
onItemSelected: dashboardViewModel.setTorConnection,
decoration: BoxDecoration(
borderRadius: BorderRadius.only(topLeft: Radius.circular(25), topRight: Radius.circular(25)),
color: const Color.fromARGB(255, 236, 244, 255),
),
);
}),
SettingsCellWithArrow(
title: S.current.tor_connection,
handler: (context) => Navigator.of(context).pushNamed(Routes.torPage),
TorListRow(
decoration: BoxDecoration(
borderRadius: BorderRadius.only(bottomLeft: Radius.circular(25), bottomRight: Radius.circular(25)),
color: const Color.fromARGB(255, 236, 244, 255),
),
title: S.current.tor_status,
isSelected: false,
onTap: (context) {},
),
]),
),

View file

@ -47,12 +47,6 @@ class PrivacyPage extends BasePage {
_privacySettingsViewModel.setExchangeApiMode(mode),
),
),
SettingsSwitcherCell(
title: S.current.start_tor_on_launch,
value: _privacySettingsViewModel.shouldStartTorOnLaunch,
onValueChange: (BuildContext _, bool value) {
_privacySettingsViewModel.setShouldStartTorOnLaunch(value);
}),
SettingsSwitcherCell(
title: S.current.settings_save_recipient_address,
value: _privacySettingsViewModel.shouldSaveRecipientAddress,

View file

@ -14,10 +14,12 @@ class SettingsPickerCell<ItemType> extends StandardListRow {
this.searchHintText,
this.isGridView = false,
this.matchingCriteria,
this.onItemSelected})
this.onItemSelected,
this.decoration})
: super(
title: title,
isSelected: false,
decoration: decoration,
onTap: (BuildContext context) async {
final selectedAtIndex = items.indexOf(selectedItem);
@ -47,6 +49,7 @@ class SettingsPickerCell<ItemType> extends StandardListRow {
final String? searchHintText;
final bool isGridView;
final bool Function(ItemType, String)? matchingCriteria;
final BoxDecoration? decoration;
@override
Widget buildTrailing(BuildContext context) {

View file

@ -5,51 +5,44 @@ import 'package:cake_wallet/themes/extensions/receive_page_theme.dart';
import 'package:cw_core/node.dart';
import 'package:flutter/material.dart';
import 'package:cake_wallet/themes/extensions/filter_theme.dart';
import 'package:tor/tor.dart';
class NodeListRow extends StandardListRow {
NodeListRow(
class TorListRow extends StandardListRow {
TorListRow(
{required String title,
required this.node,
required void Function(BuildContext context) onTap,
required bool isSelected,
required this.isPow})
: super(title: title, onTap: onTap, isSelected: isSelected);
BoxDecoration? decoration})
: super(title: title, onTap: onTap, isSelected: isSelected, decoration: decoration);
final Node node;
final bool isPow;
@override
Widget buildLeading(BuildContext context) {
return FutureBuilder(
future: node.requestNode(),
builder: (context, snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.done:
return NodeIndicator(isLive: (snapshot.data as bool?) ?? false);
default:
return NodeIndicator(isLive: false);
}
});
}
@override
Widget buildTrailing(BuildContext context) {
return GestureDetector(
onTap: () => Navigator.of(context).pushNamed(isPow ? Routes.newPowNode : Routes.newNode,
arguments: {'editingNode': node, 'isSelected': isSelected}),
child: Container(
padding: EdgeInsets.all(10),
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Theme.of(context)
.extension<ReceivePageTheme>()!
.iconsBackgroundColor),
child: Icon(Icons.edit,
size: 14,
color: Theme.of(context)
.extension<ReceivePageTheme>()!
.iconsColor)));
// return FutureBuilder(
// future: node.requestNode(),
// builder: (context, snapshot) {
// switch (snapshot.connectionState) {
// case ConnectionState.done:
// return NodeIndicator(isLive: (snapshot.data as bool?) ?? false);
// default:
// return NodeIndicator(isLive: false);
// }
// });
return NodeIndicator(isLive: Tor.instance.started);
}
// @override
// Widget buildTrailing(BuildContext context) {
// return GestureDetector(
// onTap: () {},
// child: Container(
// padding: EdgeInsets.all(10),
// decoration: BoxDecoration(
// shape: BoxShape.circle,
// color: Theme.of(context).extension<ReceivePageTheme>()!.iconsBackgroundColor),
// child: Icon(Icons.edit,
// size: 14, color: Theme.of(context).extension<ReceivePageTheme>()!.iconsColor)));
// }
}
class NodeHeaderListRow extends StandardListRow {
@ -61,7 +54,7 @@ class NodeHeaderListRow extends StandardListRow {
return SizedBox(
width: 20,
child: Icon(Icons.add,
color: Theme.of(context).extension<FilterTheme>()!.titlesColor,size: 24.0),
color: Theme.of(context).extension<FilterTheme>()!.titlesColor, size: 24.0),
);
}
}

View file

@ -39,6 +39,7 @@ import 'package:cake_wallet/monero/monero.dart';
import 'package:cake_wallet/entities/action_list_display_mode.dart';
import 'package:cake_wallet/entities/fiat_api_mode.dart';
import 'package:cw_core/set_app_secure_native.dart';
import 'package:tor/tor.dart';
part 'settings_store.g.dart';
class SettingsStore = SettingsStoreBase with _$SettingsStore;
@ -192,8 +193,9 @@ abstract class SettingsStoreBase with Store {
final key = 'buyProvider_${walletType.toString()}';
final providerId = sharedPreferences.getString(key);
if (providerId != null) {
defaultBuyProviders[walletType] = ProviderType.values
.firstWhere((provider) => provider.id == providerId, orElse: () => ProviderType.askEachTime);
defaultBuyProviders[walletType] = ProviderType.values.firstWhere(
(provider) => provider.id == providerId,
orElse: () => ProviderType.askEachTime);
} else {
defaultBuyProviders[walletType] = ProviderType.askEachTime;
}
@ -203,8 +205,9 @@ abstract class SettingsStoreBase with Store {
final key = 'sellProvider_${walletType.toString()}';
final providerId = sharedPreferences.getString(key);
if (providerId != null) {
defaultSellProviders[walletType] = ProviderType.values
.firstWhere((provider) => provider.id == providerId, orElse: () => ProviderType.askEachTime);
defaultSellProviders[walletType] = ProviderType.values.firstWhere(
(provider) => provider.id == providerId,
orElse: () => ProviderType.askEachTime);
} else {
defaultSellProviders[walletType] = ProviderType.askEachTime;
}
@ -314,10 +317,8 @@ abstract class SettingsStoreBase with Store {
(FiatApiMode mode) =>
sharedPreferences.setInt(PreferencesKey.currentFiatApiModeKey, mode.serialize()));
reaction(
(_) => shouldStartTorOnLaunch,
(bool value) =>
sharedPreferences.setBool(PreferencesKey.shouldStartTorOnLaunch, value));
reaction((_) => shouldStartTorOnLaunch,
(bool value) => sharedPreferences.setBool(PreferencesKey.shouldStartTorOnLaunch, value));
reaction((_) => currentTheme,
(ThemeBase theme) => sharedPreferences.setInt(PreferencesKey.currentTheme, theme.raw));
@ -435,6 +436,21 @@ abstract class SettingsStoreBase with Store {
_backgroundTasks.registerSyncTask(changeExisting: true);
});
reaction((_) => currentTorConnection, (TorConnection torConnection) async {
sharedPreferences.setInt(PreferencesKey.torConnectionKey, torConnection.type.index);
if (torConnection.type == TorConnectionType.enabled) {
// Start the proxy
await Tor.init();
await Tor.instance.start();
shouldStartTorOnLaunch = true;
} else {
Tor.instance.disable();
shouldStartTorOnLaunch = false;
}
});
reaction(
(_) => exchangeStatus,
(ExchangeApiMode mode) =>
@ -786,7 +802,8 @@ abstract class SettingsStoreBase with Store {
final currentFiatApiMode = FiatApiMode.deserialize(
raw: sharedPreferences.getInt(PreferencesKey.currentFiatApiModeKey) ??
FiatApiMode.enabled.raw);
final shouldStartTorOnLaunch = sharedPreferences.getBool(PreferencesKey.shouldStartTorOnLaunch) ?? false;
final shouldStartTorOnLaunch =
sharedPreferences.getBool(PreferencesKey.shouldStartTorOnLaunch) ?? false;
final allowBiometricalAuthentication =
sharedPreferences.getBool(PreferencesKey.allowBiometricalAuthenticationKey) ?? false;
final selectedCake2FAPreset = Cake2FAPresetsOptions.deserialize(

View file

@ -760,5 +760,8 @@
"select_sell_provider_notice": ".ﻖﻴﺒﻄﺘﻟﺍ ﺕﺍﺩﺍﺪﻋﺇ ﻲﻓ ﻚﺑ ﺹﺎﺨﻟﺍ ﻲﺿﺍﺮﺘﻓﻻﺍ ﻊﻴﺒﻟﺍ ﺩﻭﺰﻣ ﻦﻴﻴﻌﺗ ﻖﻳﺮﻃ ﻦﻋ ﺔﺷﺎﺸﻟﺍ ﻩﺬﻫ ﻲﻄﺨﺗ",
"custom_drag": "مخصص (عقد وسحب)",
"switchToEVMCompatibleWallet": " (Ethereum، Polygon) ﻯﺮﺧﺃ ﺓﺮﻣ ﺔﻟﻭﺎﺤﻤﻟﺍﻭ EVM ﻊﻣ ﺔﻘﻓﺍﻮﺘﻣ ﺔﻈﻔﺤﻣ ﻰﻟﺇ ﻞﻳﺪﺒﺘﻟﺍ ﻰﺟﺮﻳ",
"start_tor_on_launch": "ابدأ في الإطلاق"
"start_tor_on_launch": "ابدأ في الإطلاق",
"tor_status": "وضع تور",
"connected": "متصل",
"disconnected": "انقطع الاتصال"
}

View file

@ -756,5 +756,8 @@
"select_sell_provider_notice": "Изберете доставчик на продажба по-горе. Можете да пропуснете този екран, като зададете своя доставчик на продажба по подразбиране в настройките на приложението.",
"custom_drag": "Персонализиране (задръжте и плъзнете)",
"switchToEVMCompatibleWallet": "Моля, превключете към портфейл, съвместим с EVM, и опитайте отново (Ethereum, Polygon)",
"start_tor_on_launch": "Стартирайте Tor при стартиране"
"start_tor_on_launch": "Стартирайте Tor при стартиране",
"tor_status": "TOR статус",
"connected": "Свързани",
"disconnected": "Изключен"
}

View file

@ -756,5 +756,8 @@
"select_sell_provider_notice": "Výše vyberte poskytovatele prodeje. Tuto obrazovku můžete přeskočit nastavením výchozího poskytovatele prodeje v nastavení aplikace.",
"custom_drag": "Custom (Hold and Drag)",
"switchToEVMCompatibleWallet": "Přepněte na peněženku kompatibilní s EVM a zkuste to znovu (Ethereum, Polygon)",
"start_tor_on_launch": "Začněte tor při spuštění"
"start_tor_on_launch": "Začněte tor při spuštění",
"tor_status": "TOR status",
"connected": "Připojeno",
"disconnected": "Odpojené"
}

View file

@ -764,5 +764,8 @@
"select_sell_provider_notice": "Wählen Sie oben einen Verkaufsanbieter aus. Sie können diesen Bildschirm überspringen, indem Sie in den App-Einstellungen Ihren Standard-Verkaufsanbieter festlegen.",
"custom_drag": "Custom (Hold and Drag)",
"switchToEVMCompatibleWallet": "Bitte wechseln Sie zu einem EVM-kompatiblen Wallet und versuchen Sie es erneut (Ethereum, Polygon)",
"start_tor_on_launch": "Starten Sie den Start"
"start_tor_on_launch": "Starten Sie den Start",
"tor_status": "Torstatus",
"connected": "In Verbindung gebracht",
"disconnected": "Getrennt"
}

View file

@ -765,5 +765,8 @@
"select_sell_provider_notice": "Select a sell provider above. You can skip this screen by setting your default sell provider in app settings.",
"custom_drag": "Custom (Hold and Drag)",
"switchToEVMCompatibleWallet": "Please switch to an EVM compatible wallet and try again (Ethereum, Polygon)",
"start_tor_on_launch": "Start Tor on launch"
"start_tor_on_launch": "Start Tor on launch",
"tor_status": "Tor status",
"connected": "Connected",
"disconnected": "Disconnected"
}

View file

@ -764,5 +764,8 @@
"select_sell_provider_notice": "Seleccione un proveedor de venta arriba. Puede omitir esta pantalla configurando su proveedor de venta predeterminado en la configuración de la aplicación.",
"custom_drag": "Custom (mantenía y arrastre)",
"switchToEVMCompatibleWallet": "Cambie a una billetera compatible con EVM e inténtelo nuevamente (Ethereum, Polygon)",
"start_tor_on_launch": "Iniciar tor en el lanzamiento"
"start_tor_on_launch": "Iniciar tor en el lanzamiento",
"tor_status": "Estado de Tor",
"connected": "Conectado",
"disconnected": "Desconectado"
}

View file

@ -764,5 +764,8 @@
"select_sell_provider_notice": "Sélectionnez un fournisseur de vente ci-dessus. Vous pouvez ignorer cet écran en définissant votre fournisseur de vente par défaut dans les paramètres de l'application.",
"custom_drag": "Custom (maintenir et traîner)",
"switchToEVMCompatibleWallet": "Veuillez passer à un portefeuille compatible EVM et réessayer (Ethereum, Polygon)",
"start_tor_on_launch": "Démarrez Tor sur le lancement"
"start_tor_on_launch": "Démarrez Tor sur le lancement",
"tor_status": "Statut",
"connected": "Connecté",
"disconnected": "Débranché"
}

View file

@ -746,5 +746,8 @@
"select_sell_provider_notice": "Zaɓi mai bada siyarwa a sama. Kuna iya tsallake wannan allon ta saita mai bada siyar da ku a cikin saitunan app.",
"custom_drag": "Al'ada (riƙe da ja)",
"switchToEVMCompatibleWallet": "Da fatan za a canza zuwa walat ɗin EVM mai jituwa kuma a sake gwadawa (Ethereum, Polygon)",
"start_tor_on_launch": "Fara tor a kan shimfiɗa"
"start_tor_on_launch": "Fara tor a kan shimfiɗa",
"tor_status": "State State",
"connected": "Wanda aka haɗa",
"disconnected": "Katse"
}

View file

@ -764,5 +764,8 @@
"select_sell_provider_notice": "ऊपर एक विक्रय प्रदाता का चयन करें। आप ऐप सेटिंग में अपना डिफ़ॉल्ट विक्रय प्रदाता सेट करके इस स्क्रीन को छोड़ सकते हैं।",
"custom_drag": "कस्टम (पकड़ और खींचें)",
"switchToEVMCompatibleWallet": "कृपया ईवीएम संगत वॉलेट पर स्विच करें और पुनः प्रयास करें (एथेरियम, पॉलीगॉन)",
"start_tor_on_launch": "लॉन्च पर टोर शुरू करें"
"start_tor_on_launch": "लॉन्च पर टोर शुरू करें",
"tor_status": "टोर की स्थिति",
"connected": "जुड़े हुए",
"disconnected": "डिस्कनेक्ट किया गया"
}

View file

@ -762,5 +762,8 @@
"select_sell_provider_notice": "Gore odaberite pružatelja usluga prodaje. Ovaj zaslon možete preskočiti postavljanjem zadanog pružatelja usluga prodaje u postavkama aplikacije.",
"custom_drag": "Prilagođeni (držite i povucite)",
"switchToEVMCompatibleWallet": "Prijeđite na novčanik kompatibilan s EVM-om i pokušajte ponovno (Ethereum, Polygon)",
"start_tor_on_launch": "Započnite s lansiranjem"
"start_tor_on_launch": "Započnite s lansiranjem",
"tor_status": "Status tor",
"connected": "Povezan",
"disconnected": "Isključen"
}

View file

@ -752,5 +752,8 @@
"select_sell_provider_notice": "Pilih penyedia jual di atas. Anda dapat melewati layar ini dengan mengatur penyedia penjualan default Anda di pengaturan aplikasi.",
"custom_drag": "Khusus (tahan dan seret)",
"switchToEVMCompatibleWallet": "Silakan beralih ke dompet yang kompatibel dengan EVM dan coba lagi (Ethereum, Polygon)",
"start_tor_on_launch": "Mulailah untuk peluncuran"
"start_tor_on_launch": "Mulailah untuk peluncuran",
"tor_status": "Status Tor",
"connected": "Terhubung",
"disconnected": "Terputus"
}

View file

@ -764,5 +764,8 @@
"select_sell_provider_notice": "Seleziona un fornitore di vendita sopra. Puoi saltare questa schermata impostando il tuo fornitore di vendita predefinito nelle impostazioni dell'app.",
"custom_drag": "Custom (Hold and Drag)",
"switchToEVMCompatibleWallet": "Passa a un portafoglio compatibile con EVM e riprova (Ethereum, Polygon)",
"start_tor_on_launch": "Inizia Tor al lancio"
"start_tor_on_launch": "Inizia Tor al lancio",
"tor_status": "Stato di tor",
"connected": "Collegato",
"disconnected": "Disconnesso"
}

View file

@ -764,5 +764,8 @@
"select_sell_provider_notice": "上記の販売プロバイダーを選択してください。アプリ設定でデフォルトの販売プロバイダーを設定することで、この画面をスキップできます。",
"custom_drag": "カスタム(ホールドとドラッグ)",
"switchToEVMCompatibleWallet": "EVM 互換のウォレットに切り替えて再試行してください (イーサリアム、ポリゴン)",
"start_tor_on_launch": "起動時にTORを開始します"
"start_tor_on_launch": "起動時にTORを開始します",
"tor_status": "TORステータス",
"connected": "接続",
"disconnected": "切断された"
}

View file

@ -762,5 +762,8 @@
"select_sell_provider_notice": "위에서 판매 공급자를 선택하세요. 앱 설정에서 기본 판매 공급자를 설정하면 이 화면을 건너뛸 수 있습니다.",
"custom_drag": "사용자 정의 (홀드 앤 드래그)",
"switchToEVMCompatibleWallet": "EVM 호환 지갑으로 전환 후 다시 시도해 주세요. (이더리움, 폴리곤)",
"start_tor_on_launch": "출시시 TOR를 시작하십시오"
"start_tor_on_launch": "출시시 TOR를 시작하십시오",
"tor_status": "Tor 상태",
"connected": "연결",
"disconnected": "연결이 끊어졌습니다"
}

View file

@ -762,5 +762,8 @@
"select_sell_provider_notice": "အထက်ဖော်ပြပါ အရောင်းဝန်ဆောင်မှုပေးသူကို ရွေးပါ။ အက်ပ်ဆက်တင်များတွင် သင်၏မူလရောင်းချပေးသူကို သတ်မှတ်ခြင်းဖြင့် ဤစခရင်ကို ကျော်နိုင်သည်။",
"custom_drag": "စိတ်ကြိုက် (Drag)",
"switchToEVMCompatibleWallet": "ကျေးဇူးပြု၍ EVM တွဲဖက်သုံးနိုင်သော ပိုက်ဆံအိတ်သို့ ပြောင်းပြီး ထပ်စမ်းကြည့်ပါ (Ethereum၊ Polygon)",
"start_tor_on_launch": "Tor ကိုဖွင့်ပါ"
"start_tor_on_launch": "Tor ကိုဖွင့်ပါ",
"tor_status": "Tor Status",
"connected": "ချိတ်ဆက်ထားသော",
"disconnected": "ချို့ယွင်းချက်"
}

View file

@ -764,5 +764,8 @@
"select_sell_provider_notice": "Selecteer hierboven een verkoopaanbieder. U kunt dit scherm overslaan door uw standaardverkoopprovider in te stellen in de app-instellingen.",
"custom_drag": "Custom (vasthouden en slepen)",
"switchToEVMCompatibleWallet": "Schakel over naar een EVM-compatibele portemonnee en probeer het opnieuw (Ethereum, Polygon)",
"start_tor_on_launch": "Begin met de lancering"
"start_tor_on_launch": "Begin met de lancering",
"tor_status": "Tor Status",
"connected": "Verbonden",
"disconnected": "Losgekoppeld"
}

View file

@ -764,5 +764,8 @@
"select_sell_provider_notice": "Wybierz dostawcę sprzedaży powyżej. Możesz pominąć ten ekran, ustawiając domyślnego dostawcę sprzedaży w ustawieniach aplikacji.",
"custom_drag": "Niestandardowe (trzymaj i przeciągnij)",
"switchToEVMCompatibleWallet": "Przejdź na portfel zgodny z EVM i spróbuj ponownie (Ethereum, Polygon)",
"start_tor_on_launch": "Rozpocznij TOR OD LATH"
"start_tor_on_launch": "Rozpocznij TOR OD LATH",
"tor_status": "Status TOR",
"connected": "Połączony",
"disconnected": "Bezładny"
}

View file

@ -763,5 +763,8 @@
"select_sell_provider_notice": "Selecione um fornecedor de venda acima. Você pode pular esta tela definindo seu provedor de venda padrão nas configurações do aplicativo.",
"custom_drag": "Personalizado (segure e arraste)",
"switchToEVMCompatibleWallet": "Mude para uma carteira compatível com EVM e tente novamente (Ethereum, Polygon)",
"start_tor_on_launch": "Inicie o TOR no lançamento"
"start_tor_on_launch": "Inicie o TOR no lançamento",
"tor_status": "Status de tor",
"connected": "Conectado",
"disconnected": "Desconectado"
}

View file

@ -764,5 +764,8 @@
"select_sell_provider_notice": "Выберите поставщика услуг продажи выше. Вы можете пропустить этот экран, установив поставщика услуг продаж по умолчанию в настройках приложения.",
"custom_drag": "Пользователь (удерживайте и перетаскивайте)",
"switchToEVMCompatibleWallet": "Пожалуйста, переключитесь на кошелек, совместимый с EVM, и повторите попытку (Ethereum, Polygon).",
"start_tor_on_launch": "Запустить"
"start_tor_on_launch": "Запустить",
"tor_status": "ТОР Статус",
"connected": "Связанный",
"disconnected": "Отключен"
}

View file

@ -762,5 +762,8 @@
"select_sell_provider_notice": "เลือกผู้ให้บริการการขายด้านบน คุณสามารถข้ามหน้าจอนี้ได้โดยการตั้งค่าผู้ให้บริการการขายเริ่มต้นในการตั้งค่าแอป",
"custom_drag": "กำหนดเอง (ค้างและลาก)",
"switchToEVMCompatibleWallet": "โปรดเปลี่ยนไปใช้กระเป๋าเงินที่รองรับ EVM แล้วลองอีกครั้ง (Ethereum, Polygon)",
"start_tor_on_launch": "เริ่มต้นเมื่อเปิดตัว"
"start_tor_on_launch": "เริ่มต้นเมื่อเปิดตัว",
"tor_status": "สถานะ tor",
"connected": "ซึ่งเชื่อมต่อกัน",
"disconnected": "ตัดการเชื่อมต่อ"
}

View file

@ -758,5 +758,8 @@
"select_sell_provider_notice": "Pumili ng provider ng nagbebenta sa itaas. Maaari mong laktawan ang screen na ito sa pamamagitan ng pagtatakda ng iyong default na sell provider sa mga setting ng app.",
"custom_drag": "Pasadyang (hawakan at i -drag)",
"switchToEVMCompatibleWallet": "Mangyaring lumipat sa isang EVM compatible na wallet at subukang muli (Ethereum, Polygon)",
"start_tor_on_launch": "Simulan ang tor sa paglulunsad"
"start_tor_on_launch": "Simulan ang tor sa paglulunsad",
"tor_status": "Katayuan ng tor",
"connected": "Konektado",
"disconnected": "Naka -disconnect"
}

View file

@ -762,5 +762,8 @@
"select_sell_provider_notice": "Yukarıdan bir satış sağlayıcısı seçin. Uygulama ayarlarında varsayılan satış sağlayıcınızı ayarlayarak bu ekranı atlayabilirsiniz.",
"custom_drag": "Özel (Bekle ve Sürükle)",
"switchToEVMCompatibleWallet": "Lütfen EVM uyumlu bir cüzdana geçin ve tekrar deneyin (Ethereum, Polygon)",
"start_tor_on_launch": "Lansmanda Tor'a Başla"
"start_tor_on_launch": "Lansmanda Tor'a Başla",
"tor_status": "Tor Durumu",
"connected": "Bağlı",
"disconnected": "Bağlantı kesildi"
}

View file

@ -764,5 +764,8 @@
"select_sell_provider_notice": "Виберіть вище постачальника послуг продажу. Ви можете пропустити цей екран, встановивши постачальника послуг продажу за умовчанням у налаштуваннях програми.",
"custom_drag": "На замовлення (утримуйте та перетягується)",
"switchToEVMCompatibleWallet": "Перейдіть на гаманець, сумісний з EVM, і повторіть спробу (Ethereum, Polygon)",
"start_tor_on_launch": "Почніть Тор на запуску"
"start_tor_on_launch": "Почніть Тор на запуску",
"tor_status": "Статус Tor",
"connected": "З'єднаний",
"disconnected": "Роз'єднаний"
}

View file

@ -756,5 +756,8 @@
"select_sell_provider_notice": "۔ﮟﯿﮨ ﮯﺘﮑﺳ ﮌﻮﮭﭼ ﻮﮐ ﻦﯾﺮﮑﺳﺍ ﺱﺍ ﺮﮐ ﮮﺩ ﺐﯿﺗﺮﺗ ﻮﮐ ﮦﺪﻨﻨﮐ ﻢﮨﺍﺮﻓ ﻞﯿﺳ ﭧﻟﺎﻔﯾﮈ ﮯﻨﭘﺍ ﮟﯿﻣ ﺕﺎﺒ",
"custom_drag": "کسٹم (ہولڈ اینڈ ڈریگ)",
"switchToEVMCompatibleWallet": "(Ethereum, Polygon) ﮟﯾﺮﮐ ﺶﺷﻮﮐ ﮦﺭﺎﺑﻭﺩ ﺭﻭﺍ ﮟﯾﺮﮐ ﭻﺋﻮﺳ ﺮﭘ ﭧﯿﻟﺍﻭ ﮯﻟﺍﻭ ﮯﻨﮭﮐﺭ ﺖﻘﺑﺎﻄﻣ ",
"start_tor_on_launch": "لانچ پر ٹور شروع کریں"
"start_tor_on_launch": "لانچ پر ٹور شروع کریں",
"tor_status": "ٹور کی حیثیت",
"connected": "منسلک",
"disconnected": "منقطع"
}

View file

@ -758,5 +758,8 @@
"select_sell_provider_notice": "Yan olupese ti o ta loke. O le foju iboju yii nipa tito olupese iṣẹ tita aiyipada rẹ ni awọn eto app.",
"custom_drag": "Aṣa (mu ati fa)",
"switchToEVMCompatibleWallet": "Jọwọ yipada si apamọwọ ibaramu EVM ki o tun gbiyanju lẹẹkansi (Ethereum, Polygon)",
"start_tor_on_launch": "Bẹrẹ tor lori ifilole"
"start_tor_on_launch": "Bẹrẹ tor lori ifilole",
"tor_status": "Ipo Tor",
"connected": "Sopọ",
"disconnected": "Ge asopọ"
}

View file

@ -763,5 +763,8 @@
"select_sell_provider_notice": "选择上面的销售提供商。您可以通过在应用程序设置中设置默认销售提供商来跳过此屏幕。",
"custom_drag": "定制(保持和拖动)",
"switchToEVMCompatibleWallet": "请切换到 EVM 兼容钱包并重试以太坊、Polygon",
"start_tor_on_launch": "启动TOR发射"
"start_tor_on_launch": "启动TOR发射",
"tor_status": "TOR状态",
"connected": "连接的",
"disconnected": "断开连接"
}