v4.24.0 (#2102)

* - Add Decred Wallet - Remove Haven Wallet - Fix and Improve Solana Wallet - Improve app usability and user experience - User interface enhancements - Bug fixes * Release candidate feedback fixes * Release candidate feedback fixes * update release notes [skip ci] * fix iOS stupidity [skip ci] * minor fix * decred: Do not create log file. (#2106) (#2107) Co-authored-by: JoeGruffins <34998433+JoeGruffins@users.noreply.github.com> * fix Monero HWW * fix Monero view only wallet * fix background sync for hardware and viewonly wallets * check for status on correct wptr * minor fixes [skip ci] --------- Co-authored-by: JoeGruffins <34998433+JoeGruffins@users.noreply.github.com> Co-authored-by: Czarek Nakamoto <cyjan@mrcyjanek.net>

Omar Hatem committed Mar 25, 2025 at 03:49 UTC 0aa563ead734f9ad7182e841a11ffa4bee1436d2
60 files changed +304 -290
assets/text/Monerocom_Release_Notes.txt
+4 -2
@@ -1,3 +1,5 @@
1 -UI/UX enhancements
2 -Stability improvements
1 +Add background sync to Monero
2 +Enhance Backup files
3 +Improve app usability and user experience
4 +User interface enhancements
5 Bug fixes
\ No newline at end of file
assets/text/Release_Notes.txt
+8 -1
@@ -1 +1,8 @@
1 -Update for Zano's Hard fork
\ No newline at end of file
1 +Add background sync to Monero
2 +Add Decred Wallet
3 +Remove Haven Wallet
4 +Fix and Improve Solana Wallet
5 +Enhance Backup files
6 +Improve app usability and user experience
7 +User interface enhancements
8 +Bug fixes
\ No newline at end of file
cw_bitcoin/pubspec.lock
+13 -13
@@ -29,10 +29,10 @@ packages:
29 dependency: transitive
30 description:
31 name: asn1lib
32 - sha256: "1c296cd268f486cabcc3930e9b93a8133169305f18d722916e675959a88f6d2c"
32 + sha256: "4bae5ae63e6d6dd17c4aac8086f3dec26c0236f6a0f03416c6c19d830c367cf5"
33 url: "https://pub.dev"
34 source: hosted
35 - version: "1.5.9"
35 + version: "1.5.8"
36 async:
37 dependency: transitive
38 description:
@@ -129,18 +129,18 @@ packages:
129 dependency: transitive
130 description:
131 name: build_config
132 - sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33"
132 + sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1
133 url: "https://pub.dev"
134 source: hosted
135 - version: "1.1.2"
135 + version: "1.1.1"
136 build_daemon:
137 dependency: transitive
138 description:
139 name: build_daemon
140 - sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa"
140 + sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
141 url: "https://pub.dev"
142 source: hosted
143 - version: "4.0.4"
143 + version: "4.0.2"
144 build_resolvers:
145 dependency: "direct dev"
146 description:
@@ -495,10 +495,10 @@ packages:
495 dependency: transitive
496 description:
497 name: http_parser
498 - sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
498 + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
499 url: "https://pub.dev"
500 source: hosted
501 - version: "4.1.2"
501 + version: "4.0.2"
502 intl:
503 dependency: "direct main"
504 description:
@@ -794,10 +794,10 @@ packages:
794 dependency: transitive
795 description:
796 name: pubspec_parse
797 - sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082"
797 + sha256: "81876843eb50dc2e1e5b151792c9a985c5ed2536914115ed04e9c8528f6647b0"
798 url: "https://pub.dev"
799 source: hosted
800 - version: "1.5.0"
800 + version: "1.4.0"
801 quiver:
802 dependency: transitive
803 description:
@@ -882,10 +882,10 @@ packages:
882 dependency: transitive
883 description:
884 name: shelf
885 - sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
885 + sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
886 url: "https://pub.dev"
887 source: hosted
888 - version: "1.4.2"
888 + version: "1.4.1"
889 shelf_web_socket:
890 dependency: transitive
891 description:
@@ -1117,5 +1117,5 @@ packages:
1117 source: hosted
1118 version: "2.2.2"
1119 sdks:
1120 - dart: ">=3.6.0 <4.0.0"
1120 + dart: ">=3.5.0 <4.0.0"
1121 flutter: ">=3.24.0"
cw_core/pubspec.lock
+25 -25
@@ -34,10 +34,10 @@ packages:
34 dependency: transitive
35 description:
36 name: asn1lib
37 - sha256: "1c296cd268f486cabcc3930e9b93a8133169305f18d722916e675959a88f6d2c"
37 + sha256: "4bae5ae63e6d6dd17c4aac8086f3dec26c0236f6a0f03416c6c19d830c367cf5"
38 url: "https://pub.dev"
39 source: hosted
40 - version: "1.5.9"
40 + version: "1.5.8"
41 async:
42 dependency: transitive
43 description:
@@ -67,50 +67,50 @@ packages:
67 dependency: transitive
68 description:
69 name: build
70 - sha256: cef23f1eda9b57566c81e2133d196f8e3df48f244b317368d65c5943d91148f0
70 + sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0"
71 url: "https://pub.dev"
72 source: hosted
73 - version: "2.4.2"
73 + version: "2.4.1"
74 build_config:
75 dependency: transitive
76 description:
77 name: build_config
78 - sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33"
78 + sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1
79 url: "https://pub.dev"
80 source: hosted
81 - version: "1.1.2"
81 + version: "1.1.1"
82 build_daemon:
83 dependency: transitive
84 description:
85 name: build_daemon
86 - sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa"
86 + sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
87 url: "https://pub.dev"
88 source: hosted
89 - version: "4.0.4"
89 + version: "4.0.2"
90 build_resolvers:
91 dependency: "direct dev"
92 description:
93 name: build_resolvers
94 - sha256: b9e4fda21d846e192628e7a4f6deda6888c36b5b69ba02ff291a01fd529140f0
94 + sha256: "339086358431fa15d7eca8b6a36e5d783728cf025e559b834f4609a1fcfb7b0a"
95 url: "https://pub.dev"
96 source: hosted
97 - version: "2.4.4"
97 + version: "2.4.2"
98 build_runner:
99 dependency: "direct dev"
100 description:
101 name: build_runner
102 - sha256: "058fe9dce1de7d69c4b84fada934df3e0153dd000758c4d65964d0166779aa99"
102 + sha256: "028819cfb90051c6b5440c7e574d1896f8037e3c96cf17aaeb054c9311cfbf4d"
103 url: "https://pub.dev"
104 source: hosted
105 - version: "2.4.15"
105 + version: "2.4.13"
106 build_runner_core:
107 dependency: transitive
108 description:
109 name: build_runner_core
110 - sha256: "22e3aa1c80e0ada3722fe5b63fd43d9c8990759d0a2cf489c8c5d7b2bdebc021"
110 + sha256: f8126682b87a7282a339b871298cc12009cb67109cfa1614d6436fb0289193e0
111 url: "https://pub.dev"
112 source: hosted
113 - version: "8.0.0"
113 + version: "7.3.2"
114 built_collection:
115 dependency: transitive
116 description:
@@ -212,10 +212,10 @@ packages:
212 dependency: transitive
213 description:
214 name: dart_style
215 - sha256: "7306ab8a2359a48d22310ad823521d723acfed60ee1f7e37388e8986853b6820"
215 + sha256: "7856d364b589d1f08986e140938578ed36ed948581fbc3bc9aef1805039ac5ab"
216 url: "https://pub.dev"
217 source: hosted
218 - version: "2.3.8"
218 + version: "2.3.7"
219 decimal:
220 dependency: "direct main"
221 description:
@@ -342,10 +342,10 @@ packages:
342 dependency: transitive
343 description:
344 name: http_parser
345 - sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
345 + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
346 url: "https://pub.dev"
347 source: hosted
348 - version: "4.1.2"
348 + version: "4.0.2"
349 intl:
350 dependency: "direct main"
351 description:
@@ -599,10 +599,10 @@ packages:
599 dependency: transitive
600 description:
601 name: pubspec_parse
602 - sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082"
602 + sha256: "81876843eb50dc2e1e5b151792c9a985c5ed2536914115ed04e9c8528f6647b0"
603 url: "https://pub.dev"
604 source: hosted
605 - version: "1.5.0"
605 + version: "1.4.0"
606 rational:
607 dependency: transitive
608 description:
@@ -615,18 +615,18 @@ packages:
615 dependency: transitive
616 description:
617 name: shelf
618 - sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
618 + sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
619 url: "https://pub.dev"
620 source: hosted
621 - version: "1.4.2"
621 + version: "1.4.1"
622 shelf_web_socket:
623 dependency: transitive
624 description:
625 name: shelf_web_socket
626 - sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925"
626 + sha256: cc36c297b52866d203dbf9332263c94becc2fe0ceaa9681d07b6ef9807023b67
627 url: "https://pub.dev"
628 source: hosted
629 - version: "3.0.0"
629 + version: "2.0.1"
630 sky_engine:
631 dependency: transitive
632 description: flutter
@@ -809,5 +809,5 @@ packages:
809 source: hosted
810 version: "3.1.3"
811 sdks:
812 - dart: ">=3.6.0 <4.0.0"
812 + dart: ">=3.5.0 <4.0.0"
813 flutter: ">=3.24.0"
cw_decred/lib/api/libdcrwallet.dart
+13 -7
@@ -3,7 +3,6 @@ import 'dart:ffi';
3 import 'dart:io';
4 import 'dart:async';
5 import 'dart:isolate';
6 -import 'package:flutter/foundation.dart';
6 import 'package:cw_core/utils/print_verbose.dart';
7 import 'package:cw_decred/api/libdcrwallet_bindings.dart';
8 import 'package:cw_decred/api/util.dart';
@@ -79,10 +78,12 @@ class Libwallet {
78 switch (method) {
79 case "initlibdcrwallet":
80 final logDir = args["logdir"] ?? "";
81 + final level = args["level"] ?? "";
82 final cLogDir = logDir.toCString();
83 + final cLevel = level.toCString();
84 executePayloadFn(
84 - fn: () => dcrwalletApi.initialize(cLogDir),
85 - ptrsToFree: [cLogDir],
85 + fn: () => dcrwalletApi.initialize(cLogDir, cLevel),
86 + ptrsToFree: [cLogDir, cLevel],
87 );
88 break;
89 case "createwallet":
@@ -300,7 +301,7 @@ class Libwallet {
301 break;
302 case "shutdown":
303 final name = args["name"] ?? "";
303 - final cName = name.toCString();
304 + // final cName = name.toCString();
305 executePayloadFn(
306 fn: () => dcrwalletApi.shutdown(),
307 ptrsToFree: [],
@@ -326,8 +327,8 @@ class Libwallet {
327
328 // initLibdcrwallet initializes libdcrwallet using the provided logDir and gets
329 // it ready for use. This must be done before attempting to create, load or use
329 - // a wallet.
330 - Future<void> initLibdcrwallet(String logDir) async {
330 + // a wallet. An empty string can be used to log to stdout and create no log files.
331 + Future<void> initLibdcrwallet(String logDir, String level) async {
332 if (_closed) throw StateError('Closed');
333 final completer = Completer<Object?>.sync();
334 final id = _idCounter++;
@@ -335,6 +336,7 @@ class Libwallet {
336 final req = {
337 "method": "initlibdcrwallet",
338 "logdir": logDir,
339 + "level": level,
340 };
341 _commands.send((id, req));
342 await completer.future;
@@ -463,7 +465,11 @@ class Libwallet {
465 };
466 _commands.send((id, req));
467 final res = await completer.future as PayloadResult;
466 - return jsonDecode(res.payload);
468 + try {
469 + return jsonDecode(res.payload);
470 + } catch (_) {
471 + return {};
472 + }
473 }
474
475 Future<String> estimateFee(String walletName, int numBlocks) async {
cw_decred/lib/wallet.dart
+52 -43
@@ -380,7 +380,7 @@ abstract class DecredWalletBase
380 totalAmt = totalIn;
381 } else if (out.cryptoAmount != null) {
382 final coins = double.parse(out.cryptoAmount!);
383 - amt = (coins * 1e8).toInt();
383 + amt = (coins * 1e8).round();
384 }
385 totalAmt += amt;
386 final o = {
@@ -415,7 +415,7 @@ abstract class DecredWalletBase
415 };
416 final fee = decoded["fee"] ?? 0;
417 if (sendAll) {
418 - totalAmt = (totalAmt - fee).toInt();
418 + totalAmt = (totalAmt - fee).round();
419 }
420 return DecredPendingTransaction(
421 txid: decoded["txid"] ?? "", amount: totalAmt, fee: fee, rawHex: signedHex, send: send);
@@ -475,36 +475,41 @@ abstract class DecredWalletBase
475 }
476
477 Future<Map<String, DecredTransactionInfo>> fetchFiveTransactions(int from) async {
478 - final res = await _libwallet.listTransactions(walletInfo.name, from.toString(), "5");
479 - final decoded = json.decode(res);
480 - var txs = <String, DecredTransactionInfo>{};
481 - for (final d in decoded) {
482 - final txid = uniqueTxID(d["txid"] ?? "", d["vout"] ?? 0);
483 - var direction = TransactionDirection.outgoing;
484 - if (d["category"] == "receive") {
485 - direction = TransactionDirection.incoming;
478 + try {
479 + final res = await _libwallet.listTransactions(walletInfo.name, from.toString(), "5");
480 + final decoded = json.decode(res);
481 + var txs = <String, DecredTransactionInfo>{};
482 + for (final d in decoded) {
483 + final txid = uniqueTxID(d["txid"] ?? "", d["vout"] ?? 0);
484 + var direction = TransactionDirection.outgoing;
485 + if (d["category"] == "receive") {
486 + direction = TransactionDirection.incoming;
487 + }
488 + final amountDouble = d["amount"] ?? 0.0;
489 + final amount = (amountDouble * 1e8).round().abs();
490 + final feeDouble = d["fee"] ?? 0.0;
491 + final fee = (feeDouble * 1e8).round().abs();
492 + final confs = d["confirmations"] ?? 0;
493 + final sendTime = d["time"] ?? 0;
494 + final height = d["height"] ?? 0;
495 + final txInfo = DecredTransactionInfo(
496 + id: txid,
497 + amount: amount,
498 + fee: fee,
499 + direction: direction,
500 + isPending: confs == 0,
501 + date: DateTime.fromMillisecondsSinceEpoch(sendTime * 1000, isUtc: false),
502 + height: height,
503 + confirmations: confs,
504 + to: d["address"] ?? "",
505 + );
506 + txs[txid] = txInfo;
507 }
487 - final amountDouble = d["amount"] ?? 0.0;
488 - final amount = (amountDouble * 1e8).toInt().abs();
489 - final feeDouble = d["fee"] ?? 0.0;
490 - final fee = (feeDouble * 1e8).toInt().abs();
491 - final confs = d["confirmations"] ?? 0;
492 - final sendTime = d["time"] ?? 0;
493 - final height = d["height"] ?? 0;
494 - final txInfo = DecredTransactionInfo(
495 - id: txid,
496 - amount: amount,
497 - fee: fee,
498 - direction: direction,
499 - isPending: confs == 0,
500 - date: DateTime.fromMillisecondsSinceEpoch(sendTime * 1000, isUtc: false),
501 - height: height,
502 - confirmations: confs,
503 - to: d["address"] ?? "",
504 - );
505 - txs[txid] = txInfo;
508 + return txs;
509 + } catch (e) {
510 + printV(e);
511 + return {};
512 }
507 - return txs;
513 }
514
515 // uniqueTxID combines the tx id and vout to create a unique id.
@@ -612,21 +617,25 @@ abstract class DecredWalletBase
617 }
618
619 Future<void> fetchUnspents() async {
615 - final res = await _libwallet.listUnspents(walletInfo.name);
616 - final decoded = json.decode(res);
617 - var unspents = <Unspent>[];
618 - for (final d in decoded) {
619 - final spendable = d["spendable"] ?? false;
620 - if (!spendable) {
621 - continue;
620 + try {
621 + final res = await _libwallet.listUnspents(walletInfo.name);
622 + final decoded = json.decode(res);
623 + var unspents = <Unspent>[];
624 + for (final d in decoded) {
625 + final spendable = d["spendable"] ?? false;
626 + if (!spendable) {
627 + continue;
628 + }
629 + final amountDouble = d["amount"] ?? 0.0;
630 + final amount = (amountDouble * 1e8).round().abs();
631 + final utxo = Unspent(d["address"] ?? "", d["txid"] ?? "", amount, d["vout"] ?? 0, null);
632 + utxo.isChange = d["ischange"] ?? false;
633 + unspents.add(utxo);
634 }
623 - final amountDouble = d["amount"] ?? 0.0;
624 - final amount = (amountDouble * 1e8).toInt().abs();
625 - final utxo = Unspent(d["address"] ?? "", d["txid"] ?? "", amount, d["vout"] ?? 0, null);
626 - utxo.isChange = d["ischange"] ?? false;
627 - unspents.add(utxo);
635 + _unspents = unspents;
636 + } catch (e) {
637 + printV(e);
638 }
629 - _unspents = unspents;
639 }
640
641 List<Unspent> unspents() {
cw_decred/lib/wallet_addresses.dart
+13 -7
@@ -1,4 +1,5 @@
1 import 'dart:convert';
2 +import 'package:cw_core/utils/print_verbose.dart';
3 import 'package:mobx/mobx.dart';
4
5 import 'package:cw_core/address_info.dart';
@@ -103,13 +104,18 @@ abstract class DecredWalletAddressesBase extends WalletAddresses with Store {
104 if (this.isEnabledAutoGenerateSubaddress) {
105 nUnused = "3";
106 }
106 - final res = await _libwallet.addresses(walletInfo.name, nUsed, nUnused);
107 - final decoded = json.decode(res);
108 - final usedAddrs = List<String>.from(decoded["used"] ?? []);
109 - final unusedAddrs = List<String>.from(decoded["unused"] ?? []);
110 - // index is the index of the first unused address.
111 - final index = decoded["index"] ?? 0;
112 - return new LibAddresses(usedAddrs, unusedAddrs, index);
107 + try {
108 + final res = await _libwallet.addresses(walletInfo.name, nUsed, nUnused);
109 + final decoded = json.decode(res);
110 + final usedAddrs = List<String>.from(decoded["used"] ?? []);
111 + final unusedAddrs = List<String>.from(decoded["unused"] ?? []);
112 + // index is the index of the first unused address.
113 + final index = decoded["index"] ?? 0;
114 + return new LibAddresses(usedAddrs, unusedAddrs, index);
115 + } catch (e) {
116 + printV(e);
117 + return LibAddresses([], [], 0);
118 + }
119 }
120
121 Future<void> generateNewAddress(String label) async {
cw_decred/lib/wallet_service.dart
+4 -5
@@ -27,17 +27,16 @@ class DecredWalletService extends WalletService<
27 static final pubkeyRestorePathTestnet = "m/44'/1'/0'";
28 final mainnet = "mainnet";
29 final testnet = "testnet";
30 - Libwallet? libwallet;
30 + static Libwallet? libwallet;
31
32 Future<void> init() async {
33 if (libwallet != null) {
34 return;
35 }
36 libwallet = await Libwallet.spawn();
37 - // Use the general path for all dcr wallets as the general log directory.
38 - // Individual wallet paths may be removed if the wallet is deleted.
39 - final dcrLogDir = await pathForWalletDir(name: '', type: WalletType.decred);
40 - libwallet!.initLibdcrwallet(dcrLogDir);
37 + // Init logging with no directory to force printing to stdout and only
38 + // print ERROR level logs.
39 + libwallet!.initLibdcrwallet("", "err");
40 }
41
42 void closeLibwallet() {
cw_decred/pubspec.lock
+9 -9
@@ -75,18 +75,18 @@ packages:
75 dependency: transitive
76 description:
77 name: build_config
78 - sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33"
78 + sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1
79 url: "https://pub.dev"
80 source: hosted
81 - version: "1.1.2"
81 + version: "1.1.1"
82 build_daemon:
83 dependency: transitive
84 description:
85 name: build_daemon
86 - sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa"
86 + sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
87 url: "https://pub.dev"
88 source: hosted
89 - version: "4.0.4"
89 + version: "4.0.2"
90 build_resolvers:
91 dependency: "direct dev"
92 description:
@@ -365,10 +365,10 @@ packages:
365 dependency: transitive
366 description:
367 name: http_parser
368 - sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
368 + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
369 url: "https://pub.dev"
370 source: hosted
371 - version: "4.1.2"
371 + version: "4.0.2"
372 intl:
373 dependency: transitive
374 description:
@@ -646,10 +646,10 @@ packages:
646 dependency: transitive
647 description:
648 name: shelf
649 - sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
649 + sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
650 url: "https://pub.dev"
651 source: hosted
652 - version: "1.4.2"
652 + version: "1.4.1"
653 shelf_web_socket:
654 dependency: transitive
655 description:
@@ -848,5 +848,5 @@ packages:
848 source: hosted
849 version: "2.2.2"
850 sdks:
851 - dart: ">=3.6.0 <4.0.0"
851 + dart: ">=3.5.0 <4.0.0"
852 flutter: ">=3.24.0"
cw_monero/lib/api/wallet_manager.dart
+21 -44
@@ -89,11 +89,7 @@ void createWalletSync(
89 throw WalletCreationException(message: monero.Wallet_errorString(newWptr));
90 }
91
92 - monero.Wallet_setupBackgroundSync(newWptr, backgroundSyncType: 2, walletPassword: password, backgroundCachePassword: '');
93 - status = monero.Wallet_status(newWptr);
94 - if (status != 0) {
95 - throw WalletCreationException(message: monero.Wallet_errorString(newWptr));
96 - }
92 + setupBackgroundSync(password, newWptr);
93
94 wptr = newWptr;
95 monero.Wallet_setCacheAttribute(wptr!, key: "cakewallet.passphrase", value: passphrase);
@@ -186,13 +182,6 @@ void restoreWalletFromKeysSync(
182 message: monero.Wallet_errorString(newWptr));
183 }
184
189 -
190 - monero.Wallet_setupBackgroundSync(newWptr, backgroundSyncType: 2, walletPassword: password, backgroundCachePassword: '');
191 - status = monero.Wallet_status(newWptr);
192 - if (status != 0) {
193 - throw WalletCreationException(message: monero.Wallet_errorString(newWptr));
194 - }
195 -
185 // CW-712 - Try to restore deterministic wallet first, if the view key doesn't
186 // match the view key provided
187 if (spendKey != "") {
@@ -216,12 +205,8 @@ void restoreWalletFromKeysSync(
205 throw WalletRestoreFromKeysException(
206 message: monero.Wallet_errorString(newWptr));
207 }
219 -
220 - monero.Wallet_setupBackgroundSync(newWptr, backgroundSyncType: 2, walletPassword: password, backgroundCachePassword: '');
221 - status = monero.Wallet_status(newWptr);
222 - if (status != 0) {
223 - throw WalletCreationException(message: monero.Wallet_errorString(newWptr));
224 - }
208 +
209 + setupBackgroundSync(password, newWptr);
210 }
211 }
212
@@ -267,12 +252,8 @@ void restoreWalletFromPolyseedWithOffset(
252 monero.Wallet_setCacheAttribute(wptr!, key: "cakewallet.seed", value: seed);
253 monero.Wallet_setCacheAttribute(wptr!, key: "cakewallet.passphrase", value: seedOffset);
254 monero.Wallet_store(wptr!);
270 -
271 - monero.Wallet_setupBackgroundSync(newWptr, backgroundSyncType: 2, walletPassword: password, backgroundCachePassword: '');
272 - status = monero.Wallet_status(newWptr);
273 - if (status != 0) {
274 - throw WalletCreationException(message: monero.Wallet_errorString(newWptr));
275 - }
255 +
256 + setupBackgroundSync(password, newWptr);
257 storeSync();
258
259 openedWalletsByPath[path] = wptr!;
@@ -323,12 +304,8 @@ void restoreWalletFromSpendKeySync(
304 monero.Wallet_setCacheAttribute(wptr!, key: "cakewallet.seed", value: seed);
305
306 storeSync();
326 -
327 - monero.Wallet_setupBackgroundSync(newWptr, backgroundSyncType: 2, walletPassword: password, backgroundCachePassword: '');
328 - status = monero.Wallet_status(newWptr);
329 - if (status != 0) {
330 - throw WalletCreationException(message: monero.Wallet_errorString(newWptr));
331 - }
307 +
308 + setupBackgroundSync(password, newWptr);
309
310 openedWalletsByPath[path] = wptr!;
311 _lastOpenedWallet = path;
@@ -361,13 +338,6 @@ Future<void> restoreWalletFromHardwareWallet(
338 throw WalletRestoreFromSeedException(message: error);
339 }
340
364 - // TODO: Check with upstream if we can use background sync here
365 - // monero.Wallet_setupBackgroundSync(newWptr, backgroundSyncType: 2, walletPassword: password, backgroundCachePassword: '');
366 - // status = monero.Wallet_status(newWptr);
367 - // if (status != 0) {
368 - // throw WalletCreationException(message: monero.Wallet_errorString(newWptr));
369 - // }
370 -
341 wptr = newWptr;
342 _lastOpenedWallet = path;
343 openedWalletsByPath[path] = wptr!;
@@ -437,12 +407,8 @@ Future<void> loadWallet(
407 printV("loadWallet:"+err);
408 throw WalletOpeningException(message: err);
409 }
440 - monero.Wallet_setupBackgroundSync(newWptr, backgroundSyncType: 2, walletPassword: password, backgroundCachePassword: '');
441 - status = monero.Wallet_status(newWptr);
442 - if (status != 0) {
443 - final err = monero.Wallet_errorString(newWptr);
444 - printV("loadWallet:"+err);
445 - throw WalletOpeningException(message: err);
410 + if (deviceType == 0) {
411 + setupBackgroundSync(password, newWptr);
412 }
413
414 wptr = newWptr;
@@ -451,6 +417,17 @@ Future<void> loadWallet(
417 }
418 }
419
420 +void setupBackgroundSync(String password, Pointer<Void>? wptrOverride) {
421 + if (isViewOnlyBySpendKey(wptrOverride)) {
422 + return;
423 + }
424 + monero.Wallet_setupBackgroundSync(wptrOverride ?? wptr!, backgroundSyncType: 2, walletPassword: password, backgroundCachePassword: '');
425 + if (monero.Wallet_status(wptrOverride ?? wptr!) != 0) {
426 + // We simply ignore the error.
427 + printV("setupBackgroundSync: ${monero.Wallet_errorString(wptrOverride ?? wptr!)}");
428 + }
429 +}
430 +
431 void _createWallet(Map<String, dynamic> args) {
432 final path = args['path'] as String;
433 final password = args['password'] as String;
@@ -591,4 +568,4 @@ Future<void> restoreFromSpendKey(
568
569 bool isWalletExist({required String path}) => _isWalletExist(path);
570
594 -bool isViewOnlyBySpendKey() => int.tryParse(monero.Wallet_secretSpendKey(wptr!)) == 0;
571 +bool isViewOnlyBySpendKey(Pointer<Void>? wptrOverride) => int.tryParse(monero.Wallet_secretSpendKey(wptrOverride ?? wptr!)) == 0;
cw_monero/lib/monero_wallet.dart
+4 -8
@@ -233,18 +233,14 @@ abstract class MoneroWalletBase extends WalletBase<MoneroBalance,
233 return;
234 }
235 isBackgroundSyncRunning = true;
236 - int status = monero.Wallet_status(wptr!);
237 - if (status != 0) {
238 - final err = monero.Wallet_errorString(wptr!);
239 - throw Exception("unable to setup background sync: $err");
240 - }
236 await save();
237
238 monero.Wallet_startBackgroundSync(wptr!);
244 - status = monero.Wallet_status(wptr!);
239 + final status = monero.Wallet_status(wptr!);
240 if (status != 0) {
241 final err = monero.Wallet_errorString(wptr!);
247 - throw Exception("unable to start background sync: $err");
242 + isBackgroundSyncRunning = false;
243 + printV("startBackgroundSync: $err");
244 }
245 await save();
246 await init();
@@ -260,9 +256,9 @@ abstract class MoneroWalletBase extends WalletBase<MoneroBalance,
256 printV("Stopping background sync");
257 await save();
258 monero.Wallet_stopBackgroundSync(wptr!, '');
263 - await save();
259 isBackgroundSyncRunning = false;
260 }
261 + await save();
262 }
263
264 @action
cw_monero/pubspec.lock
+13 -13
@@ -29,10 +29,10 @@ packages:
29 dependency: transitive
30 description:
31 name: asn1lib
32 - sha256: "1c296cd268f486cabcc3930e9b93a8133169305f18d722916e675959a88f6d2c"
32 + sha256: "4bae5ae63e6d6dd17c4aac8086f3dec26c0236f6a0f03416c6c19d830c367cf5"
33 url: "https://pub.dev"
34 source: hosted
35 - version: "1.5.9"
35 + version: "1.5.8"
36 async:
37 dependency: transitive
38 description:
@@ -78,18 +78,18 @@ packages:
78 dependency: transitive
79 description:
80 name: build_config
81 - sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33"
81 + sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1
82 url: "https://pub.dev"
83 source: hosted
84 - version: "1.1.2"
84 + version: "1.1.1"
85 build_daemon:
86 dependency: transitive
87 description:
88 name: build_daemon
89 - sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa"
89 + sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
90 url: "https://pub.dev"
91 source: hosted
92 - version: "4.0.4"
92 + version: "4.0.2"
93 build_resolvers:
94 dependency: "direct dev"
95 description:
@@ -384,10 +384,10 @@ packages:
384 dependency: transitive
385 description:
386 name: http_parser
387 - sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
387 + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
388 url: "https://pub.dev"
389 source: hosted
390 - version: "4.1.2"
390 + version: "4.0.2"
391 intl:
392 dependency: "direct main"
393 description:
@@ -682,10 +682,10 @@ packages:
682 dependency: transitive
683 description:
684 name: pubspec_parse
685 - sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082"
685 + sha256: "81876843eb50dc2e1e5b151792c9a985c5ed2536914115ed04e9c8528f6647b0"
686 url: "https://pub.dev"
687 source: hosted
688 - version: "1.5.0"
688 + version: "1.4.0"
689 rational:
690 dependency: transitive
691 description:
@@ -706,10 +706,10 @@ packages:
706 dependency: transitive
707 description:
708 name: shelf
709 - sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
709 + sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
710 url: "https://pub.dev"
711 source: hosted
712 - version: "1.4.2"
712 + version: "1.4.1"
713 shelf_web_socket:
714 dependency: transitive
715 description:
@@ -924,5 +924,5 @@ packages:
924 source: hosted
925 version: "3.1.3"
926 sdks:
927 - dart: ">=3.6.0 <4.0.0"
927 + dart: ">=3.5.0 <4.0.0"
928 flutter: ">=3.24.0"
cw_nano/pubspec.lock
+13 -13
@@ -29,10 +29,10 @@ packages:
29 dependency: transitive
30 description:
31 name: asn1lib
32 - sha256: "1c296cd268f486cabcc3930e9b93a8133169305f18d722916e675959a88f6d2c"
32 + sha256: "4bae5ae63e6d6dd17c4aac8086f3dec26c0236f6a0f03416c6c19d830c367cf5"
33 url: "https://pub.dev"
34 source: hosted
35 - version: "1.5.9"
35 + version: "1.5.8"
36 async:
37 dependency: transitive
38 description:
@@ -94,18 +94,18 @@ packages:
94 dependency: transitive
95 description:
96 name: build_config
97 - sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33"
97 + sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1
98 url: "https://pub.dev"
99 source: hosted
100 - version: "1.1.2"
100 + version: "1.1.1"
101 build_daemon:
102 dependency: transitive
103 description:
104 name: build_daemon
105 - sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa"
105 + sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
106 url: "https://pub.dev"
107 source: hosted
108 - version: "4.0.4"
108 + version: "4.0.2"
109 build_resolvers:
110 dependency: transitive
111 description:
@@ -397,10 +397,10 @@ packages:
397 dependency: transitive
398 description:
399 name: http_parser
400 - sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
400 + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
401 url: "https://pub.dev"
402 source: hosted
403 - version: "4.1.2"
403 + version: "4.0.2"
404 intl:
405 dependency: transitive
406 description:
@@ -679,10 +679,10 @@ packages:
679 dependency: transitive
680 description:
681 name: pubspec_parse
682 - sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082"
682 + sha256: "81876843eb50dc2e1e5b151792c9a985c5ed2536914115ed04e9c8528f6647b0"
683 url: "https://pub.dev"
684 source: hosted
685 - version: "1.5.0"
685 + version: "1.4.0"
686 rational:
687 dependency: transitive
688 description:
@@ -751,10 +751,10 @@ packages:
751 dependency: transitive
752 description:
753 name: shelf
754 - sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
754 + sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
755 url: "https://pub.dev"
756 source: hosted
757 - version: "1.4.2"
757 + version: "1.4.1"
758 shelf_web_socket:
759 dependency: transitive
760 description:
@@ -945,5 +945,5 @@ packages:
945 source: hosted
946 version: "3.1.3"
947 sdks:
948 - dart: ">=3.6.0 <4.0.0"
948 + dart: ">=3.5.0 <4.0.0"
949 flutter: ">=3.24.0"
cw_wownero/pubspec.lock
+13 -13
@@ -29,10 +29,10 @@ packages:
29 dependency: transitive
30 description:
31 name: asn1lib
32 - sha256: "1c296cd268f486cabcc3930e9b93a8133169305f18d722916e675959a88f6d2c"
32 + sha256: "4bae5ae63e6d6dd17c4aac8086f3dec26c0236f6a0f03416c6c19d830c367cf5"
33 url: "https://pub.dev"
34 source: hosted
35 - version: "1.5.9"
35 + version: "1.5.8"
36 async:
37 dependency: transitive
38 description:
@@ -70,18 +70,18 @@ packages:
70 dependency: transitive
71 description:
72 name: build_config
73 - sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33"
73 + sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1
74 url: "https://pub.dev"
75 source: hosted
76 - version: "1.1.2"
76 + version: "1.1.1"
77 build_daemon:
78 dependency: transitive
79 description:
80 name: build_daemon
81 - sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa"
81 + sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
82 url: "https://pub.dev"
83 source: hosted
84 - version: "4.0.4"
84 + version: "4.0.2"
85 build_resolvers:
86 dependency: "direct dev"
87 description:
@@ -360,10 +360,10 @@ packages:
360 dependency: transitive
361 description:
362 name: http_parser
363 - sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
363 + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
364 url: "https://pub.dev"
365 source: hosted
366 - version: "4.1.2"
366 + version: "4.0.2"
367 intl:
368 dependency: "direct main"
369 description:
@@ -634,10 +634,10 @@ packages:
634 dependency: transitive
635 description:
636 name: pubspec_parse
637 - sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082"
637 + sha256: "81876843eb50dc2e1e5b151792c9a985c5ed2536914115ed04e9c8528f6647b0"
638 url: "https://pub.dev"
639 source: hosted
640 - version: "1.5.0"
640 + version: "1.4.0"
641 rational:
642 dependency: transitive
643 description:
@@ -650,10 +650,10 @@ packages:
650 dependency: transitive
651 description:
652 name: shelf
653 - sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
653 + sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
654 url: "https://pub.dev"
655 source: hosted
656 - version: "1.4.2"
656 + version: "1.4.1"
657 shelf_web_socket:
658 dependency: transitive
659 description:
@@ -844,5 +844,5 @@ packages:
844 source: hosted
845 version: "3.1.3"
846 sdks:
847 - dart: ">=3.6.0 <4.0.0"
847 + dart: ">=3.5.0 <4.0.0"
848 flutter: ">=3.24.0"
cw_zano/pubspec.lock
+13 -13
@@ -29,10 +29,10 @@ packages:
29 dependency: transitive
30 description:
31 name: asn1lib
32 - sha256: "1c296cd268f486cabcc3930e9b93a8133169305f18d722916e675959a88f6d2c"
32 + sha256: "4bae5ae63e6d6dd17c4aac8086f3dec26c0236f6a0f03416c6c19d830c367cf5"
33 url: "https://pub.dev"
34 source: hosted
35 - version: "1.5.9"
35 + version: "1.5.8"
36 async:
37 dependency: transitive
38 description:
@@ -70,18 +70,18 @@ packages:
70 dependency: transitive
71 description:
72 name: build_config
73 - sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33"
73 + sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1
74 url: "https://pub.dev"
75 source: hosted
76 - version: "1.1.2"
76 + version: "1.1.1"
77 build_daemon:
78 dependency: transitive
79 description:
80 name: build_daemon
81 - sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa"
81 + sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
82 url: "https://pub.dev"
83 source: hosted
84 - version: "4.0.4"
84 + version: "4.0.2"
85 build_resolvers:
86 dependency: "direct dev"
87 description:
@@ -357,10 +357,10 @@ packages:
357 dependency: transitive
358 description:
359 name: http_parser
360 - sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
360 + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
361 url: "https://pub.dev"
362 source: hosted
363 - version: "4.1.2"
363 + version: "4.0.2"
364 intl:
365 dependency: "direct main"
366 description:
@@ -631,10 +631,10 @@ packages:
631 dependency: transitive
632 description:
633 name: pubspec_parse
634 - sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082"
634 + sha256: "81876843eb50dc2e1e5b151792c9a985c5ed2536914115ed04e9c8528f6647b0"
635 url: "https://pub.dev"
636 source: hosted
637 - version: "1.5.0"
637 + version: "1.4.0"
638 rational:
639 dependency: transitive
640 description:
@@ -647,10 +647,10 @@ packages:
647 dependency: transitive
648 description:
649 name: shelf
650 - sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
650 + sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
651 url: "https://pub.dev"
652 source: hosted
653 - version: "1.4.2"
653 + version: "1.4.1"
654 shelf_web_socket:
655 dependency: transitive
656 description:
@@ -841,5 +841,5 @@ packages:
841 source: hosted
842 version: "3.1.3"
843 sdks:
844 - dart: ">=3.6.0 <4.0.0"
844 + dart: ">=3.5.0 <4.0.0"
845 flutter: ">=3.24.0"
ios/Podfile.lock
+32 -38
@@ -2,9 +2,7 @@ PODS:
2 - connectivity_plus (0.0.1):
3 - Flutter
4 - ReachabilitySwift
5 - - CryptoSwift (1.8.3)
6 - - cw_mweb (0.0.1):
7 - - Flutter
5 + - CryptoSwift (1.8.4)
6 - cw_decred (0.0.1):
7 - Flutter
8 - cw_mweb (0.0.1):
@@ -80,9 +78,9 @@ PODS:
78 - permission_handler_apple (9.3.0):
79 - Flutter
80 - ReachabilitySwift (5.2.4)
83 - - SDWebImage (5.19.7):
84 - - SDWebImage/Core (= 5.19.7)
85 - - SDWebImage/Core (5.19.7)
81 + - SDWebImage (5.20.0):
82 + - SDWebImage/Core (= 5.20.0)
83 + - SDWebImage/Core (5.20.0)
84 - sensitive_clipboard (0.0.1):
85 - Flutter
86 - share_plus (0.0.1):
@@ -106,7 +104,6 @@ PODS:
104 DEPENDENCIES:
105 - connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`)
106 - CryptoSwift
109 - - cw_mweb (from `.symlinks/plugins/cw_mweb/ios`)
107 - cw_decred (from `.symlinks/plugins/cw_decred/ios`)
108 - cw_mweb (from `.symlinks/plugins/cw_mweb/ios`)
109 - device_display_brightness (from `.symlinks/plugins/device_display_brightness/ios`)
@@ -147,8 +144,6 @@ SPEC REPOS:
144 EXTERNAL SOURCES:
145 connectivity_plus:
146 :path: ".symlinks/plugins/connectivity_plus/ios"
150 - cw_mweb:
151 - :path: ".symlinks/plugins/cw_mweb/ios"
147 cw_decred:
148 :path: ".symlinks/plugins/cw_decred/ios"
149 cw_mweb:
@@ -203,41 +198,40 @@ EXTERNAL SOURCES:
198 :path: ".symlinks/plugins/wakelock_plus/ios"
199
200 SPEC CHECKSUMS:
206 - connectivity_plus: 481668c94744c30c53b8895afb39159d1e619bdf
207 - CryptoSwift: 967f37cea5a3294d9cce358f78861652155be483
208 - cw_decred: a02cf30175a46971c1e2fa22c48407534541edc6
209 - cw_mweb: 3aea2fb35b2bd04d8b2d21b83216f3b8fb768d85
210 - device_display_brightness: 04374ebd653619292c1d996f00f42877ea19f17f
211 - device_info_plus: 335f3ce08d2e174b9fdc3db3db0f4e3b1f66bd89
212 - devicelocale: bd64aa714485a8afdaded0892c1e7d5b7f680cf8
201 + connectivity_plus: bf0076dd84a130856aa636df1c71ccaff908fa1d
202 + CryptoSwift: e64e11850ede528a02a0f3e768cec8e9d92ecb90
203 + cw_decred: 9c0e1df74745b51a1289ec5e91fb9e24b68fa14a
204 + cw_mweb: 22cd01dfb8ad2d39b15332006f22046aaa8352a3
205 + device_display_brightness: 1510e72c567a1f6ce6ffe393dcd9afd1426034f7
206 + device_info_plus: c6fb39579d0f423935b0c9ce7ee2f44b71b9fce6
207 + devicelocale: 35ba84dc7f45f527c3001535d8c8d104edd5d926
208 DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
209 DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
215 - fast_scanner: 2cb1ad3e69e645e9980fb4961396ce5804caa3e3
216 - file_picker: 9b3292d7c8bc68c8a7bf8eb78f730e49c8efc517
210 + fast_scanner: 44c00940355a51258cd6c2085734193cd23d95bc
211 + file_picker: 09aa5ec1ab24135ccd7a1621c46c84134bfd6655
212 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
218 - flutter_inappwebview_ios: b89ba3482b96fb25e00c967aae065701b66e9b99
219 - flutter_local_authentication: 989278c681612f1ee0e36019e149137f114b9d7f
220 - flutter_mailer: 3a8cd4f36c960fb04528d5471097270c19fec1c4
221 - flutter_secure_storage: 2c2ff13db9e0a5647389bff88b0ecac56e3f3418
222 - fluttertoast: 2c67e14dce98bbdb200df9e1acf610d7a6264ea1
223 - in_app_review: 5596fe56fab799e8edb3561c03d053363ab13457
224 - integration_test: 4a889634ef21a45d28d50d622cf412dc6d9f586e
213 + flutter_inappwebview_ios: 6f63631e2c62a7c350263b13fa5427aedefe81d4
214 + flutter_local_authentication: 1172a4dd88f6306dadce067454e2c4caf07977bb
215 + flutter_mailer: 2ef5a67087bc8c6c4cefd04a178bf1ae2c94cd83
216 + flutter_secure_storage: 23fc622d89d073675f2eaa109381aefbcf5a49be
217 + fluttertoast: 21eecd6935e7064cc1fcb733a4c5a428f3f24f0f
218 + in_app_review: a31b5257259646ea78e0e35fc914979b0031d011
219 + integration_test: 252f60fa39af5e17c3aa9899d35d908a0721b573
220 OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94
226 - package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499
227 - path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564
228 - permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d
221 + package_info_plus: c0502532a26c7662a62a356cebe2692ec5fe4ec4
222 + path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
223 + permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
224 ReachabilitySwift: 32793e867593cfc1177f5d16491e3a197d2fccda
230 - SDWebImage: 8a6b7b160b4d710e2a22b6900e25301075c34cb3
231 - sensitive_clipboard: 161e9abc3d56b3131309d8a321eb4690a803c16b
232 - share_plus: 50da8cb520a8f0f65671c6c6a99b3617ed10a58a
233 - shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7
234 - sp_scanner: b1bc9321690980bdb44bba7ec85d5543e716d1b5
225 + SDWebImage: 73c6079366fea25fa4bb9640d5fb58f0893facd8
226 + sensitive_clipboard: d4866e5d176581536c27bb1618642ee83adca986
227 + share_plus: 8b6f8b3447e494cca5317c8c3073de39b3600d1f
228 + shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
229 + sp_scanner: eaa617fa827396b967116b7f1f43549ca62e9a12
230 SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
236 - Toast: 1f5ea13423a1e6674c4abdac5be53587ae481c4e
237 - uni_links: ed8c961e47ed9ce42b6d91e1de8049e38a4b3152
238 - universal_ble: ff19787898040d721109c6324472e5dd4bc86adc
239 - url_launcher_ios: 694010445543906933d732453a59da0a173ae33d
240 - wakelock_plus: 04623e3f525556020ebd4034310f20fe7fda8b49
231 + uni_links: d97da20c7701486ba192624d99bffaaffcfc298a
232 + universal_ble: cf52a7b3fd2e7c14d6d7262e9fdadb72ab6b88a6
233 + url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
234 + wakelock_plus: 373cfe59b235a6dd5837d0fb88791d2f13a90d56
235
236 PODFILE CHECKSUM: e448f662d4c41f0c0b1ccbb78afd57dbf895a597
237
lib/monero/cw_monero.dart
+1 -1
@@ -422,6 +422,6 @@ class CWMonero extends Monero {
422 }
423
424 bool isViewOnly() {
425 - return isViewOnlyBySpendKey();
425 + return isViewOnlyBySpendKey(null);
426 }
427 }
lib/src/screens/dashboard/pages/balance/crypto_balance_widget.dart
+1 -1
@@ -315,7 +315,7 @@ class CryptoBalanceWidget extends StatelessWidget {
315 Padding(
316 padding: const EdgeInsets.fromLTRB(16, 0, 16, 8),
317 child: InfoCard(
318 - title: S.of(context).decred_info_title,
318 + title: S.of(context).synchronizing,
319 description: S.of(context).decred_info_card_details,
320 image: 'assets/images/dcr_icon.png',
321 leftButtonTitle: S.of(context).litecoin_mweb_dismiss,
lib/src/screens/send/send_page.dart
+1 -3
@@ -36,7 +36,6 @@ import 'package:cake_wallet/utils/responsive_layout_util.dart';
36 import 'package:cake_wallet/utils/show_pop_up.dart';
37 import 'package:cake_wallet/view_model/send/output.dart';
38 import 'package:cw_core/utils/print_verbose.dart';
39 -import 'package:cw_core/unspent_coin_type.dart';
39 import 'package:cw_core/wallet_type.dart';
40 import 'package:cake_wallet/view_model/send/send_view_model.dart';
41 import 'package:cake_wallet/view_model/send/send_view_model_state.dart';
@@ -164,8 +163,6 @@ class SendPage extends BasePage {
163 });
164 });
165
167 - bool _bottomSheetOpened = false;
168 -
166 @override
167 Widget body(BuildContext context) {
168 _setEffects(context);
@@ -400,6 +397,7 @@ class SendPage extends BasePage {
397 return LoadingPrimaryButton(
398 key: ValueKey('send_page_send_button_key'),
399 onPressed: () async {
400 + FocusManager.instance.primaryFocus?.unfocus();
401 if (sendViewModel.state is IsExecutingState) return;
402 if (_formKey.currentState != null &&
403 !_formKey.currentState!.validate()) {
lib/src/screens/settings/privacy_page.dart
+1 -1
@@ -42,7 +42,7 @@ class PrivacyPage extends BasePage {
42 ),
43 SettingsChoicesCell(
44 ChoicesListItem<ExchangeApiMode>(
45 - title: S.current.exchange,
45 + title: S.current.swap,
46 items: ExchangeApiMode.all,
47 selectedItem: _privacySettingsViewModel.exchangeStatus,
48 onItemSelected: (ExchangeApiMode mode) =>
lib/view_model/dashboard/dashboard_view_model.dart
+3 -2
@@ -266,7 +266,8 @@ abstract class DashboardViewModelBase with Store {
266 reaction((_) => appStore.wallet, (wallet) {
267 _onWalletChange(wallet);
268 _checkMweb();
269 - showDecredInfoCard = wallet?.type == WalletType.decred;
269 + showDecredInfoCard = wallet?.type == WalletType.decred &&
270 + sharedPreferences.getBool(PreferencesKey.showDecredInfoCard) != false;
271 });
272
273 _transactionDisposer?.reaction.dispose();
@@ -792,7 +793,7 @@ abstract class DashboardViewModelBase with Store {
793 (List<TransactionInfo> txs) {
794
795 transactions.clear();
795 -
796 +
797 transactions.addAll(
798 txs.where((tx) {
799 if (wallet.type == WalletType.monero) {
lib/view_model/node_list/node_create_or_edit_view_model.dart
-1
@@ -1,7 +1,6 @@
1 import 'package:cake_wallet/core/execution_state.dart';
2 import 'package:cake_wallet/entities/qr_scanner.dart';
3 import 'package:cake_wallet/store/settings_store.dart';
4 -import 'package:cw_core/utils/print_verbose.dart';
4 import 'package:flutter/cupertino.dart';
5 import 'package:hive/hive.dart';
6 import 'package:mobx/mobx.dart';
macos/Podfile.lock
-8
@@ -3,7 +3,6 @@ PODS:
3 - FlutterMacOS
4 - ReachabilitySwift
5 - cw_mweb (0.0.1):
6 - - cw_decred (0.0.1):
6 - FlutterMacOS
7 - device_info_plus (0.0.1):
8 - FlutterMacOS
@@ -46,7 +45,6 @@ PODS:
45 DEPENDENCIES:
46 - connectivity_plus (from `Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos`)
47 - cw_mweb (from `Flutter/ephemeral/.symlinks/plugins/cw_mweb/macos`)
49 - - cw_decred (from `Flutter/ephemeral/.symlinks/plugins/cw_decred/macos`)
48 - device_info_plus (from `Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos`)
49 - devicelocale (from `Flutter/ephemeral/.symlinks/plugins/devicelocale/macos`)
50 - fast_scanner (from `Flutter/ephemeral/.symlinks/plugins/fast_scanner/macos`)
@@ -74,10 +72,6 @@ EXTERNAL SOURCES:
72 :path: Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos
73 cw_mweb:
74 :path: Flutter/ephemeral/.symlinks/plugins/cw_mweb/macos
77 - cw_decred:
78 - :path: Flutter/ephemeral/.symlinks/plugins/cw_decred/macos
79 - cw_monero:
80 - :path: Flutter/ephemeral/.symlinks/plugins/cw_monero/macos
75 device_info_plus:
76 :path: Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos
77 devicelocale:
@@ -114,8 +108,6 @@ EXTERNAL SOURCES:
108 SPEC CHECKSUMS:
109 connectivity_plus: 18d3c32514c886e046de60e9c13895109866c747
110 cw_mweb: 7440b12ead811dda972a9918442ea2a458e8742c
117 - cw_monero: ec03de55a19c4a2b174ea687e0f4202edc716fa4
118 - cw_decred: 0c93fbeb31bd97a6ad4ec5680960af0943bfca78
111 device_info_plus: 5401765fde0b8d062a2f8eb65510fb17e77cf07f
112 devicelocale: 9f0f36ac651cabae2c33f32dcff4f32b61c38225
113 fast_scanner: d31bae07e2653403a69dac99fb710c1722b16a97
res/values/strings_ar.arb
+1
@@ -822,6 +822,7 @@
822 "sync_status_syncronizing": "يتم المزامنة",
823 "sync_status_timed_out": "نفد وقته",
824 "sync_status_unsupported": "عقدة غير مدعومة",
825 + "synchronizing": "المزامنة",
826 "syncing_wallet_alert_content": "قد لا يكتمل رصيدك وقائمة المعاملات الخاصة بك حتى تظهر عبارة “SYNCHRONIZED“ في الأعلى. انقر / اضغط لمعرفة المزيد.",
827 "syncing_wallet_alert_title": "محفظتك تتم مزامنتها",
828 "template": "قالب",
res/values/strings_bg.arb
+1
@@ -822,6 +822,7 @@
822 "sync_status_syncronizing": "СИНХРОНИЗИРАНЕ",
823 "sync_status_timed_out": "ВРЕМЕТО ИЗТЕЧЕ",
824 "sync_status_unsupported": "Неподдържан възел",
825 + "synchronizing": "Синхронизиране",
826 "syncing_wallet_alert_content": "Списъкът ви с баланс и транзакции може да не е пълен, докато в горната част не пише „СИНХРОНИЗИРАН“. Кликнете/докоснете, за да научите повече.",
827 "syncing_wallet_alert_title": "Вашият портфейл се синхронизира",
828 "template": "Шаблон",
res/values/strings_cs.arb
+1
@@ -822,6 +822,7 @@
822 "sync_status_syncronizing": "SYNCHRONIZUJI",
823 "sync_status_timed_out": "ČAS VYPRŠEL",
824 "sync_status_unsupported": "Nepodporovaný uzel",
825 + "synchronizing": "Synchronizace",
826 "syncing_wallet_alert_content": "Váš seznam zůstatků a transakcí nemusí být úplný, dokud nebude nahoře uvedeno „SYNCHRONIZOVANÉ“. Kliknutím/klepnutím se dozvíte více.",
827 "syncing_wallet_alert_title": "Vaše peněženka se synchronizuje",
828 "template": "Šablona",
res/values/strings_de.arb
+1
@@ -823,6 +823,7 @@
823 "sync_status_syncronizing": "SYNCHRONISIERE",
824 "sync_status_timed_out": "Zeitlich abgestimmt",
825 "sync_status_unsupported": "Nicht unterstützter Knoten",
826 + "synchronizing": "Synchronisierung",
827 "syncing_wallet_alert_content": "Ihr Kontostand und Ihre Transaktionsliste sind möglicherweise erst vollständig, wenn oben „SYNCHRONISIERT“ steht. Klicken/tippen Sie, um mehr zu erfahren.",
828 "syncing_wallet_alert_title": "Ihr Wallet wird synchronisiert",
829 "template": "Vorlage",
res/values/strings_en.arb
+1
@@ -823,6 +823,7 @@
823 "sync_status_syncronizing": "SYNCHRONIZING",
824 "sync_status_timed_out": "TIMED OUT",
825 "sync_status_unsupported": "UNSUPPORTED NODE",
826 + "synchronizing": "Synchronizing",
827 "syncing_wallet_alert_content": "Your balance and transaction list may not be complete until it says “SYNCHRONIZED” at the top. Click/tap to learn more.",
828 "syncing_wallet_alert_title": "Your wallet is syncing",
829 "template": "Template",
res/values/strings_es.arb
+1
@@ -823,6 +823,7 @@
823 "sync_status_syncronizing": "SINCRONIZANDO",
824 "sync_status_timed_out": "CADUCADO",
825 "sync_status_unsupported": "Nodo no compatible",
826 + "synchronizing": "Sincronización",
827 "syncing_wallet_alert_content": "Es posible que su lista de saldo y transacciones no esté completa hasta que diga \"SINCRONIZADO\" en la parte superior. Haga clic/toque para obtener más información.",
828 "syncing_wallet_alert_title": "Tu billetera se está sincronizando",
829 "template": "Plantilla",
res/values/strings_fr.arb
+1
@@ -822,6 +822,7 @@
822 "sync_status_syncronizing": "SYNCHRONISATION EN COURS",
823 "sync_status_timed_out": "FIN DU TEMPS",
824 "sync_status_unsupported": "Nœud non pris en charge",
825 + "synchronizing": "Synchronisation",
826 "syncing_wallet_alert_content": "Votre solde et votre liste de transactions peuvent ne pas être à jour tant que la mention « SYNCHRONISÉ » n'apparaît en haut de l'écran. Cliquez/appuyez pour en savoir plus.",
827 "syncing_wallet_alert_title": "Votre portefeuille (wallet) est en cours de synchronisation",
828 "template": "Modèle",
res/values/strings_ha.arb
+1
@@ -824,6 +824,7 @@
824 "sync_status_syncronizing": "KWAFI",
825 "sync_status_timed_out": "ATED Out",
826 "sync_status_unsupported": "Ba a Taimako ba",
827 + "synchronizing": "Aikiɓaɓaƙe",
828 "syncing_wallet_alert_content": "Ma'aunin ku da lissafin ma'amala bazai cika ba har sai an ce \"SYNCHRONIZED\" a saman. Danna/matsa don ƙarin koyo.",
829 "syncing_wallet_alert_title": "Walat ɗin ku yana aiki tare",
830 "template": "Samfura",
res/values/strings_hi.arb
+1
@@ -824,6 +824,7 @@
824 "sync_status_syncronizing": "सिंक्रनाइज़ करने",
825 "sync_status_timed_out": "समय समााप्त",
826 "sync_status_unsupported": "असमर्थित नोड",
827 + "synchronizing": "सिंक्रनाइज़ करना",
828 "syncing_wallet_alert_content": "आपकी शेष राशि और लेनदेन सूची तब तक पूरी नहीं हो सकती जब तक कि शीर्ष पर \"सिंक्रनाइज़्ड\" न लिखा हो। अधिक जानने के लिए क्लिक/टैप करें।",
829 "syncing_wallet_alert_title": "आपका वॉलेट सिंक हो रहा है",
830 "template": "खाका",
res/values/strings_hr.arb
+1
@@ -822,6 +822,7 @@
822 "sync_status_syncronizing": "SINKRONIZIRANJE",
823 "sync_status_timed_out": "ISTEKLO",
824 "sync_status_unsupported": "Nepodržani čvor",
825 + "synchronizing": "Sinkronizirajući",
826 "syncing_wallet_alert_content": "Vaš saldo i popis transakcija možda neće biti potpuni sve dok na vrhu ne piše \"SINKRONIZIRANO\". Kliknite/dodirnite da biste saznali više.",
827 "syncing_wallet_alert_title": "Vaš novčanik se sinkronizira",
828 "template": "Predložak",
res/values/strings_hy.arb
+1
@@ -820,6 +820,7 @@
820 "sync_status_syncronizing": "ՀԱՄԱԺԱՄԵՑՎՈՒՄ Է",
821 "sync_status_timed_out": "Ժամանակը սպառվեց",
822 "sync_status_unsupported": "ՉԱՋԱԿՑՎՈՂ ՀԱՆԳՈՒՅՑ,",
823 + "synchronizing": "Համաժամանակող",
824 "syncing_wallet_alert_content": "Ձեր հաշիվը և գործարքների ցանկը կարող են լինել անավարտ մինչև վերին մասում գրված լինի “ՀԱՂՈՒՄ”։ Սեղմեք/դիպեք ուսումնասիրելու համար։",
825 "syncing_wallet_alert_title": "Ձեր դրամապանակը համաժամացվում է",
826 "template": "Տարբերակ",
res/values/strings_id.arb
+1
@@ -825,6 +825,7 @@
825 "sync_status_syncronizing": "SEDANG SINKRONISASI",
826 "sync_status_timed_out": "WAKTU HABIS",
827 "sync_status_unsupported": "Node yang tidak didukung",
828 + "synchronizing": "Sinkronisasi",
829 "syncing_wallet_alert_content": "Saldo dan daftar transaksi Anda mungkin belum lengkap sampai tertulis “SYNCHRONIZED” di bagian atas. Klik/ketuk untuk mempelajari lebih lanjut.",
830 "syncing_wallet_alert_title": "Dompet Anda sedang disinkronkan",
831 "template": "Template",
res/values/strings_it.arb
+1
@@ -823,6 +823,7 @@
823 "sync_status_syncronizing": "SINCRONIZZAZIONE",
824 "sync_status_timed_out": "TIMED OUT",
825 "sync_status_unsupported": "NODO NON SUPPORTATO",
826 + "synchronizing": "Sincronizzazione",
827 "syncing_wallet_alert_content": "Il saldo e l'elenco delle transazioni potrebbero non essere completi fin quando non viene visualizzato \"SINCRONIZZATO\" in alto. Clicca/tocca per saperne di più.",
828 "syncing_wallet_alert_title": "Il tuo portafoglio si sta sincronizzando",
829 "template": "Modello",
res/values/strings_ja.arb
+1
@@ -823,6 +823,7 @@
823 "sync_status_syncronizing": "同期",
824 "sync_status_timed_out": "タイムアウトしました",
825 "sync_status_unsupported": "サポートされていないノード",
826 + "synchronizing": "同期",
827 "syncing_wallet_alert_content": "上部に「同期済み」と表示されるまで、残高と取引リストが完了していない可能性があります。詳細については、クリック/タップしてください。",
828 "syncing_wallet_alert_title": "ウォレットは同期中です",
829 "template": "テンプレート",
res/values/strings_ko.arb
+1
@@ -822,6 +822,7 @@
822 "sync_status_syncronizing": "동기화",
823 "sync_status_timed_out": "시간 초과",
824 "sync_status_unsupported": "지원되지 않은 노드",
825 + "synchronizing": "동기화",
826 "syncing_wallet_alert_content": "상단에 \"동기화됨\"이라고 표시될 때까지 잔액 및 거래 목록이 완전하지 않을 수 있습니다. 자세히 알아보려면 클릭/탭하세요.",
827 "syncing_wallet_alert_title": "지갑 동기화 중",
828 "template": "주형",
res/values/strings_my.arb
+1
@@ -822,6 +822,7 @@
822 "sync_status_syncronizing": "ထပ်တူပြုခြင်း။",
823 "sync_status_timed_out": "ထွက်အချိန်ကုန်",
824 "sync_status_unsupported": "node မထောက်ပံ့ node ကို",
825 + "synchronizing": "ထပ်တူပြုခြင်း",
826 "syncing_wallet_alert_content": "သင်၏လက်ကျန်နှင့် ငွေပေးငွေယူစာရင်းသည် ထိပ်တွင် \"Synchronizeed\" ဟုပြောသည်အထိ မပြီးမြောက်နိုင်ပါ။ ပိုမိုလေ့လာရန် နှိပ်/နှိပ်ပါ။",
827 "syncing_wallet_alert_title": "သင့်ပိုက်ဆံအိတ်ကို စင့်ခ်လုပ်နေပါသည်။",
828 "template": "ပုံစံခွက်",
res/values/strings_nl.arb
+1
@@ -822,6 +822,7 @@
822 "sync_status_syncronizing": "SYNCHRONISEREN",
823 "sync_status_timed_out": "Uitgeput",
824 "sync_status_unsupported": "Niet ondersteund knooppunt",
825 + "synchronizing": "Synchronisatie",
826 "syncing_wallet_alert_content": "Uw saldo- en transactielijst is mogelijk pas compleet als er bovenaan 'GESYNCHRONISEERD' staat. Klik/tik voor meer informatie.",
827 "syncing_wallet_alert_title": "Uw portemonnee wordt gesynchroniseerd",
828 "template": "Sjabloon",
res/values/strings_pl.arb
+1
@@ -822,6 +822,7 @@
822 "sync_status_syncronizing": "SYNCHRONIZACJA",
823 "sync_status_timed_out": "PRZEKROCZONO LIMIT CZASU",
824 "sync_status_unsupported": "Nieobsługiwany węzeł",
825 + "synchronizing": "Synchronizacja",
826 "syncing_wallet_alert_content": "Twoje saldo i lista transakcji mogą nie być kompletne, dopóki u góry nie pojawi się napis „SYNCHRONIZOWANY”. Kliknij/stuknij, aby dowiedzieć się więcej.",
827 "syncing_wallet_alert_title": "Twój portfel się synchronizuje",
828 "template": "Szablon",
res/values/strings_pt.arb
+1
@@ -824,6 +824,7 @@
824 "sync_status_syncronizing": "SINCRONIZANDO",
825 "sync_status_timed_out": "TEMPO ESGOTADO",
826 "sync_status_unsupported": "Nó não suportado",
827 + "synchronizing": "Sincronizando",
828 "syncing_wallet_alert_content": "Seu saldo e lista de transações podem não estar completos até que diga “SYNCHRONIZED” no topo. Clique/toque para saber mais.",
829 "syncing_wallet_alert_title": "Sua carteira está sincronizando",
830 "template": "Modelo",
res/values/strings_ru.arb
+1
@@ -823,6 +823,7 @@
823 "sync_status_syncronizing": "СИНХРОНИЗАЦИЯ",
824 "sync_status_timed_out": "ВРЕМЯ ВЫШЛО",
825 "sync_status_unsupported": "Неподдерживаемый узел",
826 + "synchronizing": "Синхронизация",
827 "syncing_wallet_alert_content": "Ваш баланс и список транзакций могут быть неполными, пока вверху не будет написано «СИНХРОНИЗИРОВАНО». Щелкните/коснитесь, чтобы узнать больше.",
828 "syncing_wallet_alert_title": "Ваш кошелек синхронизируется",
829 "template": "Шаблон",
res/values/strings_th.arb
+1
@@ -822,6 +822,7 @@
822 "sync_status_syncronizing": "กำลังซิงโครไนซ์",
823 "sync_status_timed_out": "หมดเวลา",
824 "sync_status_unsupported": "โหนดที่ไม่ได้รับการสนับสนุน",
825 + "synchronizing": "การซิงโครไนซ์",
826 "syncing_wallet_alert_content": "รายการยอดเงินและธุรกรรมของคุณอาจไม่สมบูรณ์จนกว่าจะมีข้อความว่า “ซิงโครไนซ์” ที่ด้านบน คลิก/แตะเพื่อเรียนรู้เพิ่มเติม่",
827 "syncing_wallet_alert_title": "กระเป๋าสตางค์ของคุณกำลังซิงค์",
828 "template": "แบบฟอร์ม",
res/values/strings_tl.arb
+1
@@ -822,6 +822,7 @@
822 "sync_status_syncronizing": "PAG-SYNCHRONIZE",
823 "sync_status_timed_out": "NAG-TIME OUT",
824 "sync_status_unsupported": "HINDI SUPORTADONG NODE",
825 + "synchronizing": "Pag -synchronize",
826 "syncing_wallet_alert_content": "Ang iyong balanse at listahan ng transaksyon ay maaaring hindi kumpleto hanggang sa sabihin nito na \"NAKA-SYNCHRONIZE\" sa tuktok. Mag-click/tap upang malaman ang higit pa.",
827 "syncing_wallet_alert_title": "Ang iyong wallet ay nag-sync",
828 "template": "Template",
res/values/strings_tr.arb
+1
@@ -822,6 +822,7 @@
822 "sync_status_syncronizing": "SENKRONİZE EDİLİYOR",
823 "sync_status_timed_out": "ZAMAN AŞIMINA UĞRADI",
824 "sync_status_unsupported": "Desteklenmeyen düğüm",
825 + "synchronizing": "Senkronize etme",
826 "syncing_wallet_alert_content": "Bakiyeniz ve işlem listeniz, en üstte \"SENKRONİZE EDİLDİ\" yazana kadar tamamlanmamış olabilir. Daha fazla bilgi edinmek için tıklayın/dokunun.",
827 "syncing_wallet_alert_title": "Cüzdanınız senkronize ediliyor",
828 "template": "Şablon",
res/values/strings_uk.arb
+1
@@ -823,6 +823,7 @@
823 "sync_status_syncronizing": "СИНХРОНІЗАЦІЯ",
824 "sync_status_timed_out": "ТАЙМ-АУТ",
825 "sync_status_unsupported": "Непідтримуваний вузол",
826 + "synchronizing": "Синхронізація",
827 "syncing_wallet_alert_content": "Ваш баланс та список транзакцій може бути неповним, доки вгорі не буде написано «СИНХРОНІЗОВАНО». Натисніть/торкніться, щоб дізнатися більше.",
828 "syncing_wallet_alert_title": "Ваш гаманець синхронізується",
829 "template": "Шаблон",
res/values/strings_ur.arb
+1
@@ -824,6 +824,7 @@
824 "sync_status_syncronizing": "مطابقت پذیری",
825 "sync_status_timed_out": "وقت ختم",
826 "sync_status_unsupported": "غیر تعاون یافتہ نوڈ",
827 + "synchronizing": "ہم آہنگی",
828 "syncing_wallet_alert_content": "آپ کے بیلنس اور لین دین کی فہرست اس وقت تک مکمل نہیں ہو سکتی جب تک کہ یہ سب سے اوپر \"SYNCRONIZED\" نہ کہے۔ مزید جاننے کے لیے کلک/تھپتھپائیں۔",
829 "syncing_wallet_alert_title": "آپ کا بٹوہ مطابقت پذیر ہو رہا ہے۔",
830 "template": "سانچے",
res/values/strings_vi.arb
+1
@@ -819,6 +819,7 @@
819 "sync_status_syncronizing": "ĐANG ĐỒNG BỘ",
820 "sync_status_timed_out": "HẾT THỜI GIAN",
821 "sync_status_unsupported": "NÓT KHÔNG ĐƯỢC HỖ TRỢ",
822 + "synchronizing": "Đồng bộ hóa",
823 "syncing_wallet_alert_content": "Số dư và danh sách giao dịch của bạn có thể không đầy đủ cho đến khi nó hiển thị “ĐÃ ĐỒNG BỘ” ở trên cùng. Nhấn vào đây để tìm hiểu thêm.",
824 "syncing_wallet_alert_title": "Ví của bạn đang đồng bộ",
825 "template": "Mẫu",
res/values/strings_yo.arb
+1
@@ -823,6 +823,7 @@
823 "sync_status_syncronizing": "Ń MÚDỌ́GBA",
824 "sync_status_timed_out": "Ti akoko jade",
825 "sync_status_unsupported": "Ile-igbimọ ti ko ni atilẹyin",
826 + "synchronizing": "Mimuuṣiṣẹpọ",
827 "syncing_wallet_alert_content": "Iwontunws.funfun rẹ ati atokọ idunadura le ma pari titi ti yoo fi sọ “SYNCHRONIZED” ni oke. Tẹ/tẹ ni kia kia lati ni imọ siwaju sii.",
828 "syncing_wallet_alert_title": "Apamọwọ rẹ n muṣiṣẹpọ",
829 "template": "Àwòṣe",
res/values/strings_zh.arb
+1
@@ -822,6 +822,7 @@
822 "sync_status_syncronizing": "正在同步",
823 "sync_status_timed_out": "时间到",
824 "sync_status_unsupported": "不支持的节点",
825 + "synchronizing": "同步",
826 "syncing_wallet_alert_content": "您的余额和交易列表可能不完整,直到顶部显示“已同步”。单击/点击以了解更多信息。",
827 "syncing_wallet_alert_title": "您的钱包正在同步",
828 "template": "模板",
scripts/android/app_env.sh
+4 -4
@@ -14,15 +14,15 @@ TYPES=($MONERO_COM $CAKEWALLET)
14 APP_ANDROID_TYPE=$1
15
16 MONERO_COM_NAME="Monero.com"
17 -MONERO_COM_VERSION="1.20.3"
18 -MONERO_COM_BUILD_NUMBER=115
17 +MONERO_COM_VERSION="1.21.0"
18 +MONERO_COM_BUILD_NUMBER=116
19 MONERO_COM_BUNDLE_ID="com.monero.app"
20 MONERO_COM_PACKAGE="com.monero.app"
21 MONERO_COM_SCHEME="monero.com"
22
23 CAKEWALLET_NAME="Cake Wallet"
24 -CAKEWALLET_VERSION="4.23.4"
25 -CAKEWALLET_BUILD_NUMBER=249
24 +CAKEWALLET_VERSION="4.24.0"
25 +CAKEWALLET_BUILD_NUMBER=252
26 CAKEWALLET_BUNDLE_ID="com.cakewallet.cake_wallet"
27 CAKEWALLET_PACKAGE="com.cakewallet.cake_wallet"
28 CAKEWALLET_SCHEME="cakewallet"
scripts/android/build_decred.sh
+1 -1
@@ -7,7 +7,7 @@ cd "$(dirname "$0")"
7 CW_DECRED_DIR=$(realpath ../..)/cw_decred
8 LIBWALLET_PATH="${PWD}/decred/libwallet"
9 LIBWALLET_URL="https://github.com/decred/libwallet.git"
10 -LIBWALLET_VERSION="87b2769538db3065b334d247b25774593fc6443d"
10 +LIBWALLET_VERSION="dba5327d35cb5d5d1ff113b780869deee154511f"
11
12 if [ -e $LIBWALLET_PATH ]; then
13 rm -fr $LIBWALLET_PATH/{*,.*} || true
scripts/ios/app_env.sh
+4 -4
@@ -12,13 +12,13 @@ TYPES=($MONERO_COM $CAKEWALLET)
12 APP_IOS_TYPE=$1
13
14 MONERO_COM_NAME="Monero.com"
15 -MONERO_COM_VERSION="1.20.3"
16 -MONERO_COM_BUILD_NUMBER=113
15 +MONERO_COM_VERSION="1.21.0"
16 +MONERO_COM_BUILD_NUMBER=114
17 MONERO_COM_BUNDLE_ID="com.cakewallet.monero"
18
19 CAKEWALLET_NAME="Cake Wallet"
20 -CAKEWALLET_VERSION="4.23.4"
21 -CAKEWALLET_BUILD_NUMBER=302
20 +CAKEWALLET_VERSION="4.24.0"
21 +CAKEWALLET_BUILD_NUMBER=305
22 CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet"
23
24
scripts/ios/build_decred.sh
+1 -1
@@ -3,7 +3,7 @@ set -e
3 . ./config.sh
4 LIBWALLET_PATH="${EXTERNAL_IOS_SOURCE_DIR}/libwallet"
5 LIBWALLET_URL="https://github.com/decred/libwallet.git"
6 -LIBWALLET_VERSION="87b2769538db3065b334d247b25774593fc6443d"
6 +LIBWALLET_VERSION="dba5327d35cb5d5d1ff113b780869deee154511f"
7
8 if [ -e $LIBWALLET_PATH ]; then
9 rm -fr $LIBWALLET_PATH
scripts/linux/app_env.sh
+2 -2
@@ -14,8 +14,8 @@ if [ -n "$1" ]; then
14 fi
15
16 CAKEWALLET_NAME="Cake Wallet"
17 -CAKEWALLET_VERSION="1.13.4"
18 -CAKEWALLET_BUILD_NUMBER=49
17 +CAKEWALLET_VERSION="1.14.0"
18 +CAKEWALLET_BUILD_NUMBER=50
19
20 if ! [[ " ${TYPES[*]} " =~ " ${APP_LINUX_TYPE} " ]]; then
21 echo "Wrong app type."
scripts/macos/app_config.sh
+1 -1
@@ -36,7 +36,7 @@ case $APP_MACOS_TYPE in
36 $MONERO_COM)
37 CONFIG_ARGS="--monero";;
38 $CAKEWALLET)
39 - CONFIG_ARGS="--monero --bitcoin --ethereum --polygon --nano --bitcoinCash --solana --tron --wownero --decred";;
39 + CONFIG_ARGS="--monero --bitcoin --ethereum --polygon --nano --bitcoinCash --solana --tron --wownero";;
40 esac
41
42 cp -rf pubspec_description.yaml pubspec.yaml
scripts/macos/app_env.sh
+4 -4
@@ -16,13 +16,13 @@ if [ -n "$1" ]; then
16 fi
17
18 MONERO_COM_NAME="Monero.com"
19 -MONERO_COM_VERSION="1.10.3"
20 -MONERO_COM_BUILD_NUMBER=45
19 +MONERO_COM_VERSION="1.11.0"
20 +MONERO_COM_BUILD_NUMBER=46
21 MONERO_COM_BUNDLE_ID="com.cakewallet.monero"
22
23 CAKEWALLET_NAME="Cake Wallet"
24 -CAKEWALLET_VERSION="1.16.4"
25 -CAKEWALLET_BUILD_NUMBER=107
24 +CAKEWALLET_VERSION="1.17.0"
25 +CAKEWALLET_BUILD_NUMBER=108
26 CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet"
27
28 if ! [[ " ${TYPES[*]} " =~ " ${APP_MACOS_TYPE} " ]]; then
scripts/macos/build_decred.sh
+1 -1
@@ -4,7 +4,7 @@
4
5 LIBWALLET_PATH="${EXTERNAL_MACOS_SOURCE_DIR}/libwallet"
6 LIBWALLET_URL="https://github.com/decred/libwallet.git"
7 -LIBWALLET_VERSION="87b2769538db3065b334d247b25774593fc6443d"
7 +LIBWALLET_VERSION="dba5327d35cb5d5d1ff113b780869deee154511f"
8
9 echo "======================= DECRED LIBWALLET ========================="
10
scripts/windows/build_exe_installer.iss
+1 -1
@@ -1,5 +1,5 @@
1 #define MyAppName "Cake Wallet"
2 -#define MyAppVersion "0.4.4"
2 +#define MyAppVersion "0.5.0"
3 #define MyAppPublisher "Cake Labs LLC"
4 #define MyAppURL "https://cakewallet.com/"
5 #define MyAppExeName "CakeWallet.exe"