diff --git a/cw_monero/lib/api/wallet_manager.dart b/cw_monero/lib/api/wallet_manager.dart index 9b369c155..97f1de275 100644 --- a/cw_monero/lib/api/wallet_manager.dart +++ b/cw_monero/lib/api/wallet_manager.dart @@ -388,9 +388,7 @@ Future loadWallet( if (gLedger == null) { throw Exception("Tried to open a ledger wallet with no ledger connected"); } - final dummyWPtr = (currentWallet ?? - wmPtr.openWallet(path: '', password: '')); - enableLedgerExchange(dummyWPtr, gLedger!); + enableLedgerExchange(gLedger!); } final addr = wmPtr.ffiAddress(); diff --git a/cw_monero/lib/ledger.dart b/cw_monero/lib/ledger.dart index d931b58d0..6e32d4d68 100644 --- a/cw_monero/lib/ledger.dart +++ b/cw_monero/lib/ledger.dart @@ -2,75 +2,50 @@ import 'dart:async'; import 'dart:ffi'; import 'dart:typed_data'; -import 'package:collection/collection.dart'; import 'package:cw_core/utils/print_verbose.dart'; import 'package:ffi/ffi.dart'; +import 'package:flutter/foundation.dart'; import 'package:ledger_flutter_plus/ledger_flutter_plus.dart'; import 'package:ledger_flutter_plus/ledger_flutter_plus_dart.dart'; -import 'package:monero/src/wallet2.dart'; +import 'package:monero/src/monero.dart' as api; LedgerConnection? gLedger; +String? latestLedgerCommand; -Timer? _ledgerExchangeTimer; -Timer? _ledgerKeepAlive; +typedef LedgerCallback = Void Function(Pointer, UnsignedInt); +NativeCallable? callable; -void enableLedgerExchange(Wallet2Wallet wallet, LedgerConnection connection) { - _ledgerExchangeTimer?.cancel(); - _ledgerExchangeTimer = Timer.periodic(Duration(milliseconds: 1), (_) async { - final ledgerRequestLength = wallet.getSendToDeviceLength(); - final ledgerRequest = wallet.getSendToDevice() - .cast() - .asTypedList(ledgerRequestLength); - if (ledgerRequestLength > 0) { - _ledgerKeepAlive?.cancel(); +void enableLedgerExchange(LedgerConnection connection) { + callable?.close(); - final Pointer emptyPointer = malloc(0); - wallet.setDeviceSendData( - emptyPointer.cast(), 0); - malloc.free(emptyPointer); + void callback(Pointer request, int requestLength) async { + final ledgerRequest = request.cast().asTypedList(requestLength); - _logLedgerCommand(ledgerRequest, false); - final response = await exchange(connection, ledgerRequest); - _logLedgerCommand(response, true); + _logLedgerCommand(ledgerRequest, false); + final response = await exchange(connection, ledgerRequest); + _logLedgerCommand(response, true); - if (ListEquality().equals(response, [0x55, 0x15])) { - await connection.disconnect(); - // // TODO: Show POPUP pls unlock your device - // await Future.delayed(Duration(seconds: 15)); - // response = await exchange(connection, ledgerRequest); - } - - final Pointer result = malloc(response.length); - for (var i = 0; i < response.length; i++) { - result.asTypedList(response.length)[i] = response[i]; - } - - wallet.setDeviceReceivedData( - result.cast(), response.length); - malloc.free(result); - keepAlive(connection); + final Pointer result = malloc(response.length); + for (var i = 0; i < response.length; i++) { + result.asTypedList(response.length)[i] = response[i]; } - }); -} -void keepAlive(LedgerConnection connection) { - if (connection.connectionType == ConnectionType.ble) { - _ledgerKeepAlive = Timer.periodic(Duration(seconds: 10), (_) async { - UniversalBle.setNotifiable( - connection.device.id, - connection.device.deviceInfo.serviceId, - connection.device.deviceInfo.notifyCharacteristicKey, - BleInputProperty.notification, - ).onError((_, __) async {}); - }); + latestLedgerCommand = _ledgerMoneroCommands[ledgerRequest[1]]; + + api.MoneroWallet.setDeviceReceivedData( + result.cast(), response.length); + api.MoneroFree().free(result.cast()); } + + callable = NativeCallable.listener(callback); + api.MoneroWallet.setLedgerCallback(callable!.nativeFunction); } void disableLedgerExchange() { - _ledgerExchangeTimer?.cancel(); - _ledgerKeepAlive?.cancel(); + callable?.close(); gLedger?.disconnect(); gLedger = null; + latestLedgerCommand = null; } Future exchange(LedgerConnection connection, Uint8List data) async => @@ -135,8 +110,6 @@ void _logLedgerCommand(Uint8List command, [bool isResponse = true]) { String toHexString(Uint8List data) => data.map((e) => e.toRadixString(16).padLeft(2, '0')).join(); - - if (isResponse) { printV("< ${toHexString(command)}"); } else { diff --git a/cw_monero/lib/monero_wallet.dart b/cw_monero/lib/monero_wallet.dart index 1e6d3f6a3..1a6f11a1d 100644 --- a/cw_monero/lib/monero_wallet.dart +++ b/cw_monero/lib/monero_wallet.dart @@ -927,8 +927,7 @@ abstract class MoneroWalletBase extends WalletBase=3.6.0 <4.0.0" + dart: ">=3.7.0-0 <4.0.0" flutter: ">=3.24.0" diff --git a/cw_monero/pubspec.yaml b/cw_monero/pubspec.yaml index 90d0b85ab..71d1b0c9b 100644 --- a/cw_monero/pubspec.yaml +++ b/cw_monero/pubspec.yaml @@ -2,11 +2,10 @@ name: cw_monero description: A new flutter plugin project. version: 0.0.1 publish_to: none -author: Cake Wallet homepage: https://cakewallet.com environment: - sdk: ">=2.19.0 <3.0.0" + sdk: ^3.5.0 flutter: ">=1.20.0" dependencies: @@ -27,7 +26,7 @@ dependencies: monero: git: url: https://github.com/mrcyjanek/monero_c - ref: b335585a7fb94b315eb52bd88f2da6d3489fa508 + ref: a27fbcb24d91143715ed930a05aaa4d853fba1f2 path: impls/monero.dart mutex: ^3.1.0 ledger_flutter_plus: ^1.4.1 diff --git a/cw_wownero/pubspec.lock b/cw_wownero/pubspec.lock index 3e42905c0..b0ffa769f 100644 --- a/cw_wownero/pubspec.lock +++ b/cw_wownero/pubspec.lock @@ -37,10 +37,10 @@ packages: dependency: transitive description: name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63 url: "https://pub.dev" source: hosted - version: "2.11.0" + version: "2.12.0" blockchain_utils: dependency: transitive description: @@ -54,10 +54,10 @@ packages: dependency: transitive description: name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" build: dependency: transitive description: @@ -135,10 +135,10 @@ packages: dependency: transitive description: name: characters - sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.0" checked_yaml: dependency: transitive description: @@ -151,10 +151,10 @@ packages: dependency: transitive description: name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" code_builder: dependency: transitive description: @@ -167,10 +167,10 @@ packages: dependency: transitive description: name: collection - sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" url: "https://pub.dev" source: hosted - version: "1.19.0" + version: "1.19.1" convert: dependency: transitive description: @@ -238,10 +238,10 @@ packages: dependency: transitive description: name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc" url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.2" ffi: dependency: "direct main" description: @@ -400,18 +400,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" + sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec url: "https://pub.dev" source: hosted - version: "10.0.7" + version: "10.0.8" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 url: "https://pub.dev" source: hosted - version: "3.0.8" + version: "3.0.9" leak_tracker_testing: dependency: transitive description: @@ -432,10 +432,10 @@ packages: dependency: transitive description: name: matcher - sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 url: "https://pub.dev" source: hosted - version: "0.12.16+1" + version: "0.12.17" material_color_utilities: dependency: transitive description: @@ -448,10 +448,10 @@ packages: dependency: transitive description: name: meta - sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.16.0" mime: dependency: transitive description: @@ -480,8 +480,8 @@ packages: dependency: "direct main" description: path: "impls/monero.dart" - ref: b335585a7fb94b315eb52bd88f2da6d3489fa508 - resolved-ref: b335585a7fb94b315eb52bd88f2da6d3489fa508 + ref: "4868eb9220962a4176a7ed0fc7c809c6200e71a0" + resolved-ref: "4868eb9220962a4176a7ed0fc7c809c6200e71a0" url: "https://github.com/mrcyjanek/monero_c" source: git version: "0.0.0" @@ -522,10 +522,10 @@ packages: dependency: transitive description: name: path - sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.1" path_provider: dependency: "direct main" description: @@ -695,26 +695,26 @@ packages: dependency: transitive description: name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.10.1" stack_trace: dependency: transitive description: name: stack_trace - sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" url: "https://pub.dev" source: hosted - version: "1.12.0" + version: "1.12.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" stream_transform: dependency: transitive description: @@ -727,26 +727,26 @@ packages: dependency: transitive description: name: string_scanner - sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.1" term_glyph: dependency: transitive description: name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" test_api: dependency: transitive description: name: test_api - sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd url: "https://pub.dev" source: hosted - version: "0.7.3" + version: "0.7.4" timing: dependency: transitive description: @@ -791,10 +791,10 @@ packages: dependency: transitive description: name: vm_service - sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b + sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14" url: "https://pub.dev" source: hosted - version: "14.3.0" + version: "14.3.1" watcher: dependency: "direct overridden" description: @@ -844,5 +844,5 @@ packages: source: hosted version: "3.1.3" sdks: - dart: ">=3.5.0 <4.0.0" + dart: ">=3.7.0-0 <4.0.0" flutter: ">=3.24.0" diff --git a/cw_wownero/pubspec.yaml b/cw_wownero/pubspec.yaml index 7b9ec4c41..6c1f37a40 100644 --- a/cw_wownero/pubspec.yaml +++ b/cw_wownero/pubspec.yaml @@ -2,7 +2,6 @@ name: cw_wownero description: A new flutter plugin project. version: 0.0.1 publish_to: none -author: Cake Wallet homepage: https://cakewallet.com environment: @@ -25,7 +24,7 @@ dependencies: monero: git: url: https://github.com/mrcyjanek/monero_c - ref: b335585a7fb94b315eb52bd88f2da6d3489fa508 # monero_c hash + ref: a27fbcb24d91143715ed930a05aaa4d853fba1f2 # monero_c hash path: impls/monero.dart mutex: ^3.1.0 diff --git a/cw_zano/pubspec.lock b/cw_zano/pubspec.lock index 21a59ed84..97da1ba63 100644 --- a/cw_zano/pubspec.lock +++ b/cw_zano/pubspec.lock @@ -37,10 +37,10 @@ packages: dependency: transitive description: name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63 url: "https://pub.dev" source: hosted - version: "2.11.0" + version: "2.12.0" blockchain_utils: dependency: transitive description: @@ -54,10 +54,10 @@ packages: dependency: transitive description: name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" build: dependency: transitive description: @@ -135,10 +135,10 @@ packages: dependency: transitive description: name: characters - sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.0" checked_yaml: dependency: transitive description: @@ -151,10 +151,10 @@ packages: dependency: transitive description: name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" code_builder: dependency: transitive description: @@ -167,10 +167,10 @@ packages: dependency: transitive description: name: collection - sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" url: "https://pub.dev" source: hosted - version: "1.19.0" + version: "1.19.1" convert: dependency: transitive description: @@ -238,10 +238,10 @@ packages: dependency: transitive description: name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc" url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.2" ffi: dependency: "direct main" description: @@ -405,18 +405,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" + sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec url: "https://pub.dev" source: hosted - version: "10.0.7" + version: "10.0.8" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 url: "https://pub.dev" source: hosted - version: "3.0.8" + version: "3.0.9" leak_tracker_testing: dependency: transitive description: @@ -437,10 +437,10 @@ packages: dependency: transitive description: name: matcher - sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 url: "https://pub.dev" source: hosted - version: "0.12.16+1" + version: "0.12.17" material_color_utilities: dependency: transitive description: @@ -453,10 +453,10 @@ packages: dependency: transitive description: name: meta - sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.16.0" mime: dependency: transitive description: @@ -485,8 +485,8 @@ packages: dependency: "direct main" description: path: "impls/monero.dart" - ref: b335585a7fb94b315eb52bd88f2da6d3489fa508 - resolved-ref: b335585a7fb94b315eb52bd88f2da6d3489fa508 + ref: "4868eb9220962a4176a7ed0fc7c809c6200e71a0" + resolved-ref: "4868eb9220962a4176a7ed0fc7c809c6200e71a0" url: "https://github.com/mrcyjanek/monero_c" source: git version: "0.0.0" @@ -519,10 +519,10 @@ packages: dependency: transitive description: name: path - sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.1" path_provider: dependency: "direct main" description: @@ -692,26 +692,26 @@ packages: dependency: transitive description: name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.10.1" stack_trace: dependency: transitive description: name: stack_trace - sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" url: "https://pub.dev" source: hosted - version: "1.12.0" + version: "1.12.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" stream_transform: dependency: transitive description: @@ -724,26 +724,26 @@ packages: dependency: transitive description: name: string_scanner - sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.1" term_glyph: dependency: transitive description: name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" test_api: dependency: transitive description: name: test_api - sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd url: "https://pub.dev" source: hosted - version: "0.7.3" + version: "0.7.4" timing: dependency: transitive description: @@ -788,10 +788,10 @@ packages: dependency: transitive description: name: vm_service - sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b + sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14" url: "https://pub.dev" source: hosted - version: "14.3.0" + version: "14.3.1" watcher: dependency: "direct overridden" description: @@ -841,5 +841,5 @@ packages: source: hosted version: "3.1.3" sdks: - dart: ">=3.5.0 <4.0.0" - flutter: ">=3.27.4" + dart: ">=3.7.0-0 <4.0.0" + flutter: ">=3.24.0" diff --git a/cw_zano/pubspec.yaml b/cw_zano/pubspec.yaml index ff2c1e9a6..f69f427dc 100644 --- a/cw_zano/pubspec.yaml +++ b/cw_zano/pubspec.yaml @@ -2,7 +2,6 @@ name: cw_zano description: A new flutter plugin project. version: 0.0.1 publish_to: none -author: Cake Wallet homepage: https://cakewallet.com environment: @@ -26,7 +25,7 @@ dependencies: monero: git: url: https://github.com/mrcyjanek/monero_c - ref: b335585a7fb94b315eb52bd88f2da6d3489fa508 # monero_c hash + ref: a27fbcb24d91143715ed930a05aaa4d853fba1f2 # monero_c hash path: impls/monero.dart dev_dependencies: flutter_test: diff --git a/lib/monero/cw_monero.dart b/lib/monero/cw_monero.dart index 329c87338..6ae48b863 100644 --- a/lib/monero/cw_monero.dart +++ b/lib/monero/cw_monero.dart @@ -421,6 +421,7 @@ class CWMonero extends Monero { moneroWallet.setLedgerConnection(connection); } + @override void resetLedgerConnection() { disableLedgerExchange(); } @@ -428,9 +429,11 @@ class CWMonero extends Monero { @override void setGlobalLedgerConnection(ledger.LedgerConnection connection) { gLedger = connection; - keepAlive(connection); } + @override + String? getLastLedgerCommand() => latestLedgerCommand; + bool isViewOnly() { return isViewOnlyBySpendKey(null); } @@ -439,5 +442,4 @@ class CWMonero extends Monero { Map> debugCallLength() { return monero_wallet_api.debugCallLength(); } - } diff --git a/lib/src/screens/connect_device/connect_device_page.dart b/lib/src/screens/connect_device/connect_device_page.dart index c68f119ec..87c8e29a9 100644 --- a/lib/src/screens/connect_device/connect_device_page.dart +++ b/lib/src/screens/connect_device/connect_device_page.dart @@ -5,7 +5,9 @@ import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/src/screens/base_page.dart'; import 'package:cake_wallet/src/screens/connect_device/widgets/device_tile.dart'; +import 'package:cake_wallet/src/widgets/bottom_sheet/info_steps_bottom_sheet_widget.dart'; import 'package:cake_wallet/src/widgets/primary_button.dart'; +import 'package:cake_wallet/themes/core/material_base_theme.dart'; import 'package:cake_wallet/utils/responsive_layout_util.dart'; import 'package:cake_wallet/view_model/hardware_wallet/ledger_view_model.dart'; import 'package:cw_core/utils/print_verbose.dart'; @@ -60,6 +62,7 @@ class ConnectDevicePage extends BasePage { onConnectDevice, allowChangeWallet, ledgerVM, + currentTheme, )); } @@ -68,12 +71,14 @@ class ConnectDevicePageBody extends StatefulWidget { final OnConnectDevice onConnectDevice; final bool allowChangeWallet; final LedgerViewModel ledgerVM; + final MaterialThemeBase currentTheme; const ConnectDevicePageBody( this.walletType, this.onConnectDevice, this.allowChangeWallet, this.ledgerVM, + this.currentTheme, ); @override @@ -179,109 +184,126 @@ class ConnectDevicePageBodyState extends State { @override Widget build(BuildContext context) { - return Center( - child: Container( - width: ResponsiveLayoutUtilBase.kDesktopMaxWidthConstraint, - height: double.infinity, - padding: EdgeInsets.symmetric(vertical: 24, horizontal: 24), - child: SingleChildScrollView( - child: Column( - children: [ - Padding( - padding: EdgeInsets.only(left: 20, right: 20, bottom: 20), - child: Text( - Platform.isIOS - ? S.of(context).connect_your_hardware_wallet_ios - : S.of(context).connect_your_hardware_wallet, - style: Theme.of(context).textTheme.titleMedium, - textAlign: TextAlign.center, - ), - ), - Offstage( - offstage: !longWait, - child: Padding( - padding: EdgeInsets.only(left: 20, right: 20, bottom: 20), - child: Text( - S.of(context).if_you_dont_see_your_device, - style: Theme.of(context).textTheme.titleMedium, - textAlign: TextAlign.center, - ), - ), - ), - Observer( - builder: (_) => Offstage( - offstage: widget.ledgerVM.bleIsEnabled, - child: Padding( + return Container( + width: ResponsiveLayoutUtilBase.kDesktopMaxWidthConstraint, + padding: EdgeInsets.symmetric(vertical: 24, horizontal: 24), + child: Column( + children: [ + Expanded( + child: SingleChildScrollView( + child: Column( + children: [ + Padding( padding: EdgeInsets.only(left: 20, right: 20, bottom: 20), child: Text( - S.of(context).ledger_please_enable_bluetooth, - style: Theme.of(context).textTheme.titleMedium, + Platform.isIOS + ? S.of(context).connect_your_hardware_wallet_ios + : S.of(context).connect_your_hardware_wallet, + style: Theme.of(context) + .textTheme.titleMedium, textAlign: TextAlign.center, ), ), - ), + Offstage( + offstage: !longWait, + child: Padding( + padding: EdgeInsets.only(left: 20, right: 20, bottom: 20), + child: Text( + S.of(context).if_you_dont_see_your_device, + style: Theme.of(context) + .textTheme.titleMedium, + textAlign: TextAlign.center, + ), + ), + ), + Observer( + builder: (_) => Offstage( + offstage: widget.ledgerVM.bleIsEnabled, + child: Padding( + padding: + EdgeInsets.only(left: 20, right: 20, bottom: 20), + child: Text( + S.of(context).ledger_please_enable_bluetooth, + style: Theme.of(context) + .textTheme.titleMedium, + textAlign: TextAlign.center, + ), + ), + ), + ), + if (bleDevices.length > 0) ...[ + Padding( + padding: EdgeInsets.only(left: 20, right: 20, bottom: 20), + child: Container( + width: double.infinity, + child: Text( + S.of(context).bluetooth, + style: Theme.of(context) + .textTheme.bodyMedium, + ), + ), + ), + ...bleDevices + .map( + (device) => Padding( + padding: EdgeInsets.only(bottom: 20), + child: DeviceTile( + onPressed: () => _connectToDevice(device), + title: device.name, + leading: _getDeviceTileLeading(device.deviceInfo), + connectionType: device.connectionType, + ), + ), + ) + .toList() + ], + if (usbDevices.length > 0) ...[ + Padding( + padding: EdgeInsets.only(left: 20, right: 20, bottom: 20), + child: Container( + width: double.infinity, + child: Text( + S.of(context).usb, + style: Theme.of(context) + .textTheme.bodyMedium, + ), + ), + ), + ...usbDevices + .map( + (device) => Padding( + padding: EdgeInsets.only(bottom: 20), + child: DeviceTile( + onPressed: () => _connectToDevice(device), + title: device.name, + leading: _getDeviceTileLeading(device.deviceInfo), + connectionType: device.connectionType, + ), + ), + ) + .toList(), + ], + if (widget.allowChangeWallet) ...[ + PrimaryButton( + text: S.of(context).wallets, + color: Theme.of(context) + .colorScheme.primary, + textColor: Theme.of(context) + .colorScheme.onPrimary, + onPressed: _onChangeWallet, + ) + ], + ], ), - if (bleDevices.length > 0) ...[ - Padding( - padding: EdgeInsets.only(left: 20, right: 20, bottom: 20), - child: Container( - width: double.infinity, - child: Text( - S.of(context).bluetooth, - style: Theme.of(context).textTheme.bodyMedium, - ), - ), - ), - ...bleDevices - .map( - (device) => Padding( - padding: EdgeInsets.only(bottom: 20), - child: DeviceTile( - onPressed: () => _connectToDevice(device), - title: device.name, - leading: _getDeviceTileLeading(device.deviceInfo), - connectionType: device.connectionType, - ), - ), - ) - .toList() - ], - if (usbDevices.length > 0) ...[ - Padding( - padding: EdgeInsets.only(left: 20, right: 20, bottom: 20), - child: Container( - width: double.infinity, - child: Text( - S.of(context).usb, - style: Theme.of(context).textTheme.bodyMedium, - ), - ), - ), - ...usbDevices - .map( - (device) => Padding( - padding: EdgeInsets.only(bottom: 20), - child: DeviceTile( - onPressed: () => _connectToDevice(device), - title: device.name, - leading: _getDeviceTileLeading(device.deviceInfo), - connectionType: device.connectionType, - ), - ), - ) - .toList(), - ], - if (widget.allowChangeWallet) ...[ - PrimaryButton( - text: S.of(context).wallets, - color: Theme.of(context).colorScheme.primary, - textColor: Theme.of(context).colorScheme.onPrimary, - onPressed: _onChangeWallet, - ) - ], - ], + ), ), - ), + PrimaryButton( + text: S.of(context).how_to_connect, + color: Theme.of(context).colorScheme.surfaceContainer, + textColor: Theme.of(context).colorScheme.onSecondaryContainer, + onPressed: () => _onHowToConnect(context), + ) + ], ), ); } @@ -293,4 +315,21 @@ class ConnectDevicePageBodyState extends State { .pushNamedAndRemoveUntil(Routes.dashboard, (route) => false), ); } + + void _onHowToConnect(BuildContext context) { + showModalBottomSheet( + context: context, + isScrollControlled: true, + builder: (BuildContext bottomSheetContext) => InfoStepsBottomSheet( + titleText: S.of(context).how_to_connect, + currentTheme: widget.currentTheme, + steps: [ + InfoStep('${S.of(context).step} 1', S.of(context).connect_hw_info_step_1), + InfoStep('${S.of(context).step} 2', S.of(context).connect_hw_info_step_2), + InfoStep('${S.of(context).step} 3', S.of(context).connect_hw_info_step_3), + InfoStep('${S.of(context).step} 4', S.of(context).connect_hw_info_step_4), + ], + ), + ); + } } diff --git a/lib/src/screens/send/send_page.dart b/lib/src/screens/send/send_page.dart index 68c46a9a8..46be6cb7a 100644 --- a/lib/src/screens/send/send_page.dart +++ b/lib/src/screens/send/send_page.dart @@ -684,29 +684,47 @@ class SendPage extends BasePage { }); } - if (state is IsAwaitingDeviceResponseState) { + if (state is IsDeviceSigningResponseState) { WidgetsBinding.instance.addPostFrameCallback((_) { if (!context.mounted) return; showModalBottomSheet( context: context, isDismissible: false, - builder: (BuildContext bottomSheetContext) => InfoBottomSheet( - currentTheme: currentTheme, - titleText: S.of(bottomSheetContext).proceed_on_device, - contentImage: 'assets/images/hardware_wallet/ledger_nano_x.png', - contentImageColor: Theme.of(context).colorScheme.onSurface, - content: S.of(bottomSheetContext).proceed_on_device_description, - isTwoAction: false, - actionButtonText: S.of(context).cancel, - actionButton: () { - sendViewModel.state = InitialExecutionState(); - Navigator.of(bottomSheetContext).pop(); - }, - ), + builder: (context) { + dialogContext = context; + return LoadingBottomSheet(titleText: S.of(context).device_is_signing); + }, ); }); } + + if (state is IsAwaitingDeviceResponseState) { + WidgetsBinding.instance.addPostFrameCallback((_) { + if (!context.mounted) return; + + showModalBottomSheet( + context: context, + isDismissible: false, + builder: (context) { + dialogContext = context; + return InfoBottomSheet( + currentTheme: currentTheme, + titleText: S.of(context).proceed_on_device, + contentImage: + 'assets/images/hardware_wallet/ledger_nano_x.png', + contentImageColor: Theme.of(context).colorScheme.onSurface, + content: S.of(context).proceed_on_device_description, + isTwoAction: false, + actionButtonText: S.of(context).cancel, + actionButton: () { + sendViewModel.state = InitialExecutionState(); + Navigator.of(context).pop(); + }, + ); + }); + }); + } }); _effectsInstalled = true; diff --git a/lib/src/widgets/bottom_sheet/info_steps_bottom_sheet_widget.dart b/lib/src/widgets/bottom_sheet/info_steps_bottom_sheet_widget.dart new file mode 100644 index 000000000..8b78b5b37 --- /dev/null +++ b/lib/src/widgets/bottom_sheet/info_steps_bottom_sheet_widget.dart @@ -0,0 +1,114 @@ +import 'package:cake_wallet/generated/i18n.dart'; +import 'package:cake_wallet/src/widgets/primary_button.dart'; +import 'package:cake_wallet/themes/core/material_base_theme.dart'; +import 'package:flutter/material.dart'; + +import 'base_bottom_sheet_widget.dart'; + +class InfoStep { + final String title; + final String description; + + const InfoStep(this.title, this.description); +} + +class InfoStepsBottomSheet extends BaseBottomSheet { + final MaterialThemeBase currentTheme; + final List steps; + + InfoStepsBottomSheet({ + required String titleText, + required this.steps, + String? titleIconPath, + required this.currentTheme, + }) : super(titleText: titleText, titleIconPath: titleIconPath); + + @override + Widget contentWidget(BuildContext context) => SizedBox( + height: 500, + child: Column( + children: [ + Expanded( + child: SingleChildScrollView( + child: Column( + children: steps + .map((step) => Container( + margin: EdgeInsets.only( + bottom: 15, left: 20, right: 20), + padding: EdgeInsets.all(10), + alignment: Alignment.center, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + color: Theme.of(context).cardColor, + ), + child: Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: Padding( + padding: EdgeInsets.only(left: 16), + child: Column( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: + MainAxisAlignment.start, + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Text( + step.title, + style: Theme.of(context) + .textTheme + .bodyMedium! + .copyWith( + fontSize: 20, + fontWeight: FontWeight.w500, + color: Theme.of(context) + .colorScheme + .onSurface, + ), + ), + Padding( + padding: EdgeInsets.only(top: 5), + child: Text( + step.description, + style: Theme.of(context) + .textTheme + .bodyMedium! + .copyWith( + color: Theme.of(context) + .colorScheme + .onSurfaceVariant, + ), + ), + ) + ], + ), + ), + ) + ], + ), + )) + .toList(), + ), + ), + ), + Padding( + padding: const EdgeInsets.all(16), + child: PrimaryButton( + text: S.of(context).close, + color: Theme.of(context).colorScheme.primary, + textColor: currentTheme.isDark + ? Theme.of(context).colorScheme.onSurfaceVariant + : Theme.of(context).colorScheme.onPrimary, + onPressed: () => Navigator.of(context).pop(), + ), + ) + ], + ), + ); + + @override + Widget footerWidget(BuildContext context) => SizedBox.shrink(); +} diff --git a/lib/view_model/send/send_view_model.dart b/lib/view_model/send/send_view_model.dart index 94b3618ce..be354d976 100644 --- a/lib/view_model/send/send_view_model.dart +++ b/lib/view_model/send/send_view_model.dart @@ -15,8 +15,8 @@ import 'package:cake_wallet/entities/contact_record.dart'; import 'package:cake_wallet/entities/evm_transaction_error_fees_handler.dart'; import 'package:cake_wallet/entities/fiat_currency.dart'; import 'package:cake_wallet/entities/parsed_address.dart'; -import 'package:cake_wallet/entities/template.dart'; import 'package:cake_wallet/entities/preferences_key.dart'; +import 'package:cake_wallet/entities/template.dart'; import 'package:cake_wallet/entities/transaction_description.dart'; import 'package:cake_wallet/entities/wallet_contact.dart'; import 'package:cake_wallet/ethereum/ethereum.dart'; @@ -293,19 +293,18 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor .toList(); @computed - bool get hasCoinControl => - wallet.type == WalletType.bitcoin || - wallet.type == WalletType.litecoin || - wallet.type == WalletType.monero || - wallet.type == WalletType.wownero || - wallet.type == WalletType.decred || - wallet.type == WalletType.bitcoinCash; + bool get hasCoinControl => [ + WalletType.bitcoin, + WalletType.litecoin, + WalletType.monero, + WalletType.wownero, + WalletType.decred, + WalletType.bitcoinCash + ].contains(wallet.type); @computed bool get isElectrumWallet => - wallet.type == WalletType.bitcoin || - wallet.type == WalletType.litecoin || - wallet.type == WalletType.bitcoinCash; + [WalletType.bitcoin, WalletType.litecoin, WalletType.bitcoinCash].contains(wallet.type); @observable CryptoCurrency selectedCryptoCurrency; @@ -444,12 +443,23 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor } } + Timer? _ledgerTxStateTimer; + @action Future createTransaction({ExchangeProvider? provider}) async { try { if (!(state is IsExecutingState)) state = IsExecutingState(); - if (wallet.isHardwareWallet) state = IsAwaitingDeviceResponseState(); + if (wallet.isHardwareWallet) { + state = IsAwaitingDeviceResponseState(); + if (walletType == WalletType.monero) + _ledgerTxStateTimer = Timer.periodic(Duration(seconds: 1), (timer) { + if (monero!.getLastLedgerCommand() == "INS_CLSAG") { + timer.cancel(); + state = IsDeviceSigningResponseState(); + } + }); + } pendingTransaction = await wallet.createTransaction(_credentials(provider)); @@ -475,6 +485,7 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor state = ExecutedSuccessfullyState(); return pendingTransaction; } catch (e) { + _ledgerTxStateTimer?.cancel(); // if (e is LedgerException) { // final errorCode = e.errorCode.toRadixString(16); // final fallbackMsg = @@ -592,7 +603,8 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor )); } final sharedPreferences = await SharedPreferences.getInstance(); - await sharedPreferences.setString(PreferencesKey.backgroundSyncLastTrigger(wallet.name), DateTime.now().add(Duration(minutes: 1)).toIso8601String()); + await sharedPreferences.setString(PreferencesKey.backgroundSyncLastTrigger(wallet.name), + DateTime.now().add(Duration(minutes: 1)).toIso8601String()); state = TransactionCommitted(); } catch (e) { state = FailureState(translateErrorMessage(e, wallet.type, wallet.currency)); diff --git a/lib/view_model/send/send_view_model_state.dart b/lib/view_model/send/send_view_model_state.dart index df31041bc..b3506276b 100644 --- a/lib/view_model/send/send_view_model_state.dart +++ b/lib/view_model/send/send_view_model_state.dart @@ -1,5 +1,6 @@ import 'package:cake_wallet/core/execution_state.dart'; +class IsDeviceSigningResponseState extends IsExecutingState {} class IsAwaitingDeviceResponseState extends IsExecutingState {} class TransactionCommitting extends ExecutionState {} class TransactionCommitted extends ExecutionState {} diff --git a/res/values/strings_ar.arb b/res/values/strings_ar.arb index fc7c95247..d209a9a85 100644 --- a/res/values/strings_ar.arb +++ b/res/values/strings_ar.arb @@ -181,6 +181,10 @@ "confirmed_tx": "مؤكد", "congratulations": "تهانينا!", "connect_an_existing_yat": "توصيل Yat الحالي", + "connect_hw_info_step_1": "تأكد من تشغيل جهازك.", + "connect_hw_info_step_2": "قم بتشغيل Bluetooth لكل من الجهازين وإقرانها من الهاتف ، أو قم بتوصيل أجهزتك معًا باستخدام كبل USB.", + "connect_hw_info_step_3": "افتح جهازك وانتقل إلى تطبيق التشفير المطلوب.", + "connect_hw_info_step_4": "حدد جهازك في محفظة كعكة ومتابعة الإعداد.", "connect_yats": "توصيل Yats", "connect_your_hardware_wallet": "قم بتوصيل محفظة الأجهزة الخاصة بك باستخدام Bluetooth أو USB", "connect_your_hardware_wallet_ios": "قم بتوصيل محفظة الأجهزة الخاصة بك باستخدام Bluetooth", @@ -240,6 +244,7 @@ "descending": "النزول", "description": "ﻒﺻﻭ", "destination_tag": "علامة الوجهة:", + "device_is_signing": "الجهاز يوقع", "dfx_option_description": "شراء التشفير مع EUR & CHF. لعملاء البيع بالتجزئة والشركات في أوروبا", "didnt_get_code": "لم تحصل على رمز؟", "digit_pin": "-رقم PIN", @@ -394,6 +399,7 @@ "hide_details": "أخف التفاصيل", "high_contrast_theme": "موضوع عالي التباين", "home_screen_settings": "إعدادات الشاشة الرئيسية", + "how_to_connect": "كيفية الاتصال", "how_to_use": " ﻞﻤﻌﺘﺴﺗ ﻒﻴﻛ", "how_to_use_card": "كيفية استخدام هذه البطاقة", "id": "رقم المعرف:", @@ -842,6 +848,7 @@ "spend_key_private": "مفتاح الإنفاق (خاص)", "spend_key_public": "مفتاح الإنفاق (عام)", "status": "الحالة:", + "step": "خطوة", "string_default": "تقصير", "subaddress_title": "قائمة العناوين الفرعية", "subaddresses": "العناوين الفرعية", diff --git a/res/values/strings_bg.arb b/res/values/strings_bg.arb index 2c3a89cc1..86540e32f 100644 --- a/res/values/strings_bg.arb +++ b/res/values/strings_bg.arb @@ -181,6 +181,10 @@ "confirmed_tx": "Потвърдено", "congratulations": "Поздравления!", "connect_an_existing_yat": "Добавете съществуващ Yat", + "connect_hw_info_step_1": "Уверете се, че вашето устройство е включено.", + "connect_hw_info_step_2": "Включете Bluetooth както за устройства, така и за тях от телефона или свържете устройствата си заедно с USB кабел.", + "connect_hw_info_step_3": "Отключете устройството си и отворете желаното приложение за криптовалута.", + "connect_hw_info_step_4": "Изберете вашето устройство в портфейла за торта и продължете с настройката.", "connect_yats": "Добавете Yats", "connect_your_hardware_wallet": "Свържете хардуерния си портфейл с помощта на Bluetooth или USB", "connect_your_hardware_wallet_ios": "Свържете хардуерния си портфейл с помощта на Bluetooth", @@ -240,6 +244,7 @@ "descending": "Низходящ", "description": "Описание", "destination_tag": "Destination tag:", + "device_is_signing": "Устройството подписва", "dfx_option_description": "Купете криптовалута с Eur & CHF. За търговски и корпоративни клиенти в Европа", "didnt_get_code": "Не получихте код?", "digit_pin": "-цифрен PIN", @@ -394,6 +399,7 @@ "hide_details": "Скриване на подробностите", "high_contrast_theme": "Тема с висок контраст", "home_screen_settings": "Настройки на началния екран", + "how_to_connect": "Как да се свържа", "how_to_use": "Как да използвам", "how_to_use_card": "Как се ползва тази карта", "id": "ID: ", @@ -842,6 +848,7 @@ "spend_key_private": "Spend key (таен)", "spend_key_public": "Spend key (публичен)", "status": "Статус: ", + "step": "Стъпка", "string_default": "По подразбиране", "subaddress_title": "Лист от подадреси", "subaddresses": "Подадреси", diff --git a/res/values/strings_cs.arb b/res/values/strings_cs.arb index 2d4d58d08..6d604ba05 100644 --- a/res/values/strings_cs.arb +++ b/res/values/strings_cs.arb @@ -181,6 +181,10 @@ "confirmed_tx": "Potvrzeno", "congratulations": "Gratulujeme!", "connect_an_existing_yat": "Připojit existující Yat", + "connect_hw_info_step_1": "Ujistěte se, že je vaše zařízení zapnuté.", + "connect_hw_info_step_2": "Zapněte Bluetooth pro obě zařízení a spárujte je z telefonu nebo připojte zařízení pomocí kabelu USB.", + "connect_hw_info_step_3": "Odemkněte zařízení a přejděte na požadovanou aplikaci Crypto.", + "connect_hw_info_step_4": "Vyberte zařízení v peněžence dortu a pokračujte v nastavení.", "connect_yats": "Připojit Yaty", "connect_your_hardware_wallet": "Připojte hardwarovou peněženku pomocí Bluetooth nebo USB", "connect_your_hardware_wallet_ios": "Připojte hardwarovou peněženku pomocí Bluetooth", @@ -240,6 +244,7 @@ "descending": "Klesající", "description": "Popis", "destination_tag": "Destination Tag:", + "device_is_signing": "Zařízení se podpisu", "dfx_option_description": "Koupit krypto s EUR & CHF. Pro maloobchodní a firemní zákazníky v Evropě", "didnt_get_code": "Nepřišel Vám kód?", "digit_pin": "-číselný PIN", @@ -394,6 +399,7 @@ "hide_details": "Skrýt detaily", "high_contrast_theme": "Téma s vysokým kontrastem", "home_screen_settings": "Nastavení domovské obrazovky", + "how_to_connect": "Jak se připojit", "how_to_use": "Jak používat", "how_to_use_card": "Jak použít tuto kartu", "id": "ID: ", @@ -842,6 +848,7 @@ "spend_key_private": "Klíč pro platby (soukromý)", "spend_key_public": "Klíč pro platby (veřejný)", "status": "Status: ", + "step": "Krok", "string_default": "Výchozí", "subaddress_title": "Seznam subadres", "subaddresses": "Subadresy", diff --git a/res/values/strings_de.arb b/res/values/strings_de.arb index 383ce04ad..739b0f4b0 100644 --- a/res/values/strings_de.arb +++ b/res/values/strings_de.arb @@ -181,6 +181,10 @@ "confirmed_tx": "Bestätigt", "congratulations": "Glückwunsch!", "connect_an_existing_yat": "Verbinden Sie ein vorhandenes Yat", + "connect_hw_info_step_1": "Stellen Sie sicher, dass Ihr Gerät eingeschaltet ist.", + "connect_hw_info_step_2": "Schalten Sie Bluetooth für beide Geräte ein oder schließen Sie Ihre Geräte mit einem USB-Kabel an.", + "connect_hw_info_step_3": "Entsperren Sie Ihr Gerät und navigieren Sie zur gewünschten Krypto-App auf ihrem Gerät.", + "connect_hw_info_step_4": "Wählen Sie Ihr Gerät in Cake Wallet aus und fahren Sie mit dem Setup fort.", "connect_yats": "Yats verbinden", "connect_your_hardware_wallet": "Verbinden Sie Ihre Hardware-Wallet über Bluetooth oder USB", "connect_your_hardware_wallet_ios": "Verbinden Sie Ihre Hardware-Wallet über Bluetooth", @@ -240,6 +244,7 @@ "descending": "Absteigend", "description": "Beschreibung", "destination_tag": "Ziel-Tag:", + "device_is_signing": "Das Gerät unterschreibt", "dfx_option_description": "Kaufen Sie Krypto mit EUR & CHF. Für Einzelhandel und Unternehmenskunden in Europa", "didnt_get_code": "Kein Code?", "digit_pin": "-stellige PIN", @@ -394,6 +399,7 @@ "hide_details": "Details ausblenden", "high_contrast_theme": "Kontrastreiches Thema", "home_screen_settings": "Einstellungen für den Startbildschirm", + "how_to_connect": "Anleitung", "how_to_use": "Wie benutzt man", "how_to_use_card": "Wie man diese Karte benutzt", "id": "ID: ", @@ -584,7 +590,7 @@ "potential_scam": "Potenzieller Betrug", "powered_by": "Ermöglicht durch ${title}", "pre_seed_button_text": "Verstanden. Zeig mir meinen Seed", - "pre_seed_description": "Auf der nächsten Seite sehen Sie eine Reihe von Wörtern. Dies ist Ihr einzigartiger und privater Samen und der einzige Weg, Ihre Brieftasche im Falle eines Verlusts oder einer Fehlfunktion zurückzugewinnen. Es liegt in Ihrer Verantwortung, es aufzuschreiben und an einem sicheren Ort außerhalb der Cake Wallet -App aufzubewahren.", + "pre_seed_description": "Auf der nächsten Seite sehen Sie eine Reihe von Wörtern. Dies ist Ihr einzigartiger und privater Seed und der einzige Weg, Ihre Brieftasche im Falle eines Verlusts oder einer Fehlfunktion zurückzugewinnen. Es liegt in Ihrer Verantwortung, es aufzuschreiben und an einem sicheren Ort außerhalb der Cake Wallet -App aufzubewahren.", "pre_seed_title": "WICHTIG", "prepaid_cards": "Karten mit Guthaben", "prevent_screenshots": "Verhindern Sie Screenshots und Bildschirmaufzeichnungen", @@ -843,6 +849,7 @@ "spend_key_private": "Spend Key (geheim)", "spend_key_public": "Spend Key (öffentlich)", "status": "Status: ", + "step": "Schritt", "string_default": "Standard", "subaddress_title": "Unteradressenliste", "subaddresses": "Unteradressen", diff --git a/res/values/strings_en.arb b/res/values/strings_en.arb index 9c7cb7737..224685891 100644 --- a/res/values/strings_en.arb +++ b/res/values/strings_en.arb @@ -181,6 +181,10 @@ "confirmed_tx": "Confirmed", "congratulations": "Congratulations!", "connect_an_existing_yat": "Connect an existing Yat", + "connect_hw_info_step_1": "Make sure your device is powered ON.", + "connect_hw_info_step_2": "Turn Bluetooth on for both devices and pair them from the phone, OR connect your devices together using a USB cable.", + "connect_hw_info_step_3": "Unlock your device and navigate to the desired crypto app.", + "connect_hw_info_step_4": "Select your device in Cake Wallet and continue with the setup.", "connect_yats": "Connect Yats", "connect_your_hardware_wallet": "Connect your hardware wallet using Bluetooth or USB", "connect_your_hardware_wallet_ios": "Connect your hardware wallet using Bluetooth", @@ -240,6 +244,7 @@ "descending": "Descending", "description": "Description", "destination_tag": "Destination tag:", + "device_is_signing": "Device is signing", "dfx_option_description": "Buy crypto with EUR & CHF. For retail and corporate customers in Europe", "didnt_get_code": "Didn't get code?", "digit_pin": "-digit PIN", @@ -394,6 +399,7 @@ "hide_details": "Hide Details", "high_contrast_theme": "High Contrast Theme", "home_screen_settings": "Home screen settings", + "how_to_connect": "How to Connect", "how_to_use": "How to use", "how_to_use_card": "How to use this card", "id": "ID: ", @@ -843,6 +849,7 @@ "spend_key_private": "Spend key (private)", "spend_key_public": "Spend key (public)", "status": "Status: ", + "step": "Step", "string_default": "Default", "subaddress_title": "Subaddress list", "subaddresses": "Subaddresses", diff --git a/res/values/strings_es.arb b/res/values/strings_es.arb index 83d10451a..9e0f742d9 100644 --- a/res/values/strings_es.arb +++ b/res/values/strings_es.arb @@ -181,6 +181,10 @@ "confirmed_tx": "Confirmado", "congratulations": "Felicidades!", "connect_an_existing_yat": "Conectar un Yat existente", + "connect_hw_info_step_1": "Asegúrese de que su dispositivo esté encendido.", + "connect_hw_info_step_2": "Encienda Bluetooth para ambos dispositivos y combínelos desde el teléfono o conecte sus dispositivos con un cable USB.", + "connect_hw_info_step_3": "Desbloquee su dispositivo y navegue a la aplicación de cifrado deseada.", + "connect_hw_info_step_4": "Seleccione su dispositivo en la billetera de pastel y continúe con la configuración.", "connect_yats": "Conectar Yats", "connect_your_hardware_wallet": "Conecta tu billetera de hardware con Bluetooth o USB", "connect_your_hardware_wallet_ios": "Conecta tu billetera de hardware con Bluetooth", @@ -240,6 +244,7 @@ "descending": "Descendente", "description": "Descripción", "destination_tag": "Etiqueta de destino:", + "device_is_signing": "El dispositivo está firmando", "dfx_option_description": "Compre cripto con EUR y CHF. Para clientes minoristas y corporativos en Europa", "didnt_get_code": "¿No recibiste el código?", "digit_pin": "-dígito PIN", @@ -394,6 +399,7 @@ "hide_details": "Ocultar detalles", "high_contrast_theme": "Tema de alto contraste", "home_screen_settings": "Configuración de la pantalla de inicio", + "how_to_connect": "Cómo conectarse", "how_to_use": "Cómo utilizar", "how_to_use_card": "Cómo usar esta tarjeta", "id": "ID: ", @@ -843,6 +849,7 @@ "spend_key_private": "Llave de gasto (privada)", "spend_key_public": "Llave de gasto (pública)", "status": "Estado: ", + "step": "Paso", "string_default": "Por defecto", "subaddress_title": "Lista de subdirecciones", "subaddresses": "Subdirecciones", diff --git a/res/values/strings_fr.arb b/res/values/strings_fr.arb index 214a8db61..a00e8e4cf 100644 --- a/res/values/strings_fr.arb +++ b/res/values/strings_fr.arb @@ -181,6 +181,10 @@ "confirmed_tx": "Confirmé", "congratulations": "Félicitations !", "connect_an_existing_yat": "Connecter un Yat existant", + "connect_hw_info_step_1": "Assurez-vous que votre appareil est allumé.", + "connect_hw_info_step_2": "Allumez Bluetooth pour les deux appareils et associez-les à partir du téléphone, ou connectez vos appareils ensemble à l'aide d'un câble USB.", + "connect_hw_info_step_3": "Déverrouillez votre appareil et accédez à l'application Crypto souhaitée.", + "connect_hw_info_step_4": "Sélectionnez votre appareil dans le portefeuille de gâteaux et continuez avec la configuration.", "connect_yats": "Connecter Yats", "connect_your_hardware_wallet": "Connectez votre portefeuille matériel à l'aide de Bluetooth ou USB", "connect_your_hardware_wallet_ios": "Connectez votre portefeuille matériel à l'aide de Bluetooth", @@ -240,6 +244,7 @@ "descending": "Descendant", "description": "Description", "destination_tag": "Tag de destination :", + "device_is_signing": "L'appareil signale", "dfx_option_description": "Achetez de la crypto avec EUR & CHF. Pour les clients de la vente au détail et des entreprises en Europe", "didnt_get_code": "Vous n'avez pas reçu le code ?", "digit_pin": " chiffres", @@ -394,6 +399,7 @@ "hide_details": "Masquer les détails", "high_contrast_theme": "Thème à contraste élevé", "home_screen_settings": "Paramètres de l'écran d'accueil", + "how_to_connect": "Comment se connecter", "how_to_use": "Comment utiliser", "how_to_use_card": "Comment utiliser cette carte", "id": "ID : ", @@ -842,6 +848,7 @@ "spend_key_private": "Clef de dépense (spend key) (privée)", "spend_key_public": "Clef de dépense (spend key) (publique)", "status": "Statut: ", + "step": "Étape", "string_default": "Défaut", "subaddress_title": "Liste des sous-adresses", "subaddresses": "Sous-adresses", diff --git a/res/values/strings_ha.arb b/res/values/strings_ha.arb index 78ad98680..e4ca7f677 100644 --- a/res/values/strings_ha.arb +++ b/res/values/strings_ha.arb @@ -181,6 +181,10 @@ "confirmed_tx": "Tabbatar", "congratulations": "Taya murna!", "connect_an_existing_yat": "Haɗa Yat da ke akwai", + "connect_hw_info_step_1": "Tabbatar cewa na'urarka tana da iko.", + "connect_hw_info_step_2": "Juya Bluetooth akan na'urorin biyu da kuma haɗa su daga wayar, ko haɗa na'urorinku tare ta amfani da kebul na USB.", + "connect_hw_info_step_3": "Buɗe na'urarka kuma kewaya cikin app ɗin da ake so.", + "connect_hw_info_step_4": "Zaɓi na'urarka a cikin walat walat kuma ci gaba da saiti.", "connect_yats": "Haɗa Yats", "connect_your_hardware_wallet": "Haɗa Wallake Wallware ɗinku ta Bluetooth ko USB", "connect_your_hardware_wallet_ios": "Haɗa kayan aikinku ta Bluetooth", @@ -240,6 +244,7 @@ "descending": "Saukowa", "description": "Bayani", "destination_tag": "Tambarin makoma:", + "device_is_signing": "Na'urar tana shiga", "dfx_option_description": "Buy crypto tare da Eur & Chf. Don Retail da abokan ciniki na kamfanoni a Turai", "didnt_get_code": "Ba a samun code?", "digit_pin": "-lambar PIN", @@ -394,6 +399,7 @@ "hide_details": "Ɓoye cikakkun bayanai", "high_contrast_theme": "Babban Jigon Kwatance", "home_screen_settings": "Saitunan allo na gida", + "how_to_connect": "Yadda ake haɗa", "how_to_use": "Yadda ake amfani da shi", "how_to_use_card": "Yadda ake amfani da wannan kati", "id": "ID:", @@ -844,6 +850,7 @@ "spend_key_private": "makullin biya (maɓallin kalmar sirri)", "spend_key_public": "makullin biya (maɓallin jama'a)", "status": "Matsayi:", + "step": "Taka", "string_default": "Ƙin cika alƙawari", "subaddress_title": "Jagorar subaddress", "subaddresses": "Subaddresses", diff --git a/res/values/strings_hi.arb b/res/values/strings_hi.arb index 6fdd3ce67..03ec07efb 100644 --- a/res/values/strings_hi.arb +++ b/res/values/strings_hi.arb @@ -181,6 +181,10 @@ "confirmed_tx": "की पुष्टि", "congratulations": "बधाई!", "connect_an_existing_yat": "मौजूदा Yat कनेक्ट करें", + "connect_hw_info_step_1": "सुनिश्चित करें कि आपका डिवाइस चालू है।", + "connect_hw_info_step_2": "दोनों उपकरणों के लिए ब्लूटूथ चालू करें और उन्हें फोन से पेयर करें, या एक USB केबल का उपयोग करके अपने डिवाइस को एक साथ कनेक्ट करें।", + "connect_hw_info_step_3": "अपने डिवाइस को अनलॉक करें और वांछित क्रिप्टो ऐप पर नेविगेट करें।", + "connect_hw_info_step_4": "केक वॉलेट में अपने डिवाइस का चयन करें और सेटअप के साथ जारी रखें।", "connect_yats": "कनेक्ट Yats", "connect_your_hardware_wallet": "ब्लूटूथ या यूएसबी का उपयोग करके अपने हार्डवेयर वॉलेट को कनेक्ट करें", "connect_your_hardware_wallet_ios": "ब्लूटूथ का उपयोग करके अपने हार्डवेयर वॉलेट को कनेक्ट करें", @@ -240,6 +244,7 @@ "descending": "अवरोही", "description": "विवरण", "destination_tag": "गंतव्य टैग:", + "device_is_signing": "उपकरण हस्ताक्षर कर रहा है", "dfx_option_description": "EUR और CHF के साथ क्रिप्टो खरीदें। यूरोप में खुदरा और कॉर्पोरेट ग्राहकों के लिए", "didnt_get_code": "कोड नहीं मिला?", "digit_pin": "-अंक पिन", @@ -394,6 +399,7 @@ "hide_details": "विवरण छुपाएं", "high_contrast_theme": "उच्च कंट्रास्ट थीम", "home_screen_settings": "होम स्क्रीन सेटिंग्स", + "how_to_connect": "कनेक्ट कैसे करें", "how_to_use": "का उपयोग कैसे करें", "how_to_use_card": "इस कार्ड का उपयोग कैसे करें", "id": "ID: ", @@ -844,6 +850,7 @@ "spend_key_private": "खर्च करना (निजी)", "spend_key_public": "खर्च करना (जनता)", "status": "स्थिति: ", + "step": "कदम", "string_default": "गलती करना", "subaddress_title": "उपखंड सूची", "subaddresses": "उप पते", diff --git a/res/values/strings_hr.arb b/res/values/strings_hr.arb index 1d1361c19..5261db27f 100644 --- a/res/values/strings_hr.arb +++ b/res/values/strings_hr.arb @@ -181,6 +181,10 @@ "confirmed_tx": "Potvrđen", "congratulations": "Čestitamo!", "connect_an_existing_yat": "Povežite postojeći Yat", + "connect_hw_info_step_1": "Provjerite je li vaš uređaj uključen.", + "connect_hw_info_step_2": "Uključite Bluetooth za oba uređaja i uparite ih s telefona ili spojite svoje uređaje zajedno pomoću USB kabela.", + "connect_hw_info_step_3": "Otključajte svoj uređaj i idite do željene kripto aplikacije.", + "connect_hw_info_step_4": "Odaberite svoj uređaj u novčanici za torte i nastavite s postavljanjem.", "connect_yats": "Povežite Yats", "connect_your_hardware_wallet": "Spojite svoj hardverski novčanik pomoću Bluetooth -a ili USB -a", "connect_your_hardware_wallet_ios": "Spojite svoj hardverski novčanik pomoću Bluetooth -a", @@ -240,6 +244,7 @@ "descending": "Silazni", "description": "Opis", "destination_tag": "Odredišna oznaka:", + "device_is_signing": "Uređaj se potpisuje", "dfx_option_description": "Kupite kriptovalute s Eur & CHF. Za maloprodajne i korporativne kupce u Europi", "didnt_get_code": "Ne dobivate kod?", "digit_pin": "-znamenkasti PIN", @@ -394,6 +399,7 @@ "hide_details": "Sakrij pojedinosti", "high_contrast_theme": "Tema visokog kontrasta", "home_screen_settings": "Postavke početnog zaslona", + "how_to_connect": "Kako se povezati", "how_to_use": "Kako koristiti", "how_to_use_card": "Kako koristiti ovu karticu", "id": "ID: ", @@ -842,6 +848,7 @@ "spend_key_private": "Spend key (privatni)", "spend_key_public": "Spend key (javni)", "status": "Status: ", + "step": "Korak", "string_default": "Zadano", "subaddress_title": "Lista podadresa", "subaddresses": "Podadrese", diff --git a/res/values/strings_hy.arb b/res/values/strings_hy.arb index ea6f235b8..9f37671d9 100644 --- a/res/values/strings_hy.arb +++ b/res/values/strings_hy.arb @@ -181,6 +181,10 @@ "confirmed_tx": "Հաստատված", "congratulations": "Շնորհավորանք!", "connect_an_existing_yat": "Միացրեք գոյություն ունեցող Yat-ը", + "connect_hw_info_step_1": "Համոզվեք, որ ձեր սարքը միացված է:", + "connect_hw_info_step_2": "Միացրեք Bluetooth- ը երկու սարքերի համար, եւ զույգացրեք հեռախոսից կամ միացրեք ձեր սարքերը միասին `օգտագործելով USB մալուխ:", + "connect_hw_info_step_3": "Բացեք ձեր սարքը եւ նավարկեք ցանկալի ծպտյալ հավելվածին:", + "connect_hw_info_step_4": "Ընտրեք ձեր սարքը տորթի դրամապանակում եւ շարունակեք կարգաբերումը:", "connect_yats": "Միացրեք Yat-ները", "connect_your_hardware_wallet": "Միացրեք ձեր ապարատային դրամապանակը Bluetooth-ի կամ USB-ի միջոցով", "connect_your_hardware_wallet_ios": "Միացրեք ձեր ապարատային դրամապանակը Bluetooth-ի միջոցով", @@ -240,6 +244,7 @@ "descending": "Նվազող", "description": "Նկարագրություն", "destination_tag": "Նպատակակետի պիտակ:", + "device_is_signing": "Սարքը ստորագրում է", "dfx_option_description": "Գնեք կրիպտոարժույթ EUR և CHF: Կորպորատիվ և մանրածախ հաճախորդների համար Եվրոպայում", "didnt_get_code": "Չեք ստացել կոդը?", "digit_pin": "-նիշ ՊԻՆ", @@ -394,6 +399,7 @@ "hide_details": "Թաքցնել մանրամասները", "high_contrast_theme": "Բարձր հակադրության տեսք", "home_screen_settings": "Գլխավոր էկրանի կարգավորումներ", + "how_to_connect": "Ինչպես միացնել", "how_to_use": "Ինչպես օգտագործել", "how_to_use_card": "Ինչպես օգտագործել այս քարտը", "id": "ID: ", @@ -840,6 +846,7 @@ "spend_key_private": "Վճարման բանալի (գախտնի)", "spend_key_public": "Վճարման բանալի (հանրային)", "status": "Կարգավիճակ՝ ", + "step": "Քայլ", "string_default": "Լռելայն", "subaddress_title": "Ենթահասցեների ցանկ", "subaddresses": "Ենթահասցեներ", diff --git a/res/values/strings_id.arb b/res/values/strings_id.arb index 888ba885c..6b1cc7286 100644 --- a/res/values/strings_id.arb +++ b/res/values/strings_id.arb @@ -181,6 +181,10 @@ "confirmed_tx": "Dikonfirmasi", "congratulations": "Selamat!", "connect_an_existing_yat": "Hubungkan Yat yang ada", + "connect_hw_info_step_1": "Pastikan perangkat Anda didukung.", + "connect_hw_info_step_2": "Nyalakan Bluetooth untuk kedua perangkat dan pasangkan dari telepon, atau hubungkan perangkat Anda bersama -sama menggunakan kabel USB.", + "connect_hw_info_step_3": "Buka kunci perangkat Anda dan arahkan ke aplikasi crypto yang diinginkan.", + "connect_hw_info_step_4": "Pilih perangkat Anda di dompet kue dan lanjutkan dengan pengaturan.", "connect_yats": "Hubungkan Yats", "connect_your_hardware_wallet": "Hubungkan dompet perangkat keras Anda menggunakan Bluetooth atau USB", "connect_your_hardware_wallet_ios": "Hubungkan dompet perangkat keras Anda menggunakan Bluetooth", @@ -240,6 +244,7 @@ "descending": "Menurun", "description": "Keterangan", "destination_tag": "Tag tujuan:", + "device_is_signing": "Perangkat sedang menandatangani", "dfx_option_description": "Beli crypto dengan EUR & CHF. Untuk pelanggan ritel dan perusahaan di Eropa", "didnt_get_code": "Tidak mendapatkan kode?", "digit_pin": "-digit PIN", @@ -394,6 +399,7 @@ "hide_details": "Sembunyikan Rincian", "high_contrast_theme": "Tema Kontras Tinggi", "home_screen_settings": "Pengaturan layar awal", + "how_to_connect": "Cara terhubung", "how_to_use": "Cara Penggunaan", "how_to_use_card": "Bagaimana menggunakan kartu ini", "id": "ID: ", @@ -845,6 +851,7 @@ "spend_key_private": "Kunci pengeluaran (privat)", "spend_key_public": "Kunci pengeluaran (publik)", "status": "Status: ", + "step": "Melangkah", "string_default": "Bawaan", "subaddress_title": "Daftar sub-alamat", "subaddresses": "Sub-alamat", diff --git a/res/values/strings_it.arb b/res/values/strings_it.arb index 10fe11d76..060953123 100644 --- a/res/values/strings_it.arb +++ b/res/values/strings_it.arb @@ -181,6 +181,10 @@ "confirmed_tx": "Confermato", "congratulations": "Congratulazioni!", "connect_an_existing_yat": "Collegare un Yat esistente", + "connect_hw_info_step_1": "Assicurati che il tuo dispositivo sia acceso.", + "connect_hw_info_step_2": "Accendi Bluetooth per entrambi i dispositivi e abbinali dal telefono o collega i dispositivi utilizzando un cavo USB.", + "connect_hw_info_step_3": "Sblocca il dispositivo e naviga nell'app crittografica desiderata.", + "connect_hw_info_step_4": "Seleziona il tuo dispositivo nel portafoglio Cake e continua con l'installazione.", "connect_yats": "Connetti Yats", "connect_your_hardware_wallet": "Collega il tuo portafoglio hardware tramite Bluetooth o USB", "connect_your_hardware_wallet_ios": "Collega il tuo portafoglio hardware tramite Bluetooth", @@ -240,6 +244,7 @@ "descending": "Discendente", "description": "Descrizione", "destination_tag": "Tag destinazione:", + "device_is_signing": "Il dispositivo sta firmando", "dfx_option_description": "Acquista Crypto con EUR & CHF. Per i clienti al dettaglio e aziendali in Europa", "didnt_get_code": "Non hai ricevuto il codice?", "digit_pin": "-cifre PIN", @@ -394,6 +399,7 @@ "hide_details": "Nascondi dettagli", "high_contrast_theme": "Tema ad alto contrasto", "home_screen_settings": "Impostazioni della schermata iniziale", + "how_to_connect": "Come connettersi", "how_to_use": "Come usare", "how_to_use_card": "Come usare questa carta", "id": "ID: ", @@ -843,6 +849,7 @@ "spend_key_private": "Chiave di spesa (privata)", "spend_key_public": "Chiave di spesa (pubblica)", "status": "Stato: ", + "step": "Fare un passo", "string_default": "Predefinito", "subaddress_title": "Lista sottoindirizzi", "subaddresses": "Sottoindirizzi", diff --git a/res/values/strings_ja.arb b/res/values/strings_ja.arb index e4911a1b8..85a4d9b3b 100644 --- a/res/values/strings_ja.arb +++ b/res/values/strings_ja.arb @@ -181,6 +181,10 @@ "confirmed_tx": "確認済み", "congratulations": "おめでとうございます!", "connect_an_existing_yat": "既存のYatを接続します", + "connect_hw_info_step_1": "デバイスが電源を入れていることを確認してください。", + "connect_hw_info_step_2": "両方のデバイスのBluetoothをオンにして電話からペアリングするか、USBケーブルを使用してデバイスを一緒に接続します。", + "connect_hw_info_step_3": "デバイスのロックを解除し、目的のCryptoアプリに移動します。", + "connect_hw_info_step_4": "ケーキウォレットでデバイスを選択し、セットアップを続行します。", "connect_yats": "Yatsを接続します", "connect_your_hardware_wallet": "BluetoothまたはUSBを使用して、ハードウェアウォレットを接続します", "connect_your_hardware_wallet_ios": "Bluetoothを使用してハードウェアウォレットを接続します", @@ -240,6 +244,7 @@ "descending": "下降", "description": "説明", "destination_tag": "宛先タグ:", + "device_is_signing": "デバイスが署名しています", "dfx_option_description": "EUR&CHFで暗号を購入します。ヨーロッパの小売および企業の顧客向け", "didnt_get_code": "コードを取得しませんか?", "digit_pin": "桁ピン", @@ -395,6 +400,7 @@ "hide_details": "詳細を非表示", "high_contrast_theme": "ハイコントラストテーマ", "home_screen_settings": "ホーム画面の設定", + "how_to_connect": "接続方法", "how_to_use": "使い方", "how_to_use_card": "このカードの使用方法", "id": "ID: ", @@ -843,6 +849,7 @@ "spend_key_private": "キーを使う (プライベート)", "spend_key_public": "キーを使う (パブリック)", "status": "状態: ", + "step": "ステップ", "string_default": "デフォルト", "subaddress_title": "サブアドレス一覧", "subaddresses": "サブアドレス", diff --git a/res/values/strings_ko.arb b/res/values/strings_ko.arb index b32d29176..4a6d809db 100644 --- a/res/values/strings_ko.arb +++ b/res/values/strings_ko.arb @@ -181,6 +181,10 @@ "confirmed_tx": "확정됨", "congratulations": "축하합니다!", "connect_an_existing_yat": "기존 Yat 연결", + "connect_hw_info_step_1": "장치의 전원이 켜져 있는지 확인하십시오.", + "connect_hw_info_step_2": "두 장치 모두에 Bluetooth를 켜고 전화에서 페어링하거나 USB 케이블을 사용하여 장치를 함께 연결하십시오.", + "connect_hw_info_step_3": "장치를 잠금 해제하고 원하는 암호화 앱으로 이동하십시오.", + "connect_hw_info_step_4": "케이크 지갑에서 장치를 선택하고 설정을 계속하십시오.", "connect_yats": "Yat 연결", "connect_your_hardware_wallet": "블루투스 또는 USB를 사용하여 하드웨어 지갑 연결", "connect_your_hardware_wallet_ios": "블루투스를 사용하여 하드웨어 지갑 연결", @@ -240,6 +244,7 @@ "descending": "내림차순", "description": "설명", "destination_tag": "목적지 태그:", + "device_is_signing": "장치가 서명 중입니다", "dfx_option_description": "EUR 및 CHF로 암호화폐 구매. 유럽의 개인 및 기업 고객 대상", "didnt_get_code": "코드를 받지 못했나요?", "digit_pin": "자리 PIN", @@ -394,6 +399,7 @@ "hide_details": "세부 정보 숨기기", "high_contrast_theme": "고대비 테마", "home_screen_settings": "홈 화면 설정", + "how_to_connect": "연결 방법", "how_to_use": "사용 방법", "how_to_use_card": "이 카드 사용 방법", "id": "ID: ", @@ -843,6 +849,7 @@ "spend_key_private": "지출 키 (개인)", "spend_key_public": "지출 키 (공개)", "status": "상태: ", + "step": "단계", "string_default": "기본값", "subaddress_title": "하위 주소 목록", "subaddresses": "하위 주소", diff --git a/res/values/strings_my.arb b/res/values/strings_my.arb index c0f12501c..710b4926e 100644 --- a/res/values/strings_my.arb +++ b/res/values/strings_my.arb @@ -181,6 +181,10 @@ "confirmed_tx": "အတည်ပြုသည်", "congratulations": "ဂုဏ်ယူပါသည်။", "connect_an_existing_yat": "ရှိပြီးသား Yat ကို ချိတ်ဆက်ပါ။", + "connect_hw_info_step_1": "သင်၏ device ကိုသေချာအောင်လုပ်ပါ။", + "connect_hw_info_step_2": "ကိရိယာနှစ်ခုလုံးအတွက် Bluetooth ကိုဖွင့ ်. ဖုန်းမှတွဲပါ, သို့မဟုတ်သင်၏ကိရိယာများကို USB ကြိုးဖြင့်ချိတ်ဆက်ပါ။", + "connect_hw_info_step_3": "သင်၏ device ကိုသော့ဖွင့်ပြီးလိုချင်သော crypto app သို့သွားပါ။", + "connect_hw_info_step_4": "Cake Wallet တွင်သင်၏ device ကိုရွေးချယ်ပြီး setup ကိုဆက်လုပ်ပါ။", "connect_yats": "Yats ကိုချိတ်ဆက်ပါ။", "connect_your_hardware_wallet": "သင်၏ hardware ပိုက်ဆံအိတ်ကို Bluetooth သို့မဟုတ် USB ကို သုံး. ချိတ်ဆက်ပါ", "connect_your_hardware_wallet_ios": "သင်၏ hardware ပိုက်ဆံအိတ်ကို Bluetooth ကို အသုံးပြု. ချိတ်ဆက်ပါ", @@ -240,6 +244,7 @@ "descending": "ဆင်း", "description": "ဖော်ပြချက်", "destination_tag": "ခရီးဆုံးအမှတ်-", + "device_is_signing": "ကိရိယာလက်မှတ်ထိုးနေသည်", "dfx_option_description": "Crypto ကို EUR & CHF ဖြင့် 0 ယ်ပါ။ လက်လီရောင်းဝယ်မှုနှင့်ဥရောပရှိကော်ပိုရိတ်ဖောက်သည်များအတွက်", "didnt_get_code": "ကုဒ်ကို မရဘူးလား?", "digit_pin": "-ဂဏန်း PIN", @@ -394,6 +399,7 @@ "hide_details": "အသေးစိတ်ကို ဝှက်ပါ။", "high_contrast_theme": "အလင်းအမှောင် မြင့်မားသော အပြင်အဆင်", "home_screen_settings": "ပင်မစခရင် ဆက်တင်များ", + "how_to_connect": "ဘယ်လိုချိတ်ဆက်ရမလဲ", "how_to_use": "အသုံးပြုနည်း", "how_to_use_card": "ဒီကတ်ကို ဘယ်လိုသုံးမလဲ။", "id": "ID:", @@ -842,6 +848,7 @@ "spend_key_private": "သော့သုံးရန် (သီးသန့်)", "spend_key_public": "သုံးစွဲရန်သော့ (အများပြည်သူ)", "status": "အခြေအနေ:", + "step": "လှမ်း", "string_default": "ပျက်ကွက်ခြင်း", "subaddress_title": "လိပ်စာစာရင်း", "subaddresses": "လိပ်စာများ", diff --git a/res/values/strings_nl.arb b/res/values/strings_nl.arb index 8765d5a07..e7a0d27ac 100644 --- a/res/values/strings_nl.arb +++ b/res/values/strings_nl.arb @@ -181,6 +181,10 @@ "confirmed_tx": "Bevestigd", "congratulations": "gefeliciteerd!", "connect_an_existing_yat": "Verbind een bestaande Yat", + "connect_hw_info_step_1": "Zorg ervoor dat uw apparaat is ingeschakeld.", + "connect_hw_info_step_2": "Zet Bluetooth aan voor beide apparaten en combineer ze van de telefoon, of sluit uw apparaten samen met een USB -kabel.", + "connect_hw_info_step_3": "Ontgrendel uw apparaat en navigeer naar de gewenste crypto -app.", + "connect_hw_info_step_4": "Selecteer uw apparaat in cake -portemonnee en ga verder met de opstelling.", "connect_yats": "Verbind Yats", "connect_your_hardware_wallet": "Sluit uw hardware -portemonnee aan met Bluetooth of USB", "connect_your_hardware_wallet_ios": "Sluit uw hardware -portemonnee aan met Bluetooth", @@ -240,6 +244,7 @@ "descending": "Aflopend", "description": "Beschrijving", "destination_tag": "Bestemmingstag:", + "device_is_signing": "Apparaat ondertekent", "dfx_option_description": "Koop crypto met EUR & CHF. Voor retail- en zakelijke klanten in Europa", "didnt_get_code": "Geen code?", "digit_pin": "-cijferige PIN", @@ -394,6 +399,7 @@ "hide_details": "Details verbergen", "high_contrast_theme": "Thema met hoog contrast", "home_screen_settings": "Instellingen voor het startscherm", + "how_to_connect": "Hoe verbinding te maken", "how_to_use": "Hoe te gebruiken", "how_to_use_card": "Hoe deze kaart te gebruiken", "id": "ID: ", @@ -842,6 +848,7 @@ "spend_key_private": "Sleutel uitgeven (privaat)", "spend_key_public": "Sleutel uitgeven (openbaar)", "status": "Staat: ", + "step": "Stap", "string_default": "Standaard", "subaddress_title": "Subadreslijst", "subaddresses": "Subadressen", diff --git a/res/values/strings_pl.arb b/res/values/strings_pl.arb index 2287e6b90..c7994ddd1 100644 --- a/res/values/strings_pl.arb +++ b/res/values/strings_pl.arb @@ -181,6 +181,10 @@ "confirmed_tx": "Potwierdzony", "congratulations": "gratulacje!", "connect_an_existing_yat": "Podłącz istniejący Yat", + "connect_hw_info_step_1": "Upewnij się, że urządzenie jest włączone.", + "connect_hw_info_step_2": "Włącz Bluetooth dla obu urządzeń i sparuj je z telefonu lub podłącz urządzenia razem za pomocą kabla USB.", + "connect_hw_info_step_3": "Odblokuj urządzenie i przejdź do żądanej aplikacji Crypto.", + "connect_hw_info_step_4": "Wybierz urządzenie w portfelu ciasta i kontynuuj konfigurację.", "connect_yats": "Połącz Yats", "connect_your_hardware_wallet": "Podłącz portfel sprzętowy za pomocą Bluetooth lub USB", "connect_your_hardware_wallet_ios": "Podłącz portfel sprzętowy za pomocą Bluetooth", @@ -240,6 +244,7 @@ "descending": "Malejąco", "description": "Opis", "destination_tag": "Tag docelowy:", + "device_is_signing": "Urządzenie podpisuje", "dfx_option_description": "Kup krypto za EUR & CHF. Dla klientów prywatnych i korporacyjnych w Europie", "didnt_get_code": "Nie dostałeś kodu?", "digit_pin": "-znakowy PIN", @@ -394,6 +399,7 @@ "hide_details": "Ukryj szczegóły", "high_contrast_theme": "Motyw o wysokim kontraście", "home_screen_settings": "Ustawienia ekranu głównego", + "how_to_connect": "Jak połączyć się", "how_to_use": "Jak używać", "how_to_use_card": "Jak korzystać z tej karty?", "id": "ID: ", @@ -842,6 +848,7 @@ "spend_key_private": "Klucz prywatny", "spend_key_public": "Klucz publiczny", "status": "Status: ", + "step": "Krok", "string_default": "Domyślny", "subaddress_title": "Lista podadresów", "subaddresses": "Podadresy", diff --git a/res/values/strings_pt.arb b/res/values/strings_pt.arb index a453046d5..7dcd8dec1 100644 --- a/res/values/strings_pt.arb +++ b/res/values/strings_pt.arb @@ -181,6 +181,10 @@ "confirmed_tx": "Confirmado", "congratulations": "Parabéns!", "connect_an_existing_yat": "Conecte um Yat existente", + "connect_hw_info_step_1": "Verifique se o seu dispositivo está ligado.", + "connect_hw_info_step_2": "Ligue o Bluetooth para os dois dispositivos e emparelhe -os do telefone ou conecte seus dispositivos usando um cabo USB.", + "connect_hw_info_step_3": "Desbloqueie seu dispositivo e navegue até o aplicativo Crypto desejado.", + "connect_hw_info_step_4": "Selecione seu dispositivo na carteira de bolo e continue com a configuração.", "connect_yats": "Connect Yats", "connect_your_hardware_wallet": "Conecte sua carteira de hardware usando Bluetooth ou USB", "connect_your_hardware_wallet_ios": "Conecte sua carteira de hardware usando o Bluetooth", @@ -240,6 +244,7 @@ "descending": "descendente", "description": "Descrição", "destination_tag": "Tag de destino:", + "device_is_signing": "O dispositivo está assinando", "dfx_option_description": "Compre criptografia com EUR & CHF. Para clientes de varejo e corporativo na Europa", "didnt_get_code": "Não recebeu o código?", "digit_pin": "dígitos", @@ -394,6 +399,7 @@ "hide_details": "Ocultar detalhes", "high_contrast_theme": "Tema de alto contraste", "home_screen_settings": "Configurações da tela inicial", + "how_to_connect": "Como conectar", "how_to_use": "Como usar", "how_to_use_card": "Como usar este cartão", "id": "ID: ", @@ -844,6 +850,7 @@ "spend_key_private": "Chave de gastos (privada)", "spend_key_public": "Chave de gastos (pública)", "status": "Status: ", + "step": "Etapa", "string_default": "Padrão", "subaddress_title": "Sub-endereços", "subaddresses": "Sub-endereços", diff --git a/res/values/strings_ru.arb b/res/values/strings_ru.arb index 49590af93..161eedde4 100644 --- a/res/values/strings_ru.arb +++ b/res/values/strings_ru.arb @@ -181,6 +181,10 @@ "confirmed_tx": "Подтвержденный", "congratulations": "Поздравляем!", "connect_an_existing_yat": "Подключить существующий Yat", + "connect_hw_info_step_1": "Убедитесь, что ваше устройство включено.", + "connect_hw_info_step_2": "Включите Bluetooth для обоих устройств и соедините их с телефона или соедините свои устройства вместе с помощью USB -кабеля.", + "connect_hw_info_step_3": "Разблокируйте свое устройство и перейдите к желаемому крипто -приложению.", + "connect_hw_info_step_4": "Выберите свое устройство в кошельке для торта и продолжайте с настройкой.", "connect_yats": "Подключить Yats", "connect_your_hardware_wallet": "Подключите свой аппаратный кошелек с помощью Bluetooth или USB", "connect_your_hardware_wallet_ios": "Подключите свой аппаратный кошелек с помощью Bluetooth", @@ -240,6 +244,7 @@ "descending": "Нисходящий", "description": "Описание", "destination_tag": "Целевой тег:", + "device_is_signing": "Устройство подписывает", "dfx_option_description": "Купить крипто с Eur & CHF. Для розничных и корпоративных клиентов в Европе", "didnt_get_code": "Не получить код?", "digit_pin": "-значный PIN", @@ -394,6 +399,7 @@ "hide_details": "Скрыть детали", "high_contrast_theme": "Высококонтрастная тема", "home_screen_settings": "Настройки главного экрана", + "how_to_connect": "Как подключиться", "how_to_use": "Как использовать", "how_to_use_card": "Как использовать эту карту", "id": "ID: ", @@ -843,6 +849,7 @@ "spend_key_private": "Приватный ключ траты", "spend_key_public": "Публичный ключ траты", "status": "Статус: ", + "step": "Шаг", "string_default": "По умолчанию", "subaddress_title": "Список субадресов", "subaddresses": "Субадреса", diff --git a/res/values/strings_th.arb b/res/values/strings_th.arb index f09dda050..d08fef554 100644 --- a/res/values/strings_th.arb +++ b/res/values/strings_th.arb @@ -181,6 +181,10 @@ "confirmed_tx": "ซึ่งยืนยันแล้ว", "congratulations": "ขอแสดงความยินดี!", "connect_an_existing_yat": "เชื่อมต่อ Yat ที่มีอยู่", + "connect_hw_info_step_1": "ตรวจสอบให้แน่ใจว่าอุปกรณ์ของคุณเปิดใช้งาน", + "connect_hw_info_step_2": "เปิดบลูทู ธ สำหรับอุปกรณ์ทั้งสองและจับคู่จากโทรศัพท์หรือเชื่อมต่ออุปกรณ์ของคุณเข้าด้วยกันโดยใช้สายเคเบิล USB", + "connect_hw_info_step_3": "ปลดล็อกอุปกรณ์ของคุณและนำทางไปยังแอพ crypto ที่ต้องการ", + "connect_hw_info_step_4": "เลือกอุปกรณ์ของคุณในกระเป๋าเงินเค้กและดำเนินการติดตั้งต่อไป", "connect_yats": "เชื่อมต่อ Yats", "connect_your_hardware_wallet": "เชื่อมต่อกระเป๋าเงินฮาร์ดแวร์ของคุณโดยใช้บลูทู ธ หรือ USB", "connect_your_hardware_wallet_ios": "เชื่อมต่อกระเป๋าเงินฮาร์ดแวร์ของคุณโดยใช้บลูทู ธ", @@ -240,6 +244,7 @@ "descending": "ลงมา", "description": "คำอธิบาย", "destination_tag": "แท็กปลายทาง:", + "device_is_signing": "อุปกรณ์กำลังลงนาม", "dfx_option_description": "ซื้อ crypto ด้วย Eur & CHF สำหรับลูกค้ารายย่อยและลูกค้าในยุโรป", "didnt_get_code": "ไม่ได้รับรหัส?", "digit_pin": "-หลัก PIN", @@ -394,6 +399,7 @@ "hide_details": "ซ่อนรายละเอียด", "high_contrast_theme": "ธีมความคมชัดสูง", "home_screen_settings": "การตั้งค่าหน้าจอหลัก", + "how_to_connect": "วิธีการเชื่อมต่อ", "how_to_use": "วิธีใช้", "how_to_use_card": "วิธีใช้บัตรนี้", "id": "ID: ", @@ -842,6 +848,7 @@ "spend_key_private": "คีย์จ่าย (ส่วนตัว)", "spend_key_public": "คีย์จ่าย (สาธารณะ)", "status": "สถานะ: ", + "step": "ขั้นตอน", "string_default": "ค่าเริ่มต้น", "subaddress_title": "รายการที่อยู่ย่อย", "subaddresses": "ที่อยู่ย่อย", diff --git a/res/values/strings_tl.arb b/res/values/strings_tl.arb index bb5e6a719..4405c9daf 100644 --- a/res/values/strings_tl.arb +++ b/res/values/strings_tl.arb @@ -181,6 +181,10 @@ "confirmed_tx": "Nakumpirma", "congratulations": "Congratulations!", "connect_an_existing_yat": "Ikonekta ang isang umiiral na Yat", + "connect_hw_info_step_1": "Siguraduhin na ang iyong aparato ay pinapagana.", + "connect_hw_info_step_2": "Lumiko ang Bluetooth para sa parehong mga aparato at ipares ang mga ito mula sa telepono, o ikonekta ang iyong mga aparato nang magkasama gamit ang isang USB cable.", + "connect_hw_info_step_3": "I -unlock ang iyong aparato at mag -navigate sa nais na crypto app.", + "connect_hw_info_step_4": "Piliin ang iyong aparato sa cake wallet at magpatuloy sa pag -setup.", "connect_yats": "Ikonekta sa Yats", "connect_your_hardware_wallet": "Ikonekta ang iyong hardware wallet gamit ang Bluetooth o USB", "connect_your_hardware_wallet_ios": "Ikonekta ang iyong wallet gamit ang Bluetooth", @@ -240,6 +244,7 @@ "descending": "Pababang", "description": "Paglalarawan", "destination_tag": "Tag ng patutunguhan:", + "device_is_signing": "Nag -sign ang aparato", "dfx_option_description": "Bumili ng crypto kasama ang EUR & CHF. Para sa mga retail customer at corporate customer sa Europe", "didnt_get_code": "Hindi nakuha ang code?", "digit_pin": "-digit PIN", @@ -394,6 +399,7 @@ "hide_details": "Itago ang mga detalye", "high_contrast_theme": "High Contrast Theme", "home_screen_settings": "Mga setting ng home screen", + "how_to_connect": "Paano kumonekta", "how_to_use": "Paano gamitin", "how_to_use_card": "Paano gamitin ang card na ito", "id": "ID: ", @@ -842,6 +848,7 @@ "spend_key_private": "Spend key (private)", "spend_key_public": "Spend key (public)", "status": "Katayuan: ", + "step": "Hakbang", "string_default": "Default", "subaddress_title": "Listahan ng Subaddress", "subaddresses": "Mga Subaddress", diff --git a/res/values/strings_tr.arb b/res/values/strings_tr.arb index 8c603793a..8793d1170 100644 --- a/res/values/strings_tr.arb +++ b/res/values/strings_tr.arb @@ -181,6 +181,10 @@ "confirmed_tx": "Onaylanmış", "congratulations": "Tebrikler!", "connect_an_existing_yat": "Mevcut bir Yat'ı bağla", + "connect_hw_info_step_1": "Cihazınızın açıldığından emin olun.", + "connect_hw_info_step_2": "Bluetooth'u her iki cihaz için açın ve telefondan eşleştirin veya bir USB kablosu kullanarak cihazlarınızı birbirine bağlayın.", + "connect_hw_info_step_3": "Cihazınızın kilidini açın ve istenen kripto uygulamasına gidin.", + "connect_hw_info_step_4": "Cihazınızı kek cüzdanında seçin ve kuruluma devam edin.", "connect_yats": "Yat'lara bağlan", "connect_your_hardware_wallet": "Bluetooth veya USB kullanarak donanım cüzdanınızı bağlayın", "connect_your_hardware_wallet_ios": "Bluetooth kullanarak donanım cüzdanınızı bağlayın", @@ -240,6 +244,7 @@ "descending": "Azalan", "description": "Tanım", "destination_tag": "Hedef Etiketi:", + "device_is_signing": "Cihaz imzalıyor", "dfx_option_description": "Eur & chf ile kripto satın alın. Avrupa'daki perakende ve kurumsal müşteriler için", "didnt_get_code": "Kod gelmedi mi?", "digit_pin": " haneli PIN", @@ -394,6 +399,7 @@ "hide_details": "Detayları Gizle", "high_contrast_theme": "Yüksek Kontrastlı Tema", "home_screen_settings": "Ana ekran ayarları", + "how_to_connect": "Nasıl bağlanır", "how_to_use": "Nasıl kullanılır", "how_to_use_card": "Bu kart nasıl kullanılır", "id": "ID: ", @@ -842,6 +848,7 @@ "spend_key_private": "Harcama anahtarı (özel)", "spend_key_public": "Harcama anahtarı (genel)", "status": "Durum: ", + "step": "Adım", "string_default": "Varsayılan", "subaddress_title": "Alt adres listesi", "subaddresses": "Alt adresler", diff --git a/res/values/strings_uk.arb b/res/values/strings_uk.arb index 998f9abf7..cc8ee2f12 100644 --- a/res/values/strings_uk.arb +++ b/res/values/strings_uk.arb @@ -181,6 +181,10 @@ "confirmed_tx": "Підтверджений", "congratulations": "Вітаємо!", "connect_an_existing_yat": "Підключити існуючий Yat", + "connect_hw_info_step_1": "Переконайтесь, що ваш пристрій працює.", + "connect_hw_info_step_2": "Увімкніть Bluetooth для обох пристроїв і з’єднайте їх з телефону або підключіть свої пристрої разом за допомогою USB -кабелю.", + "connect_hw_info_step_3": "Розблокуйте свій пристрій і перейдіть до потрібного програми Crypto.", + "connect_hw_info_step_4": "Виберіть свій пристрій у гаманці тортів і продовжуйте налаштування.", "connect_yats": "Підключіть Yats", "connect_your_hardware_wallet": "Підключіть апаратний гаманець за допомогою Bluetooth або USB", "connect_your_hardware_wallet_ios": "Підключіть апаратний гаманець за допомогою Bluetooth", @@ -240,6 +244,7 @@ "descending": "Низхідний", "description": "опис", "destination_tag": "Тег призначення:", + "device_is_signing": "Пристрій підписується", "dfx_option_description": "Купуйте криптовалюту з EUR & CHF. Для роздрібних та корпоративних клієнтів у Європі", "didnt_get_code": "Не отримали код?", "digit_pin": "-значний PIN", @@ -394,6 +399,7 @@ "hide_details": "Приховати деталі", "high_contrast_theme": "Тема високої контрастності", "home_screen_settings": "Налаштування головного екрана", + "how_to_connect": "Як підключитися", "how_to_use": "Як використовувати", "how_to_use_card": "Як використовувати цю картку", "id": "ID: ", @@ -843,6 +849,7 @@ "spend_key_private": "Приватний ключ витрати", "spend_key_public": "Публічний ключ витрати", "status": "Статус: ", + "step": "Крок", "string_default": "За замовчуванням", "subaddress_title": "Список Субадрес", "subaddresses": "Субадреси", diff --git a/res/values/strings_ur.arb b/res/values/strings_ur.arb index 87ea8ba0a..e63693150 100644 --- a/res/values/strings_ur.arb +++ b/res/values/strings_ur.arb @@ -181,6 +181,10 @@ "confirmed_tx": "تصدیق", "congratulations": "مبارک ہو!", "connect_an_existing_yat": "ایک موجودہ Yat کو جوڑیں۔", + "connect_hw_info_step_1": "اس بات کو یقینی بنائیں کہ آپ کا آلہ چل رہا ہے۔", + "connect_hw_info_step_2": "دونوں آلات کے لئے بلوٹوتھ کو آن کریں اور فون سے ان کو جوڑیں ، یا USB کیبل کا استعمال کرکے اپنے آلات کو ایک ساتھ جوڑیں۔", + "connect_hw_info_step_3": "اپنے آلے کو انلاک کریں اور مطلوبہ کریپٹو ایپ پر جائیں۔", + "connect_hw_info_step_4": "اپنے آلے کو کیک پرس میں منتخب کریں اور سیٹ اپ کے ساتھ جاری رکھیں۔", "connect_yats": "Yats کو جوڑیں۔", "connect_your_hardware_wallet": "بلوٹوتھ یا USB کا استعمال کرتے ہوئے اپنے ہارڈ ویئر پرس کو مربوط کریں", "connect_your_hardware_wallet_ios": "بلوٹوتھ کا استعمال کرتے ہوئے اپنے ہارڈ ویئر پرس کو جوڑیں", @@ -240,6 +244,7 @@ "descending": "اترتے ہوئے", "description": "ﻞﯿﺼﻔﺗ", "destination_tag": "منزل کا ٹیگ:", + "device_is_signing": "ڈیوائس پر دستخط کر رہے ہیں", "dfx_option_description": "یورو اور سی ایچ ایف کے ساتھ کرپٹو خریدیں۔ یورپ میں خوردہ اور کارپوریٹ صارفین کے لئے", "didnt_get_code": "کوڈ نہیں ملتا؟", "digit_pin": "-ہندسوں کا پن", @@ -394,6 +399,7 @@ "hide_details": "تفصیلات چھپائیں۔", "high_contrast_theme": "ہائی کنٹراسٹ تھیم", "home_screen_settings": "ہوم اسکرین کی ترتیبات", + "how_to_connect": "کیسے مربوط ہوں", "how_to_use": " ﮧﻘﯾﺮﻃ ﺎﮐ ﮯﻧﺮﮐ ﻝﺎﻤﻌﺘﺳﺍ", "how_to_use_card": "اس کارڈ کو استعمال کرنے کا طریقہ", "id": "ID:", @@ -844,6 +850,7 @@ "spend_key_private": "خرچ کی کلید (نجی)", "spend_key_public": "خرچ کی کلید (عوامی)", "status": "حالت:", + "step": "مرحلہ", "string_default": "پہلے سے طے شدہ", "subaddress_title": "ذیلی ایڈریس کی فہرست", "subaddresses": "ذیلی پتے", diff --git a/res/values/strings_vi.arb b/res/values/strings_vi.arb index 20347d02a..ddf5a5587 100644 --- a/res/values/strings_vi.arb +++ b/res/values/strings_vi.arb @@ -180,6 +180,10 @@ "confirmed_tx": "Đã xác nhận", "congratulations": "Chúc mừng!", "connect_an_existing_yat": "Kết nối Yat hiện có", + "connect_hw_info_step_1": "Hãy chắc chắn rằng thiết bị của bạn được bật nguồn.", + "connect_hw_info_step_2": "Bật Bluetooth cho cả hai thiết bị và ghép chúng từ điện thoại hoặc kết nối các thiết bị của bạn với nhau bằng cáp USB.", + "connect_hw_info_step_3": "Mở khóa thiết bị của bạn và điều hướng đến ứng dụng tiền điện tử mong muốn.", + "connect_hw_info_step_4": "Chọn thiết bị của bạn trong ví bánh và tiếp tục với thiết lập.", "connect_yats": "Kết nối Yats", "connect_your_hardware_wallet": "Kết nối ví phần cứng của bạn bằng Bluetooth hoặc USB", "connect_your_hardware_wallet_ios": "Kết nối ví phần cứng của bạn bằng Bluetooth", @@ -239,6 +243,7 @@ "descending": "Giảm dần", "description": "Mô tả", "destination_tag": "Thẻ đích:", + "device_is_signing": "Thiết bị đang ký", "dfx_option_description": "Mua tiền điện tử bằng EUR & CHF. Dành cho khách hàng bán lẻ và doanh nghiệp tại Châu Âu", "didnt_get_code": "Không nhận được mã?", "digit_pin": "Mã PIN - số", @@ -393,6 +398,7 @@ "hide_details": "Ẩn chi tiết", "high_contrast_theme": "Chủ đề độ tương phản cao", "home_screen_settings": "Cài đặt màn hình chính", + "how_to_connect": "Cách kết nối", "how_to_use": "Cách sử dụng", "how_to_use_card": "Cách sử dụng thẻ này", "id": "ID: ", @@ -839,6 +845,7 @@ "spend_key_private": "Khóa chi tiêu (riêng tư)", "spend_key_public": "Khóa chi tiêu (công khai)", "status": "Trạng thái: ", + "step": "Bước chân", "string_default": "Mặc định", "subaddress_title": "Danh sách địa chỉ phụ", "subaddresses": "Địa chỉ phụ", diff --git a/res/values/strings_yo.arb b/res/values/strings_yo.arb index 741538428..18e5ba83a 100644 --- a/res/values/strings_yo.arb +++ b/res/values/strings_yo.arb @@ -181,6 +181,10 @@ "confirmed_tx": "Jẹrisi", "congratulations": "Ẹ kúuṣẹ́ ooo!", "connect_an_existing_yat": "So Yat wíwà", + "connect_hw_info_step_1": "Rii daju pe ẹrọ rẹ ni agbara lori.", + "connect_hw_info_step_2": "Tan Bluetooth lori fun awọn ẹrọ mejeeji ki o pa wọn kuro ninu foonu, tabi so awọn ẹrọ rẹ pọ pẹlu lilo okun USB.", + "connect_hw_info_step_3": "Ṣii ẹrọ rẹ ki o lọ kiri si ohun elo Crypto ti o fẹ.", + "connect_hw_info_step_4": "Yan ẹrọ rẹ ni apamọwọ akara oyinbo ki o tẹsiwaju pẹlu iṣeto.", "connect_yats": "So àwọn Yat", "connect_your_hardware_wallet": "So apamọwọ irinṣẹ rẹ nipa lilo Bluetooth tabi USB", "connect_your_hardware_wallet_ios": "So apamọwọ ẹrọ rẹ ni lilo Bluetooth", @@ -240,6 +244,7 @@ "descending": "Sọkalẹ", "description": "Apejuwe", "destination_tag": "Orúkọ tí ìbí tó a ránṣẹ́ sí:", + "device_is_signing": "Ẹrọ n forukọsilẹ", "dfx_option_description": "Ra Crypto pẹlu EUR & CHF. Fun soobu ati awọn alabara ile-iṣẹ ni Yuroopu", "didnt_get_code": "Ko gba koodu?", "digit_pin": "-díjíìtì òǹkà ìdánimọ̀ àdáni", @@ -395,6 +400,7 @@ "hide_details": "Dé ìsọfúnni kékeré", "high_contrast_theme": "Akori Iyatọ giga", "home_screen_settings": "Awọn eto iboju ile", + "how_to_connect": "Bi o ṣe le sopọ", "how_to_use": "Bawo ni lati lo", "how_to_use_card": "Báyìí ni wọ́n ṣe ń lo káàdì yìí.", "id": "Àmì Ìdánimọ̀: ", @@ -843,6 +849,7 @@ "spend_key_private": "Kọ́kọ́rọ́ sísan (àdáni)", "spend_key_public": "Kọ́kọ́rọ́ sísan (kò àdáni)", "status": "Tó ń ṣẹlẹ̀: ", + "step": "Igbesẹ", "string_default": "Aiyipada", "subaddress_title": "Àkọsílẹ̀ ni nínú àwọn àdírẹ́sì tíwọn rẹ̀lẹ̀", "subaddresses": "Àwọn àdírẹ́sì kékeré", diff --git a/res/values/strings_zh.arb b/res/values/strings_zh.arb index 11102cbee..a3df320ab 100644 --- a/res/values/strings_zh.arb +++ b/res/values/strings_zh.arb @@ -181,6 +181,10 @@ "confirmed_tx": "确认的", "congratulations": "恭喜!", "connect_an_existing_yat": "連接現有 Yat", + "connect_hw_info_step_1": "确保您的设备已上电。", + "connect_hw_info_step_2": "为这两个设备打开蓝牙,然后将它们配对,或使用USB电缆将设备连接在一起。", + "connect_hw_info_step_3": "解锁设备并导航到所需的加密应用程序。", + "connect_hw_info_step_4": "在蛋糕钱包中选择您的设备,然后继续设置。", "connect_yats": "连接 Yats", "connect_your_hardware_wallet": "使用蓝牙或USB连接硬件钱包", "connect_your_hardware_wallet_ios": "使用蓝牙连接硬件钱包", @@ -240,6 +244,7 @@ "descending": "下降", "description": "描述", "destination_tag": "目标Tag:", + "device_is_signing": "设备正在签名", "dfx_option_description": "用Eur&Chf购买加密货币。对于欧洲的零售和企业客户", "didnt_get_code": "没有获取代码?", "digit_pin": "位 PIN", @@ -394,6 +399,7 @@ "hide_details": "隐藏细节", "high_contrast_theme": "高对比度主题", "home_screen_settings": "主屏幕设置", + "how_to_connect": "如何连接", "how_to_use": "如何使用", "how_to_use_card": "如何使用这张卡", "id": "ID: ", @@ -842,6 +848,7 @@ "spend_key_private": "Spend 密钥 (私钥)", "spend_key_public": "Spend 密钥 (公钥)", "status": "状态: ", + "step": "步", "string_default": "默认", "subaddress_title": "子地址列表", "subaddresses": "子地址", diff --git a/scripts/prepare_moneroc.sh b/scripts/prepare_moneroc.sh index b49ad2c34..ef29d360f 100755 --- a/scripts/prepare_moneroc.sh +++ b/scripts/prepare_moneroc.sh @@ -8,7 +8,7 @@ if [[ ! -d "monero_c/.git" ]]; then git clone https://github.com/mrcyjanek/monero_c --branch master monero_c cd monero_c - git checkout b335585a7fb94b315eb52bd88f2da6d3489fa508 + git checkout a27fbcb24d91143715ed930a05aaa4d853fba1f2 git reset --hard git submodule update --init --force --recursive ./apply_patches.sh monero diff --git a/tool/configure.dart b/tool/configure.dart index 4f49f64a3..612958f4a 100644 --- a/tool/configure.dart +++ b/tool/configure.dart @@ -434,6 +434,7 @@ WalletCredentials createMoneroNewWalletCredentials({required String name, requir void setLedgerConnection(Object wallet, ledger.LedgerConnection connection); void resetLedgerConnection(); void setGlobalLedgerConnection(ledger.LedgerConnection connection); + String? getLastLedgerCommand(); Map> debugCallLength(); }