diff --git a/lib/di.dart b/lib/di.dart index ae55c0ce6..2f20d2ce2 100644 --- a/lib/di.dart +++ b/lib/di.dart @@ -515,10 +515,14 @@ Future setup( _nodeSource, type ?? getIt.get().wallet!.type, getIt.get(), + getIt.get() )); - getIt.registerFactory( - () => NodeCreateOrEditPage(getIt.get())); + getIt.registerFactoryParam( + (Node? editingNode, bool? isSelected) => NodeCreateOrEditPage( + nodeCreateOrEditViewModel: getIt.get(), + editingNode: editingNode, + isSelected: isSelected)); getIt.registerFactory(() => OnRamperPage( settingsStore: getIt.get().settingsStore, @@ -796,7 +800,7 @@ Future setup( return IoniaMoreOptionsPage(giftCard); }); - getIt.registerFactoryParam((IoniaGiftCard giftCard, _) + getIt.registerFactoryParam((IoniaGiftCard giftCard, _) => IoniaCustomRedeemViewModel(giftCard: giftCard, ioniaService: getIt.get())); getIt.registerFactoryParam((List args, _){ diff --git a/lib/router.dart b/lib/router.dart index cb4952d0f..dbeb540eb 100644 --- a/lib/router.dart +++ b/lib/router.dart @@ -82,6 +82,7 @@ import 'package:cake_wallet/src/screens/ionia/cards/ionia_payment_status_page.da import 'package:cake_wallet/anypay/any_pay_payment_committed_info.dart'; import 'package:cake_wallet/ionia/ionia_any_pay_payment_info.dart'; import 'package:cw_core/crypto_currency.dart'; +import 'package:cw_core/node.dart'; late RouteSettings currentRouteSettings; @@ -307,8 +308,11 @@ Route createRoute(RouteSettings settings) { builder: (_) => getIt.get()); case Routes.newNode: + final args = settings.arguments as Map?; return CupertinoPageRoute( - builder: (_) => getIt.get()); + builder: (_) => getIt.get( + param1: args?['editingNode'] as Node?, + param2: args?['isSelected'] as bool?)); case Routes.login: return CupertinoPageRoute( diff --git a/lib/src/screens/nodes/node_create_or_edit_page.dart b/lib/src/screens/nodes/node_create_or_edit_page.dart index 8173af2f0..723d8b1cc 100644 --- a/lib/src/screens/nodes/node_create_or_edit_page.dart +++ b/lib/src/screens/nodes/node_create_or_edit_page.dart @@ -2,6 +2,7 @@ import 'package:cake_wallet/core/execution_state.dart'; import 'package:cake_wallet/src/screens/nodes/widgets/node_form.dart'; import 'package:cake_wallet/src/widgets/alert_with_one_action.dart'; import 'package:cake_wallet/utils/show_pop_up.dart'; +import 'package:cw_core/node.dart'; import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; @@ -13,7 +14,7 @@ import 'package:cake_wallet/src/widgets/scollable_with_bottom_section.dart'; import 'package:cake_wallet/view_model/node_list/node_create_or_edit_view_model.dart'; class NodeCreateOrEditPage extends BasePage { - NodeCreateOrEditPage(this.nodeCreateOrEditViewModel) + NodeCreateOrEditPage({required this.nodeCreateOrEditViewModel,this.editingNode, this.isSelected}) : _formKey = GlobalKey(), _addressController = TextEditingController(), _portController = TextEditingController(), @@ -62,9 +63,11 @@ class NodeCreateOrEditPage extends BasePage { final TextEditingController _passwordController; @override - String get title => S.current.node_new; + String get title => editingNode != null ? S.current.edit_node : S.current.node_new; final NodeCreateOrEditViewModel nodeCreateOrEditViewModel; + final Node? editingNode; + final bool? isSelected; @override Widget body(BuildContext context) { @@ -108,6 +111,7 @@ class NodeCreateOrEditPage extends BasePage { content: NodeForm( formKey: _formKey, nodeViewModel: nodeCreateOrEditViewModel, + editingNode: editingNode, ), bottomSectionPadding: EdgeInsets.only(bottom: 24), bottomSection: Observer( @@ -140,7 +144,8 @@ class NodeCreateOrEditPage extends BasePage { return; } - await nodeCreateOrEditViewModel.save(); + await nodeCreateOrEditViewModel.save( + editingNode: editingNode, saveAsCurrent: isSelected ?? false); Navigator.of(context).pop(); }, text: S.of(context).save, diff --git a/lib/src/screens/nodes/widgets/node_form.dart b/lib/src/screens/nodes/widgets/node_form.dart index 52851e063..642f30445 100644 --- a/lib/src/screens/nodes/widgets/node_form.dart +++ b/lib/src/screens/nodes/widgets/node_form.dart @@ -3,6 +3,8 @@ import 'package:cake_wallet/core/node_port_validator.dart'; import 'package:cake_wallet/src/widgets/base_text_form_field.dart'; import 'package:cake_wallet/src/widgets/standard_checkbox.dart'; import 'package:cake_wallet/view_model/node_list/node_create_or_edit_view_model.dart'; +import 'package:cw_core/node.dart'; +import 'package:cw_haven/api/signatures.dart'; import 'package:flutter/material.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:cake_wallet/generated/i18n.dart'; @@ -12,22 +14,20 @@ class NodeForm extends StatelessWidget { NodeForm({ required this.nodeViewModel, required this.formKey, - }) : _addressController = TextEditingController(), - _portController = TextEditingController(), - _loginController = TextEditingController(), - _passwordController = TextEditingController() { - reaction((_) => nodeViewModel.address, (String address) { - if (address != _addressController.text) { - _addressController.text = address; - } - }); - - reaction((_) => nodeViewModel.port, (String port) { - if (port != _portController.text) { - _portController.text = port; - } - }); - + this.editingNode, + }) : _addressController = TextEditingController(text: editingNode?.uri.host.toString()), + _portController = TextEditingController(text: editingNode?.uri.port.toString()), + _loginController = TextEditingController(text: editingNode?.login), + _passwordController = TextEditingController(text: editingNode?.password) { + if (editingNode != null) { + nodeViewModel + ..setAddress((editingNode!.uri.host.toString())) + ..setPort((editingNode!.uri.port.toString())) + ..setPassword((editingNode!.password.toString())) + ..setLogin((editingNode!.login.toString())) + ..setSSL((editingNode!.isSSL)) + ..setTrusted((editingNode!.trusted)); + } if (nodeViewModel.hasAuthCredentials) { reaction((_) => nodeViewModel.login, (String login) { if (login != _loginController.text) { @@ -42,18 +42,15 @@ class NodeForm extends StatelessWidget { }); } - _addressController - .addListener(() => nodeViewModel.address = _addressController.text); - _portController - .addListener(() => nodeViewModel.port = _portController.text); - _loginController - .addListener(() => nodeViewModel.login = _loginController.text); - _passwordController - .addListener(() => nodeViewModel.password = _passwordController.text); + _addressController.addListener(() => nodeViewModel.address = _addressController.text); + _portController.addListener(() => nodeViewModel.port = _portController.text); + _loginController.addListener(() => nodeViewModel.login = _loginController.text); + _passwordController.addListener(() => nodeViewModel.password = _passwordController.text); } final NodeCreateOrEditViewModel nodeViewModel; final GlobalKey formKey; + final Node? editingNode; final TextEditingController _addressController; final TextEditingController _portController; @@ -84,8 +81,7 @@ class NodeForm extends StatelessWidget { child: BaseTextFormField( controller: _portController, hintText: S.of(context).node_port, - keyboardType: TextInputType.numberWithOptions( - signed: false, decimal: false), + keyboardType: TextInputType.numberWithOptions(signed: false, decimal: false), validator: NodePortValidator(), )) ], diff --git a/lib/src/screens/settings/connection_sync_page.dart b/lib/src/screens/settings/connection_sync_page.dart index 9d2ce3cda..264cae0d3 100644 --- a/lib/src/screens/settings/connection_sync_page.dart +++ b/lib/src/screens/settings/connection_sync_page.dart @@ -2,7 +2,6 @@ import 'package:cake_wallet/src/screens/settings/widgets/settings_cell_with_arro import 'package:cake_wallet/utils/show_pop_up.dart'; import 'package:cake_wallet/view_model/dashboard/dashboard_view_model.dart'; import 'package:cw_core/node.dart'; -import 'package:cw_core/wallet_type.dart'; import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; @@ -90,12 +89,12 @@ class ConnectionSyncPage extends BasePage { final dismissibleRow = Slidable( key: Key('${node.keyIndex}'), - startActionPane: _actionPane(context, node), - endActionPane: _actionPane(context, node), + startActionPane: _actionPane(context, node, isSelected), + endActionPane: _actionPane(context, node, isSelected), child: nodeListRow, ); - return isSelected ? nodeListRow : dismissibleRow; + return dismissibleRow; }, ), ); @@ -124,33 +123,42 @@ class ConnectionSyncPage extends BasePage { ); } - ActionPane _actionPane(BuildContext context, Node node) => ActionPane( + ActionPane _actionPane(BuildContext context, Node node, bool isSelected) => ActionPane( motion: const ScrollMotion(), - extentRatio: 0.3, + extentRatio: isSelected ? 0.3 : 0.6, children: [ - SlidableAction( - onPressed: (context) async { - final confirmed = await showPopUp( - context: context, - builder: (BuildContext context) { - return AlertWithTwoActions( - alertTitle: S.of(context).remove_node, - alertContent: S.of(context).remove_node_message, - rightButtonText: S.of(context).remove, - leftButtonText: S.of(context).cancel, - actionRightButton: () => Navigator.pop(context, true), - actionLeftButton: () => Navigator.pop(context, false)); - }) ?? - false; + if (!isSelected) + SlidableAction( + onPressed: (context) async { + final confirmed = await showPopUp( + context: context, + builder: (BuildContext context) { + return AlertWithTwoActions( + alertTitle: S.of(context).remove_node, + alertContent: S.of(context).remove_node_message, + rightButtonText: S.of(context).remove, + leftButtonText: S.of(context).cancel, + actionRightButton: () => Navigator.pop(context, true), + actionLeftButton: () => Navigator.pop(context, false)); + }) ?? + false; - if (confirmed) { - await nodeListViewModel.delete(node); - } - }, - backgroundColor: Colors.red, + if (confirmed) { + await nodeListViewModel.delete(node); + } + }, + backgroundColor: Colors.red, + foregroundColor: Colors.white, + icon: CupertinoIcons.delete, + label: S.of(context).delete, + ), + SlidableAction( + onPressed: (_) => Navigator.of(context).pushNamed(Routes.newNode, + arguments: {'editingNode': node, 'isSelected': isSelected}), + backgroundColor: Colors.blue, foregroundColor: Colors.white, - icon: CupertinoIcons.delete, - label: S.of(context).delete, + icon: Icons.edit, + label: S.of(context).edit, ), ], ); diff --git a/lib/view_model/node_list/node_create_or_edit_view_model.dart b/lib/view_model/node_list/node_create_or_edit_view_model.dart index a8f184589..d5171a915 100644 --- a/lib/view_model/node_list/node_create_or_edit_view_model.dart +++ b/lib/view_model/node_list/node_create_or_edit_view_model.dart @@ -5,13 +5,16 @@ import 'package:mobx/mobx.dart'; import 'package:cw_core/node.dart'; import 'package:cw_core/wallet_type.dart'; +import 'node_list_view_model.dart'; + part 'node_create_or_edit_view_model.g.dart'; class NodeCreateOrEditViewModel = NodeCreateOrEditViewModelBase with _$NodeCreateOrEditViewModel; abstract class NodeCreateOrEditViewModelBase with Store { - NodeCreateOrEditViewModelBase(this._nodeSource, this._walletType, this._settingsStore) + NodeCreateOrEditViewModelBase(this._nodeSource, this._walletType, this._settingsStore, + this.nodeListViewModel) : state = InitialExecutionState(), connectionState = InitialExecutionState(), useSSL = false, @@ -65,6 +68,7 @@ abstract class NodeCreateOrEditViewModelBase with Store { final WalletType _walletType; final Box _nodeSource; final SettingsStore _settingsStore; + final NodeListViewModel nodeListViewModel; @action void reset() { @@ -77,9 +81,30 @@ abstract class NodeCreateOrEditViewModelBase with Store { } @action - Future save({bool saveAsCurrent = false}) async { + void setPort (String val) => port = val; + + @action + void setAddress (String val) => address = val; + + @action + void setLogin (String val) => login = val; + + @action + void setPassword (String val) => password = val; + + @action + void setSSL (bool val) => useSSL = val; + + @action + void setTrusted (bool val) => trusted = val; + + @action + Future save({Node? editingNode, bool saveAsCurrent = false}) async { try { state = IsExecutingState(); + if (editingNode != null) { + await nodeListViewModel.delete(editingNode); + } final node = Node(uri: uri, type: _walletType, login: login, password: password, useSSL: useSSL, trusted: trusted); diff --git a/res/values/strings_ar.arb b/res/values/strings_ar.arb index 8222467bd..5ce2084cc 100644 --- a/res/values/strings_ar.arb +++ b/res/values/strings_ar.arb @@ -682,5 +682,6 @@ "send_to_this_address" : "أرسل ${currency} ${tag}إلى هذا العنوان", "arrive_in_this_address" : "سيصل ${currency} ${tag}إلى هذا العنوان", "do_not_send": "لا ترسل", - "error_dialog_content": "عفوًا ، لقد حصلنا على بعض الخطأ.\n\nيرجى إرسال تقرير التعطل إلى فريق الدعم لدينا لتحسين التطبيق." + "error_dialog_content": "عفوًا ، لقد حصلنا على بعض الخطأ.\n\nيرجى إرسال تقرير التعطل إلى فريق الدعم لدينا لتحسين التطبيق.", + "edit_node": "تحرير العقدة" } diff --git a/res/values/strings_bg.arb b/res/values/strings_bg.arb index 2099abc19..5daf8135d 100644 --- a/res/values/strings_bg.arb +++ b/res/values/strings_bg.arb @@ -684,5 +684,6 @@ "send_to_this_address" : "Send ${currency} ${tag}to this address", "arrive_in_this_address" : "${currency} ${tag}ще отидат на този адрес", "do_not_send": "Не изпращай", - "error_dialog_content": "Получихме грешка.\n\nМоля, изпратете доклада до нашия отдел поддръжка, за да подобрим приложението." + "error_dialog_content": "Получихме грешка.\n\nМоля, изпратете доклада до нашия отдел поддръжка, за да подобрим приложението.", + "edit_node": "Редактиране на възел" } diff --git a/res/values/strings_cs.arb b/res/values/strings_cs.arb index cc66b8144..8d12c2ecd 100644 --- a/res/values/strings_cs.arb +++ b/res/values/strings_cs.arb @@ -684,5 +684,6 @@ "send_to_this_address" : "Poslat ${currency} ${tag}na tuto adresu", "arrive_in_this_address" : "${currency} ${tag}přijde na tuto adresu", "do_not_send": "Neodesílat", - "error_dialog_content": "Nastala chyba.\n\nProsím odešlete zprávu o chybě naší podpoře, aby mohli zajistit opravu." + "error_dialog_content": "Nastala chyba.\n\nProsím odešlete zprávu o chybě naší podpoře, aby mohli zajistit opravu.", + "edit_node": "Upravit uzel" } diff --git a/res/values/strings_de.arb b/res/values/strings_de.arb index 6483305a4..0d80c2340 100644 --- a/res/values/strings_de.arb +++ b/res/values/strings_de.arb @@ -684,5 +684,6 @@ "send_to_this_address" : "Senden Sie ${currency} ${tag}an diese Adresse", "arrive_in_this_address" : "${currency} ${tag}wird an dieser Adresse ankommen", "do_not_send": "Nicht senden", - "error_dialog_content": "Hoppla, wir haben einen Fehler.\n\nBitte senden Sie den Absturzbericht an unser Support-Team, um die Anwendung zu verbessern." + "error_dialog_content": "Hoppla, wir haben einen Fehler.\n\nBitte senden Sie den Absturzbericht an unser Support-Team, um die Anwendung zu verbessern.", + "edit_node": "Knoten bearbeiten" } diff --git a/res/values/strings_en.arb b/res/values/strings_en.arb index 655350304..6d317c1d6 100644 --- a/res/values/strings_en.arb +++ b/res/values/strings_en.arb @@ -684,5 +684,6 @@ "send_to_this_address" : "Send ${currency} ${tag}to this address", "arrive_in_this_address" : "${currency} ${tag}will arrive in this address", "do_not_send": "Don't send", - "error_dialog_content": "Oops, we got some error.\n\nPlease send the crash report to our support team to make the application better." + "error_dialog_content": "Oops, we got some error.\n\nPlease send the crash report to our support team to make the application better.", + "edit_node": "Edit Node" } diff --git a/res/values/strings_es.arb b/res/values/strings_es.arb index 51d4bb0e3..93e590233 100644 --- a/res/values/strings_es.arb +++ b/res/values/strings_es.arb @@ -684,5 +684,6 @@ "send_to_this_address" : "Enviar ${currency} ${tag}a esta dirección", "arrive_in_this_address" : "${currency} ${tag}llegará a esta dirección", "do_not_send": "no enviar", - "error_dialog_content": "Vaya, tenemos un error.\n\nEnvíe el informe de bloqueo a nuestro equipo de soporte para mejorar la aplicación." + "error_dialog_content": "Vaya, tenemos un error.\n\nEnvíe el informe de bloqueo a nuestro equipo de soporte para mejorar la aplicación.", + "edit_node": "Edit Node" } diff --git a/res/values/strings_fr.arb b/res/values/strings_fr.arb index 5e412d4f1..e9e4a4ade 100644 --- a/res/values/strings_fr.arb +++ b/res/values/strings_fr.arb @@ -682,5 +682,6 @@ "send_to_this_address" : "Envoyez ${currency} ${tag}à cette adresse", "arrive_in_this_address" : "${currency} ${tag}arrivera à cette adresse", "do_not_send": "N'envoyez pas", - "error_dialog_content": "Oups, nous avons eu une erreur.\n\nVeuillez envoyer le rapport de plantage à notre équipe d'assistance pour améliorer l'application." + "error_dialog_content": "Oups, nous avons eu une erreur.\n\nVeuillez envoyer le rapport de plantage à notre équipe d'assistance pour améliorer l'application.", + "edit_node": "Modifier le nœud" } diff --git a/res/values/strings_hi.arb b/res/values/strings_hi.arb index 1a3ddff74..d046976f5 100644 --- a/res/values/strings_hi.arb +++ b/res/values/strings_hi.arb @@ -684,5 +684,6 @@ "send_to_this_address" : "इस पते पर ${currency} ${tag}भेजें", "arrive_in_this_address" : "${currency} ${tag}इस पते पर पहुंचेंगे", "do_not_send": "मत भेजो", - "error_dialog_content": "ओह, हमसे कुछ गड़बड़ी हुई है.\n\nएप्लिकेशन को बेहतर बनाने के लिए कृपया क्रैश रिपोर्ट हमारी सहायता टीम को भेजें।" + "error_dialog_content": "ओह, हमसे कुछ गड़बड़ी हुई है.\n\nएप्लिकेशन को बेहतर बनाने के लिए कृपया क्रैश रिपोर्ट हमारी सहायता टीम को भेजें।", + "edit_node": "नोड संपादित करें" } diff --git a/res/values/strings_hr.arb b/res/values/strings_hr.arb index c012ca72d..d103f2f08 100644 --- a/res/values/strings_hr.arb +++ b/res/values/strings_hr.arb @@ -684,5 +684,6 @@ "send_to_this_address" : "Pošaljite ${currency} ${tag}na ovu adresu", "arrive_in_this_address" : "${currency} ${tag}će stići na ovu adresu", "do_not_send": "Ne šalji", - "error_dialog_content": "Ups, imamo grešku.\n\nPošaljite izvješće o padu našem timu za podršku kako bismo poboljšali aplikaciju." + "error_dialog_content": "Ups, imamo grešku.\n\nPošaljite izvješće o padu našem timu za podršku kako bismo poboljšali aplikaciju.", + "edit_node": "Uredi čvor" } diff --git a/res/values/strings_id.arb b/res/values/strings_id.arb index b69f7641b..76e6fe672 100644 --- a/res/values/strings_id.arb +++ b/res/values/strings_id.arb @@ -666,5 +666,6 @@ "unmatched_currencies": "Mata uang dompet Anda saat ini tidak cocok dengan yang ditandai QR", "orbot_running_alert": "Pastikan Orbot sedang berjalan sebelum menghubungkan ke node ini.", "contact_list_contacts": "Kontak", - "contact_list_wallets": "Dompet Saya" + "contact_list_wallets": "Dompet Saya", + "edit_node": "Sunting Node" } diff --git a/res/values/strings_it.arb b/res/values/strings_it.arb index 4048e0866..5ce3568ef 100644 --- a/res/values/strings_it.arb +++ b/res/values/strings_it.arb @@ -684,5 +684,6 @@ "send_to_this_address" : "Invia ${currency} ${tag}a questo indirizzo", "arrive_in_this_address" : "${currency} ${tag}arriverà a questo indirizzo", "do_not_send": "Non inviare", - "error_dialog_content": "Ups, imamo grešku.\n\nPošaljite izvješće o padu našem timu za podršku kako bismo poboljšali aplikaciju." + "error_dialog_content": "Spiacenti, abbiamo riscontrato un errore.\n\nSi prega di inviare il rapporto sull'arresto anomalo al nostro team di supporto per migliorare l'applicazione.", + "edit_node": "Modifica nodo" } diff --git a/res/values/strings_ja.arb b/res/values/strings_ja.arb index 831056785..08f67cb37 100644 --- a/res/values/strings_ja.arb +++ b/res/values/strings_ja.arb @@ -684,5 +684,6 @@ "send_to_this_address" : "${currency} ${tag}をこのアドレスに送金", "arrive_in_this_address" : "${currency} ${tag}はこの住所に到着します", "do_not_send": "送信しない", - "error_dialog_content": "Spiacenti, abbiamo riscontrato un errore.\n\nSi prega di inviare il rapporto sull'arresto anomalo al nostro team di supporto per migliorare l'applicazione." + "error_dialog_content": "エラーが発生しました。\n\nアプリケーションを改善するために、クラッシュ レポートをサポート チームに送信してください。", + "edit_node": "ノードを編集" } diff --git a/res/values/strings_ko.arb b/res/values/strings_ko.arb index 2c2d564ae..6b9c64bc4 100644 --- a/res/values/strings_ko.arb +++ b/res/values/strings_ko.arb @@ -684,5 +684,6 @@ "send_to_this_address" : "이 주소로 ${currency} ${tag}송금", "arrive_in_this_address" : "${currency} ${tag}이(가) 이 주소로 도착합니다", "do_not_send": "보내지 마세요", - "error_dialog_content": "죄송합니다. 오류가 발생했습니다.\n\n응용 프로그램을 개선하려면 지원 팀에 충돌 보고서를 보내주십시오." + "error_dialog_content": "죄송합니다. 오류가 발생했습니다.\n\n응용 프로그램을 개선하려면 지원 팀에 충돌 보고서를 보내주십시오.", + "edit_node": "노드 편집" } diff --git a/res/values/strings_my.arb b/res/values/strings_my.arb index 401f5af3a..74f85ffc2 100644 --- a/res/values/strings_my.arb +++ b/res/values/strings_my.arb @@ -684,5 +684,6 @@ "send_to_this_address" : "ဤလိပ်စာသို့ ${currency} ${tag}သို့ ပို့ပါ။", "arrive_in_this_address" : "${currency} ${tag}ဤလိပ်စာသို့ ရောက်ရှိပါမည်။", "do_not_send": "မပို့ပါနှင့်", - "error_dialog_content": "အိုး၊ ကျွန်ုပ်တို့တွင် အမှားအယွင်းအချို့ရှိသည်။\n\nအပလီကေးရှင်းကို ပိုမိုကောင်းမွန်စေရန်အတွက် ပျက်စီးမှုအစီရင်ခံစာကို ကျွန်ုပ်တို့၏ပံ့ပိုးကူညီရေးအဖွဲ့ထံ ပေးပို့ပါ။" + "error_dialog_content": "အိုး၊ ကျွန်ုပ်တို့တွင် အမှားအယွင်းအချို့ရှိသည်။\n\nအပလီကေးရှင်းကို ပိုမိုကောင်းမွန်စေရန်အတွက် ပျက်စီးမှုအစီရင်ခံစာကို ကျွန်ုပ်တို့၏ပံ့ပိုးကူညီရေးအဖွဲ့ထံ ပေးပို့ပါ။", + "edit_node": "Node ကို တည်းဖြတ်ပါ။" } diff --git a/res/values/strings_nl.arb b/res/values/strings_nl.arb index a3a043b75..376da9bb9 100644 --- a/res/values/strings_nl.arb +++ b/res/values/strings_nl.arb @@ -684,5 +684,6 @@ "send_to_this_address" : "Stuur ${currency} ${tag}naar dit adres", "arrive_in_this_address" : "${currency} ${tag}komt aan op dit adres", "do_not_send": "Niet sturen", - "error_dialog_content": "Oeps, er is een fout opgetreden.\n\nStuur het crashrapport naar ons ondersteuningsteam om de applicatie te verbeteren." + "error_dialog_content": "Oeps, er is een fout opgetreden.\n\nStuur het crashrapport naar ons ondersteuningsteam om de applicatie te verbeteren.", + "edit_node": "Knooppunt bewerken" } diff --git a/res/values/strings_pl.arb b/res/values/strings_pl.arb index 3c9b60eaa..1152f6281 100644 --- a/res/values/strings_pl.arb +++ b/res/values/strings_pl.arb @@ -684,5 +684,6 @@ "send_to_this_address" : "Wyślij ${currency} ${tag}na ten adres", "arrive_in_this_address" : "${currency} ${tag}dotrze na ten adres", "do_not_send": "Nie wysyłaj", - "error_dialog_content": "Ups, wystąpił błąd.\n\nPrześlij raport o awarii do naszego zespołu wsparcia, aby ulepszyć aplikację." + "error_dialog_content": "Ups, wystąpił błąd.\n\nPrześlij raport o awarii do naszego zespołu wsparcia, aby ulepszyć aplikację.", + "edit_node": "Edytuj węzeł" } diff --git a/res/values/strings_pt.arb b/res/values/strings_pt.arb index 39cef5f67..d14a41554 100644 --- a/res/values/strings_pt.arb +++ b/res/values/strings_pt.arb @@ -683,5 +683,6 @@ "send_to_this_address" : "Envie ${currency} ${tag}para este endereço", "arrive_in_this_address" : "${currency} ${tag}chegará neste endereço", "do_not_send": "não envie", - "error_dialog_content": "Ops, houve algum erro.\n\nPor favor, envie o relatório de falha para nossa equipe de suporte para melhorar o aplicativo." + "error_dialog_content": "Ops, houve algum erro.\n\nPor favor, envie o relatório de falha para nossa equipe de suporte para melhorar o aplicativo.", + "edit_node": "Editar nó" } diff --git a/res/values/strings_ru.arb b/res/values/strings_ru.arb index 50c183f1b..7ef78a731 100644 --- a/res/values/strings_ru.arb +++ b/res/values/strings_ru.arb @@ -684,5 +684,6 @@ "send_to_this_address" : "Отправить ${currency} ${tag}на этот адрес", "arrive_in_this_address" : "${currency} ${tag}придет на этот адрес", "do_not_send": "Не отправлять", - "error_dialog_content": "Ой, у нас какая-то ошибка.\n\nПожалуйста, отправьте отчет о сбое в нашу службу поддержки, чтобы сделать приложение лучше." + "error_dialog_content": "Ой, у нас какая-то ошибка.\n\nПожалуйста, отправьте отчет о сбое в нашу службу поддержки, чтобы сделать приложение лучше.", + "edit_node": "Редактировать узел" } diff --git a/res/values/strings_th.arb b/res/values/strings_th.arb index 2ecf1bf75..cebcc4126 100644 --- a/res/values/strings_th.arb +++ b/res/values/strings_th.arb @@ -682,5 +682,6 @@ "send_to_this_address" : "ส่ง ${currency} ${tag}ไปยังที่อยู่นี้", "arrive_in_this_address" : "${currency} ${tag}จะมาถึงที่อยู่นี้", "do_not_send": "อย่าส่ง", - "error_dialog_content": "อ๊ะ เราพบข้อผิดพลาดบางอย่าง\n\nโปรดส่งรายงานข้อขัดข้องไปยังทีมสนับสนุนของเราเพื่อปรับปรุงแอปพลิเคชันให้ดียิ่งขึ้น" + "error_dialog_content": "อ๊ะ เราพบข้อผิดพลาดบางอย่าง\n\nโปรดส่งรายงานข้อขัดข้องไปยังทีมสนับสนุนของเราเพื่อปรับปรุงแอปพลิเคชันให้ดียิ่งขึ้น", + "edit_node": "แก้ไขโหนด" } diff --git a/res/values/strings_tr.arb b/res/values/strings_tr.arb index 08dec0649..ee81dee4a 100644 --- a/res/values/strings_tr.arb +++ b/res/values/strings_tr.arb @@ -684,5 +684,6 @@ "send_to_this_address" : "Bu adrese ${currency} ${tag}gönder", "arrive_in_this_address" : "${currency} ${tag}bu adrese ulaşacak", "do_not_send": "Gönderme", - "error_dialog_content": "Hay aksi, bir hatamız var.\n\nUygulamayı daha iyi hale getirmek için lütfen kilitlenme raporunu destek ekibimize gönderin." + "error_dialog_content": "Hay aksi, bir hatamız var.\n\nUygulamayı daha iyi hale getirmek için lütfen kilitlenme raporunu destek ekibimize gönderin.", + "edit_node": "Düğümü Düzenle" } diff --git a/res/values/strings_uk.arb b/res/values/strings_uk.arb index 19cf7946d..e2fe3c2f7 100644 --- a/res/values/strings_uk.arb +++ b/res/values/strings_uk.arb @@ -683,5 +683,6 @@ "send_to_this_address" : "Надіслати ${currency} ${tag}на цю адресу", "arrive_in_this_address" : "${currency} ${tag}надійде на цю адресу", "do_not_send": "Не надсилайте", - "error_dialog_content": "На жаль, ми отримали помилку.\n\nБудь ласка, надішліть звіт про збій нашій команді підтримки, щоб покращити додаток." + "error_dialog_content": "На жаль, ми отримали помилку.\n\nБудь ласка, надішліть звіт про збій нашій команді підтримки, щоб покращити додаток.", + "edit_node": "Редагувати вузол" } diff --git a/res/values/strings_ur.arb b/res/values/strings_ur.arb index c3d6d8765..30a68f3da 100644 --- a/res/values/strings_ur.arb +++ b/res/values/strings_ur.arb @@ -685,5 +685,6 @@ "send_to_this_address" : "اس پتے پر ${currency} ${tag} بھیجیں۔", "arrive_in_this_address" : "${currency} ${tag}اس پتے پر پہنچے گا۔", "do_not_send" : "مت بھیجیں۔", - "error_dialog_content" : "افوہ، ہمیں کچھ خرابی ملی۔\n\nایپلی کیشن کو بہتر بنانے کے لیے براہ کرم کریش رپورٹ ہماری سپورٹ ٹیم کو بھیجیں۔" + "error_dialog_content" : "افوہ، ہمیں کچھ خرابی ملی۔\n\nایپلی کیشن کو بہتر بنانے کے لیے براہ کرم کریش رپورٹ ہماری سپورٹ ٹیم کو بھیجیں۔", + "edit_node": "نوڈ میں ترمیم کریں۔" } diff --git a/res/values/strings_zh.arb b/res/values/strings_zh.arb index 52fc9cd7a..f950c2902 100644 --- a/res/values/strings_zh.arb +++ b/res/values/strings_zh.arb @@ -682,5 +682,6 @@ "send_to_this_address" : "发送 ${currency} ${tag}到这个地址", "arrive_in_this_address" : "${currency} ${tag}将到达此地址", "do_not_send": "不要发送", - "error_dialog_content": "糟糕,我们遇到了一些错误。\n\n请将崩溃报告发送给我们的支持团队,以改进应用程序。" + "error_dialog_content": "糟糕,我们遇到了一些错误。\n\n请将崩溃报告发送给我们的支持团队,以改进应用程序。", + "edit_node": "编辑节点" }