Merge branch 'main' into cyjan-reduce-apk-size

This commit is contained in:
Omar Hatem 2025-03-26 15:07:05 +02:00 committed by GitHub
commit 1701ccc80e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
73 changed files with 388 additions and 370 deletions
.github/workflows
assets/text
cw_bitcoin
cw_core
cw_decred
cw_monero
cw_nano
cw_wownero
cw_zano
ios
lib
macos
res/values
scripts
tool

View file

@ -11,7 +11,7 @@ jobs:
- name: Check for print() statements in dart code (use printV() instead) - name: Check for print() statements in dart code (use printV() instead)
if: github.event_name == 'pull_request' if: github.event_name == 'pull_request'
run: | run: |
GIT_GREP_OUT="$(git grep ' print(' | (grep .dart: || test $? = 1) | (grep -v print_verbose.dart || test $? = 1) || true)" GIT_GREP_OUT="$(git grep ' print(' | (grep .dart: || test $? = 1) | (grep -v print_verbose.dart || test $? = 1) | (grep -v print_verbose_dummy.dart || test $? = 1) || true)"
[[ "x$GIT_GREP_OUT" == "x" ]] && exit 0 [[ "x$GIT_GREP_OUT" == "x" ]] && exit 0
echo "$GIT_GREP_OUT" echo "$GIT_GREP_OUT"
echo "There are .dart files which use print() statements" echo "There are .dart files which use print() statements"

View file

@ -1,3 +1,5 @@
UI/UX enhancements Add background sync to Monero
Stability improvements Enhance Backup files
Improve app usability and user experience
User interface enhancements
Bug fixes Bug fixes

View file

@ -1 +1,8 @@
Update for Zano's Hard fork Add background sync to Monero
Add Decred Wallet
Remove Haven Wallet
Fix and Improve Solana Wallet
Enhance Backup files
Improve app usability and user experience
User interface enhancements
Bug fixes

View file

@ -29,10 +29,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: asn1lib name: asn1lib
sha256: "1c296cd268f486cabcc3930e9b93a8133169305f18d722916e675959a88f6d2c" sha256: "4bae5ae63e6d6dd17c4aac8086f3dec26c0236f6a0f03416c6c19d830c367cf5"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.5.9" version: "1.5.8"
async: async:
dependency: transitive dependency: transitive
description: description:
@ -129,18 +129,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: build_config name: build_config
sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33" sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.1.2" version: "1.1.1"
build_daemon: build_daemon:
dependency: transitive dependency: transitive
description: description:
name: build_daemon name: build_daemon
sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa" sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.0.4" version: "4.0.2"
build_resolvers: build_resolvers:
dependency: "direct dev" dependency: "direct dev"
description: description:
@ -495,10 +495,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: http_parser name: http_parser
sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.1.2" version: "4.0.2"
intl: intl:
dependency: "direct main" dependency: "direct main"
description: description:
@ -794,10 +794,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: pubspec_parse name: pubspec_parse
sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082" sha256: "81876843eb50dc2e1e5b151792c9a985c5ed2536914115ed04e9c8528f6647b0"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.5.0" version: "1.4.0"
quiver: quiver:
dependency: transitive dependency: transitive
description: description:
@ -882,10 +882,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: shelf name: shelf
sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.4.2" version: "1.4.1"
shelf_web_socket: shelf_web_socket:
dependency: transitive dependency: transitive
description: description:
@ -1117,5 +1117,5 @@ packages:
source: hosted source: hosted
version: "2.2.2" version: "2.2.2"
sdks: sdks:
dart: ">=3.6.0 <4.0.0" dart: ">=3.5.0 <4.0.0"
flutter: ">=3.24.0" flutter: ">=3.24.0"

View file

@ -1,4 +1,5 @@
import 'dart:math'; import 'dart:math';
import 'package:flutter/foundation.dart';
void printV(dynamic content) { void printV(dynamic content) {
CustomTrace programInfo = CustomTrace(StackTrace.current); CustomTrace programInfo = CustomTrace(StackTrace.current);
@ -20,7 +21,7 @@ class CustomTrace {
try { try {
_parseTrace(); _parseTrace();
} catch (e) { } catch (e) {
print("Unable to parse trace (printV): $e"); if (kDebugMode) print("Unable to parse trace (printV): $e");
} }
} }
@ -80,7 +81,7 @@ class CustomTrace {
columnStr = columnStr.replaceFirst(")", ""); columnStr = columnStr.replaceFirst(")", "");
this.columnNumber = int.tryParse(columnStr); this.columnNumber = int.tryParse(columnStr);
} catch (e) { } catch (e) {
print("Unable to parse trace (printV): $e"); if (kDebugMode) print("Unable to parse trace (printV): $e");
} }
} }
} }

View file

@ -34,10 +34,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: asn1lib name: asn1lib
sha256: "1c296cd268f486cabcc3930e9b93a8133169305f18d722916e675959a88f6d2c" sha256: "4bae5ae63e6d6dd17c4aac8086f3dec26c0236f6a0f03416c6c19d830c367cf5"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.5.9" version: "1.5.8"
async: async:
dependency: transitive dependency: transitive
description: description:
@ -67,50 +67,50 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: build name: build
sha256: cef23f1eda9b57566c81e2133d196f8e3df48f244b317368d65c5943d91148f0 sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.4.2" version: "2.4.1"
build_config: build_config:
dependency: transitive dependency: transitive
description: description:
name: build_config name: build_config
sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33" sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.1.2" version: "1.1.1"
build_daemon: build_daemon:
dependency: transitive dependency: transitive
description: description:
name: build_daemon name: build_daemon
sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa" sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.0.4" version: "4.0.2"
build_resolvers: build_resolvers:
dependency: "direct dev" dependency: "direct dev"
description: description:
name: build_resolvers name: build_resolvers
sha256: b9e4fda21d846e192628e7a4f6deda6888c36b5b69ba02ff291a01fd529140f0 sha256: "339086358431fa15d7eca8b6a36e5d783728cf025e559b834f4609a1fcfb7b0a"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.4.4" version: "2.4.2"
build_runner: build_runner:
dependency: "direct dev" dependency: "direct dev"
description: description:
name: build_runner name: build_runner
sha256: "058fe9dce1de7d69c4b84fada934df3e0153dd000758c4d65964d0166779aa99" sha256: "028819cfb90051c6b5440c7e574d1896f8037e3c96cf17aaeb054c9311cfbf4d"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.4.15" version: "2.4.13"
build_runner_core: build_runner_core:
dependency: transitive dependency: transitive
description: description:
name: build_runner_core name: build_runner_core
sha256: "22e3aa1c80e0ada3722fe5b63fd43d9c8990759d0a2cf489c8c5d7b2bdebc021" sha256: f8126682b87a7282a339b871298cc12009cb67109cfa1614d6436fb0289193e0
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "8.0.0" version: "7.3.2"
built_collection: built_collection:
dependency: transitive dependency: transitive
description: description:
@ -212,10 +212,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: dart_style name: dart_style
sha256: "7306ab8a2359a48d22310ad823521d723acfed60ee1f7e37388e8986853b6820" sha256: "7856d364b589d1f08986e140938578ed36ed948581fbc3bc9aef1805039ac5ab"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.3.8" version: "2.3.7"
decimal: decimal:
dependency: "direct main" dependency: "direct main"
description: description:
@ -342,10 +342,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: http_parser name: http_parser
sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.1.2" version: "4.0.2"
intl: intl:
dependency: "direct main" dependency: "direct main"
description: description:
@ -599,10 +599,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: pubspec_parse name: pubspec_parse
sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082" sha256: "81876843eb50dc2e1e5b151792c9a985c5ed2536914115ed04e9c8528f6647b0"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.5.0" version: "1.4.0"
rational: rational:
dependency: transitive dependency: transitive
description: description:
@ -615,18 +615,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: shelf name: shelf
sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.4.2" version: "1.4.1"
shelf_web_socket: shelf_web_socket:
dependency: transitive dependency: transitive
description: description:
name: shelf_web_socket name: shelf_web_socket
sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925" sha256: cc36c297b52866d203dbf9332263c94becc2fe0ceaa9681d07b6ef9807023b67
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.0" version: "2.0.1"
sky_engine: sky_engine:
dependency: transitive dependency: transitive
description: flutter description: flutter
@ -809,5 +809,5 @@ packages:
source: hosted source: hosted
version: "3.1.3" version: "3.1.3"
sdks: sdks:
dart: ">=3.6.0 <4.0.0" dart: ">=3.5.0 <4.0.0"
flutter: ">=3.24.0" flutter: ">=3.24.0"

View file

@ -3,7 +3,6 @@ import 'dart:ffi';
import 'dart:io'; import 'dart:io';
import 'dart:async'; import 'dart:async';
import 'dart:isolate'; import 'dart:isolate';
import 'package:flutter/foundation.dart';
import 'package:cw_core/utils/print_verbose.dart'; import 'package:cw_core/utils/print_verbose.dart';
import 'package:cw_decred/api/libdcrwallet_bindings.dart'; import 'package:cw_decred/api/libdcrwallet_bindings.dart';
import 'package:cw_decred/api/util.dart'; import 'package:cw_decred/api/util.dart';
@ -79,10 +78,12 @@ class Libwallet {
switch (method) { switch (method) {
case "initlibdcrwallet": case "initlibdcrwallet":
final logDir = args["logdir"] ?? ""; final logDir = args["logdir"] ?? "";
final level = args["level"] ?? "";
final cLogDir = logDir.toCString(); final cLogDir = logDir.toCString();
final cLevel = level.toCString();
executePayloadFn( executePayloadFn(
fn: () => dcrwalletApi.initialize(cLogDir), fn: () => dcrwalletApi.initialize(cLogDir, cLevel),
ptrsToFree: [cLogDir], ptrsToFree: [cLogDir, cLevel],
); );
break; break;
case "createwallet": case "createwallet":
@ -300,7 +301,7 @@ class Libwallet {
break; break;
case "shutdown": case "shutdown":
final name = args["name"] ?? ""; final name = args["name"] ?? "";
final cName = name.toCString(); // final cName = name.toCString();
executePayloadFn( executePayloadFn(
fn: () => dcrwalletApi.shutdown(), fn: () => dcrwalletApi.shutdown(),
ptrsToFree: [], ptrsToFree: [],
@ -326,8 +327,8 @@ class Libwallet {
// initLibdcrwallet initializes libdcrwallet using the provided logDir and gets // initLibdcrwallet initializes libdcrwallet using the provided logDir and gets
// it ready for use. This must be done before attempting to create, load or use // it ready for use. This must be done before attempting to create, load or use
// a wallet. // a wallet. An empty string can be used to log to stdout and create no log files.
Future<void> initLibdcrwallet(String logDir) async { Future<void> initLibdcrwallet(String logDir, String level) async {
if (_closed) throw StateError('Closed'); if (_closed) throw StateError('Closed');
final completer = Completer<Object?>.sync(); final completer = Completer<Object?>.sync();
final id = _idCounter++; final id = _idCounter++;
@ -335,6 +336,7 @@ class Libwallet {
final req = { final req = {
"method": "initlibdcrwallet", "method": "initlibdcrwallet",
"logdir": logDir, "logdir": logDir,
"level": level,
}; };
_commands.send((id, req)); _commands.send((id, req));
await completer.future; await completer.future;
@ -463,7 +465,11 @@ class Libwallet {
}; };
_commands.send((id, req)); _commands.send((id, req));
final res = await completer.future as PayloadResult; final res = await completer.future as PayloadResult;
return jsonDecode(res.payload); try {
return jsonDecode(res.payload);
} catch (_) {
return {};
}
} }
Future<String> estimateFee(String walletName, int numBlocks) async { Future<String> estimateFee(String walletName, int numBlocks) async {

View file

@ -380,7 +380,7 @@ abstract class DecredWalletBase
totalAmt = totalIn; totalAmt = totalIn;
} else if (out.cryptoAmount != null) { } else if (out.cryptoAmount != null) {
final coins = double.parse(out.cryptoAmount!); final coins = double.parse(out.cryptoAmount!);
amt = (coins * 1e8).toInt(); amt = (coins * 1e8).round();
} }
totalAmt += amt; totalAmt += amt;
final o = { final o = {
@ -415,7 +415,7 @@ abstract class DecredWalletBase
}; };
final fee = decoded["fee"] ?? 0; final fee = decoded["fee"] ?? 0;
if (sendAll) { if (sendAll) {
totalAmt = (totalAmt - fee).toInt(); totalAmt = (totalAmt - fee).round();
} }
return DecredPendingTransaction( return DecredPendingTransaction(
txid: decoded["txid"] ?? "", amount: totalAmt, fee: fee, rawHex: signedHex, send: send); txid: decoded["txid"] ?? "", amount: totalAmt, fee: fee, rawHex: signedHex, send: send);
@ -475,36 +475,41 @@ abstract class DecredWalletBase
} }
Future<Map<String, DecredTransactionInfo>> fetchFiveTransactions(int from) async { Future<Map<String, DecredTransactionInfo>> fetchFiveTransactions(int from) async {
final res = await _libwallet.listTransactions(walletInfo.name, from.toString(), "5"); try {
final decoded = json.decode(res); final res = await _libwallet.listTransactions(walletInfo.name, from.toString(), "5");
var txs = <String, DecredTransactionInfo>{}; final decoded = json.decode(res);
for (final d in decoded) { var txs = <String, DecredTransactionInfo>{};
final txid = uniqueTxID(d["txid"] ?? "", d["vout"] ?? 0); for (final d in decoded) {
var direction = TransactionDirection.outgoing; final txid = uniqueTxID(d["txid"] ?? "", d["vout"] ?? 0);
if (d["category"] == "receive") { var direction = TransactionDirection.outgoing;
direction = TransactionDirection.incoming; if (d["category"] == "receive") {
direction = TransactionDirection.incoming;
}
final amountDouble = d["amount"] ?? 0.0;
final amount = (amountDouble * 1e8).round().abs();
final feeDouble = d["fee"] ?? 0.0;
final fee = (feeDouble * 1e8).round().abs();
final confs = d["confirmations"] ?? 0;
final sendTime = d["time"] ?? 0;
final height = d["height"] ?? 0;
final txInfo = DecredTransactionInfo(
id: txid,
amount: amount,
fee: fee,
direction: direction,
isPending: confs == 0,
date: DateTime.fromMillisecondsSinceEpoch(sendTime * 1000, isUtc: false),
height: height,
confirmations: confs,
to: d["address"] ?? "",
);
txs[txid] = txInfo;
} }
final amountDouble = d["amount"] ?? 0.0; return txs;
final amount = (amountDouble * 1e8).toInt().abs(); } catch (e) {
final feeDouble = d["fee"] ?? 0.0; printV(e);
final fee = (feeDouble * 1e8).toInt().abs(); return {};
final confs = d["confirmations"] ?? 0;
final sendTime = d["time"] ?? 0;
final height = d["height"] ?? 0;
final txInfo = DecredTransactionInfo(
id: txid,
amount: amount,
fee: fee,
direction: direction,
isPending: confs == 0,
date: DateTime.fromMillisecondsSinceEpoch(sendTime * 1000, isUtc: false),
height: height,
confirmations: confs,
to: d["address"] ?? "",
);
txs[txid] = txInfo;
} }
return txs;
} }
// uniqueTxID combines the tx id and vout to create a unique id. // uniqueTxID combines the tx id and vout to create a unique id.
@ -612,21 +617,25 @@ abstract class DecredWalletBase
} }
Future<void> fetchUnspents() async { Future<void> fetchUnspents() async {
final res = await _libwallet.listUnspents(walletInfo.name); try {
final decoded = json.decode(res); final res = await _libwallet.listUnspents(walletInfo.name);
var unspents = <Unspent>[]; final decoded = json.decode(res);
for (final d in decoded) { var unspents = <Unspent>[];
final spendable = d["spendable"] ?? false; for (final d in decoded) {
if (!spendable) { final spendable = d["spendable"] ?? false;
continue; if (!spendable) {
continue;
}
final amountDouble = d["amount"] ?? 0.0;
final amount = (amountDouble * 1e8).round().abs();
final utxo = Unspent(d["address"] ?? "", d["txid"] ?? "", amount, d["vout"] ?? 0, null);
utxo.isChange = d["ischange"] ?? false;
unspents.add(utxo);
} }
final amountDouble = d["amount"] ?? 0.0; _unspents = unspents;
final amount = (amountDouble * 1e8).toInt().abs(); } catch (e) {
final utxo = Unspent(d["address"] ?? "", d["txid"] ?? "", amount, d["vout"] ?? 0, null); printV(e);
utxo.isChange = d["ischange"] ?? false;
unspents.add(utxo);
} }
_unspents = unspents;
} }
List<Unspent> unspents() { List<Unspent> unspents() {

View file

@ -1,4 +1,5 @@
import 'dart:convert'; import 'dart:convert';
import 'package:cw_core/utils/print_verbose.dart';
import 'package:mobx/mobx.dart'; import 'package:mobx/mobx.dart';
import 'package:cw_core/address_info.dart'; import 'package:cw_core/address_info.dart';
@ -103,13 +104,18 @@ abstract class DecredWalletAddressesBase extends WalletAddresses with Store {
if (this.isEnabledAutoGenerateSubaddress) { if (this.isEnabledAutoGenerateSubaddress) {
nUnused = "3"; nUnused = "3";
} }
final res = await _libwallet.addresses(walletInfo.name, nUsed, nUnused); try {
final decoded = json.decode(res); final res = await _libwallet.addresses(walletInfo.name, nUsed, nUnused);
final usedAddrs = List<String>.from(decoded["used"] ?? []); final decoded = json.decode(res);
final unusedAddrs = List<String>.from(decoded["unused"] ?? []); final usedAddrs = List<String>.from(decoded["used"] ?? []);
// index is the index of the first unused address. final unusedAddrs = List<String>.from(decoded["unused"] ?? []);
final index = decoded["index"] ?? 0; // index is the index of the first unused address.
return new LibAddresses(usedAddrs, unusedAddrs, index); final index = decoded["index"] ?? 0;
return new LibAddresses(usedAddrs, unusedAddrs, index);
} catch (e) {
printV(e);
return LibAddresses([], [], 0);
}
} }
Future<void> generateNewAddress(String label) async { Future<void> generateNewAddress(String label) async {

View file

@ -27,17 +27,16 @@ class DecredWalletService extends WalletService<
static final pubkeyRestorePathTestnet = "m/44'/1'/0'"; static final pubkeyRestorePathTestnet = "m/44'/1'/0'";
final mainnet = "mainnet"; final mainnet = "mainnet";
final testnet = "testnet"; final testnet = "testnet";
Libwallet? libwallet; static Libwallet? libwallet;
Future<void> init() async { Future<void> init() async {
if (libwallet != null) { if (libwallet != null) {
return; return;
} }
libwallet = await Libwallet.spawn(); libwallet = await Libwallet.spawn();
// Use the general path for all dcr wallets as the general log directory. // Init logging with no directory to force printing to stdout and only
// Individual wallet paths may be removed if the wallet is deleted. // print ERROR level logs.
final dcrLogDir = await pathForWalletDir(name: '', type: WalletType.decred); libwallet!.initLibdcrwallet("", "err");
libwallet!.initLibdcrwallet(dcrLogDir);
} }
void closeLibwallet() { void closeLibwallet() {

View file

@ -75,18 +75,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: build_config name: build_config
sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33" sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.1.2" version: "1.1.1"
build_daemon: build_daemon:
dependency: transitive dependency: transitive
description: description:
name: build_daemon name: build_daemon
sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa" sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.0.4" version: "4.0.2"
build_resolvers: build_resolvers:
dependency: "direct dev" dependency: "direct dev"
description: description:
@ -365,10 +365,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: http_parser name: http_parser
sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.1.2" version: "4.0.2"
intl: intl:
dependency: transitive dependency: transitive
description: description:
@ -646,10 +646,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: shelf name: shelf
sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.4.2" version: "1.4.1"
shelf_web_socket: shelf_web_socket:
dependency: transitive dependency: transitive
description: description:
@ -848,5 +848,5 @@ packages:
source: hosted source: hosted
version: "2.2.2" version: "2.2.2"
sdks: sdks:
dart: ">=3.6.0 <4.0.0" dart: ">=3.5.0 <4.0.0"
flutter: ">=3.24.0" flutter: ">=3.24.0"

View file

@ -161,31 +161,39 @@ Future<PendingTransactionDescription> createTransactionSync(
); );
} }
PendingTransactionDescription createTransactionMultDestSync( Future<PendingTransactionDescription> createTransactionMultDest(
{required List<MoneroOutput> outputs, {required List<MoneroOutput> outputs,
required String paymentId, required String paymentId,
required int priorityRaw, required int priorityRaw,
int accountIndex = 0, int accountIndex = 0,
List<String> preferredInputs = const []}) { List<String> preferredInputs = const []}) async {
final dstAddrs = outputs.map((e) => e.address).toList(); final dstAddrs = outputs.map((e) => e.address).toList();
final amounts = outputs.map((e) => monero.Wallet_amountFromString(e.amount)).toList(); final amounts = outputs.map((e) => monero.Wallet_amountFromString(e.amount)).toList();
// printV("multDest: dstAddrs: $dstAddrs"); final waddr = wptr!.address;
// printV("multDest: amounts: $amounts");
// force reconnection in case the os killed the connection
Isolate.run(() async {
monero.Wallet_synchronized(Pointer.fromAddress(waddr));
});
final txptr = Pointer<Void>.fromAddress(await Isolate.run(() {
return monero.Wallet_createTransactionMultDest(
Pointer.fromAddress(waddr),
dstAddr: dstAddrs,
isSweepAll: false,
amounts: amounts,
mixinCount: 0,
pendingTransactionPriority: priorityRaw,
subaddr_account: accountIndex,
).address;
}));
final txptr = monero.Wallet_createTransactionMultDest(
wptr!,
dstAddr: dstAddrs,
isSweepAll: false,
amounts: amounts,
mixinCount: 0,
pendingTransactionPriority: priorityRaw,
subaddr_account: accountIndex,
);
if (monero.PendingTransaction_status(txptr) != 0) { if (monero.PendingTransaction_status(txptr) != 0) {
throw CreationTransactionException(message: monero.PendingTransaction_errorString(txptr)); throw CreationTransactionException(message: monero.PendingTransaction_errorString(txptr));
} }
return PendingTransactionDescription( return PendingTransactionDescription(
amount: monero.PendingTransaction_amount(txptr), amount: monero.PendingTransaction_amount(txptr),
fee: monero.PendingTransaction_fee(txptr), fee: monero.PendingTransaction_fee(txptr),
@ -255,21 +263,6 @@ Future<PendingTransactionDescription> _createTransactionSync(Map args) async {
preferredInputs: preferredInputs); preferredInputs: preferredInputs);
} }
PendingTransactionDescription _createTransactionMultDestSync(Map args) {
final outputs = args['outputs'] as List<MoneroOutput>;
final paymentId = args['paymentId'] as String;
final priorityRaw = args['priorityRaw'] as int;
final accountIndex = args['accountIndex'] as int;
final preferredInputs = args['preferredInputs'] as List<String>;
return createTransactionMultDestSync(
outputs: outputs,
paymentId: paymentId,
priorityRaw: priorityRaw,
accountIndex: accountIndex,
preferredInputs: preferredInputs);
}
Future<PendingTransactionDescription> createTransaction( Future<PendingTransactionDescription> createTransaction(
{required String address, {required String address,
required int priorityRaw, required int priorityRaw,
@ -286,21 +279,6 @@ Future<PendingTransactionDescription> createTransaction(
'preferredInputs': preferredInputs 'preferredInputs': preferredInputs
}); });
Future<PendingTransactionDescription> createTransactionMultDest(
{required List<MoneroOutput> outputs,
required int priorityRaw,
String paymentId = '',
int accountIndex = 0,
List<String> preferredInputs = const []}) async =>
_createTransactionMultDestSync({
'outputs': outputs,
'paymentId': paymentId,
'priorityRaw': priorityRaw,
'accountIndex': accountIndex,
'preferredInputs': preferredInputs
});
class Transaction { class Transaction {
final String displayLabel; final String displayLabel;
late final String subaddressLabel = monero.Wallet_getSubaddressLabel( late final String subaddressLabel = monero.Wallet_getSubaddressLabel(

View file

@ -89,11 +89,7 @@ void createWalletSync(
throw WalletCreationException(message: monero.Wallet_errorString(newWptr)); throw WalletCreationException(message: monero.Wallet_errorString(newWptr));
} }
monero.Wallet_setupBackgroundSync(newWptr, backgroundSyncType: 2, walletPassword: password, backgroundCachePassword: ''); setupBackgroundSync(password, newWptr);
status = monero.Wallet_status(newWptr);
if (status != 0) {
throw WalletCreationException(message: monero.Wallet_errorString(newWptr));
}
wptr = newWptr; wptr = newWptr;
monero.Wallet_setCacheAttribute(wptr!, key: "cakewallet.passphrase", value: passphrase); monero.Wallet_setCacheAttribute(wptr!, key: "cakewallet.passphrase", value: passphrase);
@ -186,13 +182,6 @@ void restoreWalletFromKeysSync(
message: monero.Wallet_errorString(newWptr)); message: monero.Wallet_errorString(newWptr));
} }
monero.Wallet_setupBackgroundSync(newWptr, backgroundSyncType: 2, walletPassword: password, backgroundCachePassword: '');
status = monero.Wallet_status(newWptr);
if (status != 0) {
throw WalletCreationException(message: monero.Wallet_errorString(newWptr));
}
// CW-712 - Try to restore deterministic wallet first, if the view key doesn't // CW-712 - Try to restore deterministic wallet first, if the view key doesn't
// match the view key provided // match the view key provided
if (spendKey != "") { if (spendKey != "") {
@ -216,12 +205,8 @@ void restoreWalletFromKeysSync(
throw WalletRestoreFromKeysException( throw WalletRestoreFromKeysException(
message: monero.Wallet_errorString(newWptr)); message: monero.Wallet_errorString(newWptr));
} }
monero.Wallet_setupBackgroundSync(newWptr, backgroundSyncType: 2, walletPassword: password, backgroundCachePassword: ''); setupBackgroundSync(password, newWptr);
status = monero.Wallet_status(newWptr);
if (status != 0) {
throw WalletCreationException(message: monero.Wallet_errorString(newWptr));
}
} }
} }
@ -267,12 +252,8 @@ void restoreWalletFromPolyseedWithOffset(
monero.Wallet_setCacheAttribute(wptr!, key: "cakewallet.seed", value: seed); monero.Wallet_setCacheAttribute(wptr!, key: "cakewallet.seed", value: seed);
monero.Wallet_setCacheAttribute(wptr!, key: "cakewallet.passphrase", value: seedOffset); monero.Wallet_setCacheAttribute(wptr!, key: "cakewallet.passphrase", value: seedOffset);
monero.Wallet_store(wptr!); monero.Wallet_store(wptr!);
monero.Wallet_setupBackgroundSync(newWptr, backgroundSyncType: 2, walletPassword: password, backgroundCachePassword: ''); setupBackgroundSync(password, newWptr);
status = monero.Wallet_status(newWptr);
if (status != 0) {
throw WalletCreationException(message: monero.Wallet_errorString(newWptr));
}
storeSync(); storeSync();
openedWalletsByPath[path] = wptr!; openedWalletsByPath[path] = wptr!;
@ -323,12 +304,8 @@ void restoreWalletFromSpendKeySync(
monero.Wallet_setCacheAttribute(wptr!, key: "cakewallet.seed", value: seed); monero.Wallet_setCacheAttribute(wptr!, key: "cakewallet.seed", value: seed);
storeSync(); storeSync();
monero.Wallet_setupBackgroundSync(newWptr, backgroundSyncType: 2, walletPassword: password, backgroundCachePassword: ''); setupBackgroundSync(password, newWptr);
status = monero.Wallet_status(newWptr);
if (status != 0) {
throw WalletCreationException(message: monero.Wallet_errorString(newWptr));
}
openedWalletsByPath[path] = wptr!; openedWalletsByPath[path] = wptr!;
_lastOpenedWallet = path; _lastOpenedWallet = path;
@ -361,13 +338,6 @@ Future<void> restoreWalletFromHardwareWallet(
throw WalletRestoreFromSeedException(message: error); throw WalletRestoreFromSeedException(message: error);
} }
// TODO: Check with upstream if we can use background sync here
// monero.Wallet_setupBackgroundSync(newWptr, backgroundSyncType: 2, walletPassword: password, backgroundCachePassword: '');
// status = monero.Wallet_status(newWptr);
// if (status != 0) {
// throw WalletCreationException(message: monero.Wallet_errorString(newWptr));
// }
wptr = newWptr; wptr = newWptr;
_lastOpenedWallet = path; _lastOpenedWallet = path;
openedWalletsByPath[path] = wptr!; openedWalletsByPath[path] = wptr!;
@ -437,12 +407,8 @@ Future<void> loadWallet(
printV("loadWallet:"+err); printV("loadWallet:"+err);
throw WalletOpeningException(message: err); throw WalletOpeningException(message: err);
} }
monero.Wallet_setupBackgroundSync(newWptr, backgroundSyncType: 2, walletPassword: password, backgroundCachePassword: ''); if (deviceType == 0) {
status = monero.Wallet_status(newWptr); setupBackgroundSync(password, newWptr);
if (status != 0) {
final err = monero.Wallet_errorString(newWptr);
printV("loadWallet:"+err);
throw WalletOpeningException(message: err);
} }
wptr = newWptr; wptr = newWptr;
@ -451,6 +417,17 @@ Future<void> loadWallet(
} }
} }
void setupBackgroundSync(String password, Pointer<Void>? wptrOverride) {
if (isViewOnlyBySpendKey(wptrOverride)) {
return;
}
monero.Wallet_setupBackgroundSync(wptrOverride ?? wptr!, backgroundSyncType: 2, walletPassword: password, backgroundCachePassword: '');
if (monero.Wallet_status(wptrOverride ?? wptr!) != 0) {
// We simply ignore the error.
printV("setupBackgroundSync: ${monero.Wallet_errorString(wptrOverride ?? wptr!)}");
}
}
void _createWallet(Map<String, dynamic> args) { void _createWallet(Map<String, dynamic> args) {
final path = args['path'] as String; final path = args['path'] as String;
final password = args['password'] as String; final password = args['password'] as String;
@ -591,4 +568,4 @@ Future<void> restoreFromSpendKey(
bool isWalletExist({required String path}) => _isWalletExist(path); bool isWalletExist({required String path}) => _isWalletExist(path);
bool isViewOnlyBySpendKey() => int.tryParse(monero.Wallet_secretSpendKey(wptr!)) == 0; bool isViewOnlyBySpendKey(Pointer<Void>? wptrOverride) => int.tryParse(monero.Wallet_secretSpendKey(wptrOverride ?? wptr!)) == 0;

View file

@ -233,18 +233,14 @@ abstract class MoneroWalletBase extends WalletBase<MoneroBalance,
return; return;
} }
isBackgroundSyncRunning = true; isBackgroundSyncRunning = true;
int status = monero.Wallet_status(wptr!);
if (status != 0) {
final err = monero.Wallet_errorString(wptr!);
throw Exception("unable to setup background sync: $err");
}
await save(); await save();
monero.Wallet_startBackgroundSync(wptr!); monero.Wallet_startBackgroundSync(wptr!);
status = monero.Wallet_status(wptr!); final status = monero.Wallet_status(wptr!);
if (status != 0) { if (status != 0) {
final err = monero.Wallet_errorString(wptr!); final err = monero.Wallet_errorString(wptr!);
throw Exception("unable to start background sync: $err"); isBackgroundSyncRunning = false;
printV("startBackgroundSync: $err");
} }
await save(); await save();
await init(); await init();
@ -260,9 +256,9 @@ abstract class MoneroWalletBase extends WalletBase<MoneroBalance,
printV("Stopping background sync"); printV("Stopping background sync");
await save(); await save();
monero.Wallet_stopBackgroundSync(wptr!, ''); monero.Wallet_stopBackgroundSync(wptr!, '');
await save();
isBackgroundSyncRunning = false; isBackgroundSyncRunning = false;
} }
await save();
} }
@action @action
@ -406,6 +402,7 @@ abstract class MoneroWalletBase extends WalletBase<MoneroBalance,
outputs: moneroOutputs, outputs: moneroOutputs,
priorityRaw: _credentials.priority.serialize(), priorityRaw: _credentials.priority.serialize(),
accountIndex: walletAddresses.account!.id, accountIndex: walletAddresses.account!.id,
paymentId: "",
preferredInputs: inputs); preferredInputs: inputs);
} else { } else {
final output = outputs.first; final output = outputs.first;

View file

@ -29,10 +29,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: asn1lib name: asn1lib
sha256: "1c296cd268f486cabcc3930e9b93a8133169305f18d722916e675959a88f6d2c" sha256: "4bae5ae63e6d6dd17c4aac8086f3dec26c0236f6a0f03416c6c19d830c367cf5"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.5.9" version: "1.5.8"
async: async:
dependency: transitive dependency: transitive
description: description:
@ -78,18 +78,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: build_config name: build_config
sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33" sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.1.2" version: "1.1.1"
build_daemon: build_daemon:
dependency: transitive dependency: transitive
description: description:
name: build_daemon name: build_daemon
sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa" sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.0.4" version: "4.0.2"
build_resolvers: build_resolvers:
dependency: "direct dev" dependency: "direct dev"
description: description:
@ -384,10 +384,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: http_parser name: http_parser
sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.1.2" version: "4.0.2"
intl: intl:
dependency: "direct main" dependency: "direct main"
description: description:
@ -682,10 +682,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: pubspec_parse name: pubspec_parse
sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082" sha256: "81876843eb50dc2e1e5b151792c9a985c5ed2536914115ed04e9c8528f6647b0"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.5.0" version: "1.4.0"
rational: rational:
dependency: transitive dependency: transitive
description: description:
@ -706,10 +706,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: shelf name: shelf
sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.4.2" version: "1.4.1"
shelf_web_socket: shelf_web_socket:
dependency: transitive dependency: transitive
description: description:
@ -924,5 +924,5 @@ packages:
source: hosted source: hosted
version: "3.1.3" version: "3.1.3"
sdks: sdks:
dart: ">=3.6.0 <4.0.0" dart: ">=3.5.0 <4.0.0"
flutter: ">=3.24.0" flutter: ">=3.24.0"

View file

@ -29,10 +29,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: asn1lib name: asn1lib
sha256: "1c296cd268f486cabcc3930e9b93a8133169305f18d722916e675959a88f6d2c" sha256: "4bae5ae63e6d6dd17c4aac8086f3dec26c0236f6a0f03416c6c19d830c367cf5"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.5.9" version: "1.5.8"
async: async:
dependency: transitive dependency: transitive
description: description:
@ -94,18 +94,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: build_config name: build_config
sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33" sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.1.2" version: "1.1.1"
build_daemon: build_daemon:
dependency: transitive dependency: transitive
description: description:
name: build_daemon name: build_daemon
sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa" sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.0.4" version: "4.0.2"
build_resolvers: build_resolvers:
dependency: transitive dependency: transitive
description: description:
@ -397,10 +397,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: http_parser name: http_parser
sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.1.2" version: "4.0.2"
intl: intl:
dependency: transitive dependency: transitive
description: description:
@ -679,10 +679,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: pubspec_parse name: pubspec_parse
sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082" sha256: "81876843eb50dc2e1e5b151792c9a985c5ed2536914115ed04e9c8528f6647b0"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.5.0" version: "1.4.0"
rational: rational:
dependency: transitive dependency: transitive
description: description:
@ -751,10 +751,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: shelf name: shelf
sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.4.2" version: "1.4.1"
shelf_web_socket: shelf_web_socket:
dependency: transitive dependency: transitive
description: description:
@ -945,5 +945,5 @@ packages:
source: hosted source: hosted
version: "3.1.3" version: "3.1.3"
sdks: sdks:
dart: ">=3.6.0 <4.0.0" dart: ">=3.5.0 <4.0.0"
flutter: ">=3.24.0" flutter: ">=3.24.0"

View file

@ -29,10 +29,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: asn1lib name: asn1lib
sha256: "1c296cd268f486cabcc3930e9b93a8133169305f18d722916e675959a88f6d2c" sha256: "4bae5ae63e6d6dd17c4aac8086f3dec26c0236f6a0f03416c6c19d830c367cf5"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.5.9" version: "1.5.8"
async: async:
dependency: transitive dependency: transitive
description: description:
@ -70,18 +70,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: build_config name: build_config
sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33" sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.1.2" version: "1.1.1"
build_daemon: build_daemon:
dependency: transitive dependency: transitive
description: description:
name: build_daemon name: build_daemon
sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa" sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.0.4" version: "4.0.2"
build_resolvers: build_resolvers:
dependency: "direct dev" dependency: "direct dev"
description: description:
@ -360,10 +360,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: http_parser name: http_parser
sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.1.2" version: "4.0.2"
intl: intl:
dependency: "direct main" dependency: "direct main"
description: description:
@ -634,10 +634,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: pubspec_parse name: pubspec_parse
sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082" sha256: "81876843eb50dc2e1e5b151792c9a985c5ed2536914115ed04e9c8528f6647b0"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.5.0" version: "1.4.0"
rational: rational:
dependency: transitive dependency: transitive
description: description:
@ -650,10 +650,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: shelf name: shelf
sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.4.2" version: "1.4.1"
shelf_web_socket: shelf_web_socket:
dependency: transitive dependency: transitive
description: description:
@ -844,5 +844,5 @@ packages:
source: hosted source: hosted
version: "3.1.3" version: "3.1.3"
sdks: sdks:
dart: ">=3.6.0 <4.0.0" dart: ">=3.5.0 <4.0.0"
flutter: ">=3.24.0" flutter: ">=3.24.0"

View file

@ -29,10 +29,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: asn1lib name: asn1lib
sha256: "1c296cd268f486cabcc3930e9b93a8133169305f18d722916e675959a88f6d2c" sha256: "4bae5ae63e6d6dd17c4aac8086f3dec26c0236f6a0f03416c6c19d830c367cf5"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.5.9" version: "1.5.8"
async: async:
dependency: transitive dependency: transitive
description: description:
@ -70,18 +70,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: build_config name: build_config
sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33" sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.1.2" version: "1.1.1"
build_daemon: build_daemon:
dependency: transitive dependency: transitive
description: description:
name: build_daemon name: build_daemon
sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa" sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.0.4" version: "4.0.2"
build_resolvers: build_resolvers:
dependency: "direct dev" dependency: "direct dev"
description: description:
@ -357,10 +357,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: http_parser name: http_parser
sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.1.2" version: "4.0.2"
intl: intl:
dependency: "direct main" dependency: "direct main"
description: description:
@ -631,10 +631,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: pubspec_parse name: pubspec_parse
sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082" sha256: "81876843eb50dc2e1e5b151792c9a985c5ed2536914115ed04e9c8528f6647b0"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.5.0" version: "1.4.0"
rational: rational:
dependency: transitive dependency: transitive
description: description:
@ -647,10 +647,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: shelf name: shelf
sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.4.2" version: "1.4.1"
shelf_web_socket: shelf_web_socket:
dependency: transitive dependency: transitive
description: description:
@ -841,5 +841,5 @@ packages:
source: hosted source: hosted
version: "3.1.3" version: "3.1.3"
sdks: sdks:
dart: ">=3.6.0 <4.0.0" dart: ">=3.5.0 <4.0.0"
flutter: ">=3.24.0" flutter: ">=3.24.0"

View file

@ -2,9 +2,7 @@ PODS:
- connectivity_plus (0.0.1): - connectivity_plus (0.0.1):
- Flutter - Flutter
- ReachabilitySwift - ReachabilitySwift
- CryptoSwift (1.8.3) - CryptoSwift (1.8.4)
- cw_mweb (0.0.1):
- Flutter
- cw_decred (0.0.1): - cw_decred (0.0.1):
- Flutter - Flutter
- cw_mweb (0.0.1): - cw_mweb (0.0.1):
@ -80,9 +78,9 @@ PODS:
- permission_handler_apple (9.3.0): - permission_handler_apple (9.3.0):
- Flutter - Flutter
- ReachabilitySwift (5.2.4) - ReachabilitySwift (5.2.4)
- SDWebImage (5.19.7): - SDWebImage (5.20.0):
- SDWebImage/Core (= 5.19.7) - SDWebImage/Core (= 5.20.0)
- SDWebImage/Core (5.19.7) - SDWebImage/Core (5.20.0)
- sensitive_clipboard (0.0.1): - sensitive_clipboard (0.0.1):
- Flutter - Flutter
- share_plus (0.0.1): - share_plus (0.0.1):
@ -106,7 +104,6 @@ PODS:
DEPENDENCIES: DEPENDENCIES:
- connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`) - connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`)
- CryptoSwift - CryptoSwift
- cw_mweb (from `.symlinks/plugins/cw_mweb/ios`)
- cw_decred (from `.symlinks/plugins/cw_decred/ios`) - cw_decred (from `.symlinks/plugins/cw_decred/ios`)
- cw_mweb (from `.symlinks/plugins/cw_mweb/ios`) - cw_mweb (from `.symlinks/plugins/cw_mweb/ios`)
- device_display_brightness (from `.symlinks/plugins/device_display_brightness/ios`) - device_display_brightness (from `.symlinks/plugins/device_display_brightness/ios`)
@ -147,8 +144,6 @@ SPEC REPOS:
EXTERNAL SOURCES: EXTERNAL SOURCES:
connectivity_plus: connectivity_plus:
:path: ".symlinks/plugins/connectivity_plus/ios" :path: ".symlinks/plugins/connectivity_plus/ios"
cw_mweb:
:path: ".symlinks/plugins/cw_mweb/ios"
cw_decred: cw_decred:
:path: ".symlinks/plugins/cw_decred/ios" :path: ".symlinks/plugins/cw_decred/ios"
cw_mweb: cw_mweb:
@ -203,41 +198,40 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/wakelock_plus/ios" :path: ".symlinks/plugins/wakelock_plus/ios"
SPEC CHECKSUMS: SPEC CHECKSUMS:
connectivity_plus: 481668c94744c30c53b8895afb39159d1e619bdf connectivity_plus: bf0076dd84a130856aa636df1c71ccaff908fa1d
CryptoSwift: 967f37cea5a3294d9cce358f78861652155be483 CryptoSwift: e64e11850ede528a02a0f3e768cec8e9d92ecb90
cw_decred: a02cf30175a46971c1e2fa22c48407534541edc6 cw_decred: 9c0e1df74745b51a1289ec5e91fb9e24b68fa14a
cw_mweb: 3aea2fb35b2bd04d8b2d21b83216f3b8fb768d85 cw_mweb: 22cd01dfb8ad2d39b15332006f22046aaa8352a3
device_display_brightness: 04374ebd653619292c1d996f00f42877ea19f17f device_display_brightness: 1510e72c567a1f6ce6ffe393dcd9afd1426034f7
device_info_plus: 335f3ce08d2e174b9fdc3db3db0f4e3b1f66bd89 device_info_plus: c6fb39579d0f423935b0c9ce7ee2f44b71b9fce6
devicelocale: bd64aa714485a8afdaded0892c1e7d5b7f680cf8 devicelocale: 35ba84dc7f45f527c3001535d8c8d104edd5d926
DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60 DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
fast_scanner: 2cb1ad3e69e645e9980fb4961396ce5804caa3e3 fast_scanner: 44c00940355a51258cd6c2085734193cd23d95bc
file_picker: 9b3292d7c8bc68c8a7bf8eb78f730e49c8efc517 file_picker: 09aa5ec1ab24135ccd7a1621c46c84134bfd6655
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
flutter_inappwebview_ios: b89ba3482b96fb25e00c967aae065701b66e9b99 flutter_inappwebview_ios: 6f63631e2c62a7c350263b13fa5427aedefe81d4
flutter_local_authentication: 989278c681612f1ee0e36019e149137f114b9d7f flutter_local_authentication: 1172a4dd88f6306dadce067454e2c4caf07977bb
flutter_mailer: 3a8cd4f36c960fb04528d5471097270c19fec1c4 flutter_mailer: 2ef5a67087bc8c6c4cefd04a178bf1ae2c94cd83
flutter_secure_storage: 2c2ff13db9e0a5647389bff88b0ecac56e3f3418 flutter_secure_storage: 23fc622d89d073675f2eaa109381aefbcf5a49be
fluttertoast: 2c67e14dce98bbdb200df9e1acf610d7a6264ea1 fluttertoast: 21eecd6935e7064cc1fcb733a4c5a428f3f24f0f
in_app_review: 5596fe56fab799e8edb3561c03d053363ab13457 in_app_review: a31b5257259646ea78e0e35fc914979b0031d011
integration_test: 4a889634ef21a45d28d50d622cf412dc6d9f586e integration_test: 252f60fa39af5e17c3aa9899d35d908a0721b573
OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94 OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94
package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499 package_info_plus: c0502532a26c7662a62a356cebe2692ec5fe4ec4
path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564 path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
ReachabilitySwift: 32793e867593cfc1177f5d16491e3a197d2fccda ReachabilitySwift: 32793e867593cfc1177f5d16491e3a197d2fccda
SDWebImage: 8a6b7b160b4d710e2a22b6900e25301075c34cb3 SDWebImage: 73c6079366fea25fa4bb9640d5fb58f0893facd8
sensitive_clipboard: 161e9abc3d56b3131309d8a321eb4690a803c16b sensitive_clipboard: d4866e5d176581536c27bb1618642ee83adca986
share_plus: 50da8cb520a8f0f65671c6c6a99b3617ed10a58a share_plus: 8b6f8b3447e494cca5317c8c3073de39b3600d1f
shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7 shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
sp_scanner: b1bc9321690980bdb44bba7ec85d5543e716d1b5 sp_scanner: eaa617fa827396b967116b7f1f43549ca62e9a12
SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4 SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
Toast: 1f5ea13423a1e6674c4abdac5be53587ae481c4e uni_links: d97da20c7701486ba192624d99bffaaffcfc298a
uni_links: ed8c961e47ed9ce42b6d91e1de8049e38a4b3152 universal_ble: cf52a7b3fd2e7c14d6d7262e9fdadb72ab6b88a6
universal_ble: ff19787898040d721109c6324472e5dd4bc86adc url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
url_launcher_ios: 694010445543906933d732453a59da0a173ae33d wakelock_plus: 373cfe59b235a6dd5837d0fb88791d2f13a90d56
wakelock_plus: 04623e3f525556020ebd4034310f20fe7fda8b49
PODFILE CHECKSUM: e448f662d4c41f0c0b1ccbb78afd57dbf895a597 PODFILE CHECKSUM: e448f662d4c41f0c0b1ccbb78afd57dbf895a597

View file

@ -222,8 +222,7 @@ class OnRamperBuyProvider extends BuyProvider {
'${prefix}defaultAmount': amount.toString(), '${prefix}defaultAmount': amount.toString(),
if (paymentMethod != null) '${prefix}defaultPaymentMethod': paymentMethod, if (paymentMethod != null) '${prefix}defaultPaymentMethod': paymentMethod,
'onlyOnramps': quote.rampId, 'onlyOnramps': quote.rampId,
'networkWallets': '$defaultCrypto:$cryptoCurrencyAddress', 'networkWallets': '${quote.cryptoCurrency.fullName?.toUpperCase()}:$cryptoCurrencyAddress',
'walletAddress': cryptoCurrencyAddress,
'supportSwap': "false", 'supportSwap': "false",
'primaryColor': primaryColor, 'primaryColor': primaryColor,
'secondaryColor': secondaryColor, 'secondaryColor': secondaryColor,

View file

@ -422,6 +422,6 @@ class CWMonero extends Monero {
} }
bool isViewOnly() { bool isViewOnly() {
return isViewOnlyBySpendKey(); return isViewOnlyBySpendKey(null);
} }
} }

View file

@ -315,7 +315,7 @@ class CryptoBalanceWidget extends StatelessWidget {
Padding( Padding(
padding: const EdgeInsets.fromLTRB(16, 0, 16, 8), padding: const EdgeInsets.fromLTRB(16, 0, 16, 8),
child: InfoCard( child: InfoCard(
title: S.of(context).decred_info_title, title: S.of(context).synchronizing,
description: S.of(context).decred_info_card_details, description: S.of(context).decred_info_card_details,
image: 'assets/images/dcr_icon.png', image: 'assets/images/dcr_icon.png',
leftButtonTitle: S.of(context).litecoin_mweb_dismiss, leftButtonTitle: S.of(context).litecoin_mweb_dismiss,

View file

@ -36,7 +36,6 @@ import 'package:cake_wallet/utils/responsive_layout_util.dart';
import 'package:cake_wallet/utils/show_pop_up.dart'; import 'package:cake_wallet/utils/show_pop_up.dart';
import 'package:cake_wallet/view_model/send/output.dart'; import 'package:cake_wallet/view_model/send/output.dart';
import 'package:cw_core/utils/print_verbose.dart'; import 'package:cw_core/utils/print_verbose.dart';
import 'package:cw_core/unspent_coin_type.dart';
import 'package:cw_core/wallet_type.dart'; import 'package:cw_core/wallet_type.dart';
import 'package:cake_wallet/view_model/send/send_view_model.dart'; import 'package:cake_wallet/view_model/send/send_view_model.dart';
import 'package:cake_wallet/view_model/send/send_view_model_state.dart'; import 'package:cake_wallet/view_model/send/send_view_model_state.dart';
@ -164,8 +163,6 @@ class SendPage extends BasePage {
}); });
}); });
bool _bottomSheetOpened = false;
@override @override
Widget body(BuildContext context) { Widget body(BuildContext context) {
_setEffects(context); _setEffects(context);
@ -400,6 +397,7 @@ class SendPage extends BasePage {
return LoadingPrimaryButton( return LoadingPrimaryButton(
key: ValueKey('send_page_send_button_key'), key: ValueKey('send_page_send_button_key'),
onPressed: () async { onPressed: () async {
FocusManager.instance.primaryFocus?.unfocus();
if (sendViewModel.state is IsExecutingState) return; if (sendViewModel.state is IsExecutingState) return;
if (_formKey.currentState != null && if (_formKey.currentState != null &&
!_formKey.currentState!.validate()) { !_formKey.currentState!.validate()) {

View file

@ -42,7 +42,7 @@ class PrivacyPage extends BasePage {
), ),
SettingsChoicesCell( SettingsChoicesCell(
ChoicesListItem<ExchangeApiMode>( ChoicesListItem<ExchangeApiMode>(
title: S.current.exchange, title: S.current.swap,
items: ExchangeApiMode.all, items: ExchangeApiMode.all,
selectedItem: _privacySettingsViewModel.exchangeStatus, selectedItem: _privacySettingsViewModel.exchangeStatus,
onItemSelected: (ExchangeApiMode mode) => onItemSelected: (ExchangeApiMode mode) =>

View file

@ -3,6 +3,7 @@ import 'package:cake_wallet/src/widgets/standard_slide_button_widget.dart';
import 'package:cake_wallet/themes/extensions/balance_page_theme.dart'; import 'package:cake_wallet/themes/extensions/balance_page_theme.dart';
import 'package:cake_wallet/themes/extensions/cake_text_theme.dart'; import 'package:cake_wallet/themes/extensions/cake_text_theme.dart';
import 'package:cake_wallet/themes/extensions/filter_theme.dart'; import 'package:cake_wallet/themes/extensions/filter_theme.dart';
import 'package:cake_wallet/themes/extensions/sync_indicator_theme.dart';
import 'package:cake_wallet/themes/theme_base.dart'; import 'package:cake_wallet/themes/theme_base.dart';
import 'package:cake_wallet/view_model/send/output.dart'; import 'package:cake_wallet/view_model/send/output.dart';
import 'package:cw_core/crypto_currency.dart'; import 'package:cw_core/crypto_currency.dart';
@ -71,6 +72,12 @@ class ConfirmSendingBottomSheet extends BaseBottomSheet {
decoration: TextDecoration.none, decoration: TextDecoration.none,
); );
final tileBackgroundColor = currentTheme.type == ThemeType.light
? Theme.of(context).extension<SyncIndicatorTheme>()!.syncedBackgroundColor
: currentTheme.type == ThemeType.oled
? Colors.black.withOpacity(0.5)
: Theme.of(context).extension<FilterTheme>()!.buttonColor;
Widget content = Padding( Widget content = Padding(
padding: EdgeInsets.fromLTRB(8, 0, showScrollbar ? 16 : 8, 8), padding: EdgeInsets.fromLTRB(8, 0, showScrollbar ? 16 : 8, 8),
child: Column( child: Column(
@ -86,6 +93,7 @@ class ConfirmSendingBottomSheet extends BaseBottomSheet {
amount: '', amount: '',
address: paymentIdValue!, address: paymentIdValue!,
itemSubTitleTextStyle: itemSubTitleTextStyle, itemSubTitleTextStyle: itemSubTitleTextStyle,
tileBackgroundColor: tileBackgroundColor,
), ),
), ),
StandardTile( StandardTile(
@ -94,6 +102,7 @@ class ConfirmSendingBottomSheet extends BaseBottomSheet {
itemTitleTextStyle: itemTitleTextStyle, itemTitleTextStyle: itemTitleTextStyle,
itemSubTitle: fiatAmountValue, itemSubTitle: fiatAmountValue,
itemSubTitleTextStyle: itemSubTitleTextStyle, itemSubTitleTextStyle: itemSubTitleTextStyle,
tileBackgroundColor: tileBackgroundColor,
), ),
const SizedBox(height: 8), const SizedBox(height: 8),
StandardTile( StandardTile(
@ -102,6 +111,7 @@ class ConfirmSendingBottomSheet extends BaseBottomSheet {
itemTitleTextStyle: itemTitleTextStyle, itemTitleTextStyle: itemTitleTextStyle,
itemSubTitle: feeFiatAmount, itemSubTitle: feeFiatAmount,
itemSubTitleTextStyle: itemSubTitleTextStyle, itemSubTitleTextStyle: itemSubTitleTextStyle,
tileBackgroundColor: tileBackgroundColor,
), ),
const SizedBox(height: 8), const SizedBox(height: 8),
Column( Column(
@ -130,6 +140,7 @@ class ConfirmSendingBottomSheet extends BaseBottomSheet {
isBatchSending: isBatchSending, isBatchSending: isBatchSending,
itemTitleTextStyle: itemTitleTextStyle, itemTitleTextStyle: itemTitleTextStyle,
itemSubTitleTextStyle: itemSubTitleTextStyle, itemSubTitleTextStyle: itemSubTitleTextStyle,
tileBackgroundColor: tileBackgroundColor,
) )
: AddressTile( : AddressTile(
itemTitle: 'Address', itemTitle: 'Address',
@ -139,6 +150,7 @@ class ConfirmSendingBottomSheet extends BaseBottomSheet {
amount: _amount, amount: _amount,
address: _address, address: _address,
itemSubTitleTextStyle: itemSubTitleTextStyle, itemSubTitleTextStyle: itemSubTitleTextStyle,
tileBackgroundColor: tileBackgroundColor,
); );
}, },
), ),
@ -154,6 +166,7 @@ class ConfirmSendingBottomSheet extends BaseBottomSheet {
isBatchSending: true, isBatchSending: true,
itemTitleTextStyle: itemTitleTextStyle, itemTitleTextStyle: itemTitleTextStyle,
itemSubTitleTextStyle: itemSubTitleTextStyle, itemSubTitleTextStyle: itemSubTitleTextStyle,
tileBackgroundColor: tileBackgroundColor,
), ),
), ),
], ],
@ -214,6 +227,7 @@ class StandardTile extends StatelessWidget {
required this.itemTitleTextStyle, required this.itemTitleTextStyle,
this.itemSubTitle, this.itemSubTitle,
required this.itemSubTitleTextStyle, required this.itemSubTitleTextStyle,
required this.tileBackgroundColor,
}); });
final String itemTitle; final String itemTitle;
@ -221,14 +235,14 @@ class StandardTile extends StatelessWidget {
final TextStyle itemTitleTextStyle; final TextStyle itemTitleTextStyle;
final String? itemSubTitle; final String? itemSubTitle;
final TextStyle itemSubTitleTextStyle; final TextStyle itemSubTitleTextStyle;
final Color tileBackgroundColor;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return Container(
padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 8), padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 8),
decoration: BoxDecoration( decoration:
borderRadius: BorderRadius.circular(10), BoxDecoration(borderRadius: BorderRadius.circular(10), color: tileBackgroundColor),
color: Theme.of(context).extension<FilterTheme>()!.buttonColor),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
@ -258,6 +272,7 @@ class AddressTile extends StatelessWidget {
required this.amount, required this.amount,
required this.address, required this.address,
required this.itemSubTitleTextStyle, required this.itemSubTitleTextStyle,
required this.tileBackgroundColor,
}); });
final String itemTitle; final String itemTitle;
@ -267,6 +282,7 @@ class AddressTile extends StatelessWidget {
final String amount; final String amount;
final String address; final String address;
final TextStyle itemSubTitleTextStyle; final TextStyle itemSubTitleTextStyle;
final Color tileBackgroundColor;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -283,7 +299,7 @@ class AddressTile extends StatelessWidget {
padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 8), padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 8),
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
color: Theme.of(context).extension<FilterTheme>()!.buttonColor, color: tileBackgroundColor,
), ),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
@ -343,6 +359,7 @@ class AddressExpansionTile extends StatelessWidget {
required this.isBatchSending, required this.isBatchSending,
required this.itemTitleTextStyle, required this.itemTitleTextStyle,
required this.itemSubTitleTextStyle, required this.itemSubTitleTextStyle,
required this.tileBackgroundColor,
}); });
final String contactType; final String contactType;
@ -353,6 +370,7 @@ class AddressExpansionTile extends StatelessWidget {
final bool isBatchSending; final bool isBatchSending;
final TextStyle itemTitleTextStyle; final TextStyle itemTitleTextStyle;
final TextStyle itemSubTitleTextStyle; final TextStyle itemSubTitleTextStyle;
final Color tileBackgroundColor;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -369,7 +387,7 @@ class AddressExpansionTile extends StatelessWidget {
return Container( return Container(
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(10)), borderRadius: BorderRadius.all(Radius.circular(10)),
color: Theme.of(context).extension<FilterTheme>()!.buttonColor, color: tileBackgroundColor,
), ),
child: Theme( child: Theme(
data: Theme.of(context).copyWith(dividerColor: Colors.transparent), data: Theme.of(context).copyWith(dividerColor: Colors.transparent),
@ -383,7 +401,9 @@ class AddressExpansionTile extends StatelessWidget {
title: Row( title: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Expanded(child: Text(isBatchSending ? name : contactType, style: itemTitleTextStyle, softWrap: true)), Expanded(
child: Text(isBatchSending ? name : contactType,
style: itemTitleTextStyle, softWrap: true)),
Text(isBatchSending ? amount : name, Text(isBatchSending ? amount : name,
style: TextStyle( style: TextStyle(
fontSize: 14, fontSize: 14,

View file

@ -1,6 +1,7 @@
import 'package:cake_wallet/themes/extensions/cake_text_theme.dart'; import 'package:cake_wallet/themes/extensions/cake_text_theme.dart';
import 'package:cake_wallet/themes/extensions/filter_theme.dart'; import 'package:cake_wallet/themes/extensions/filter_theme.dart';
import 'package:cake_wallet/themes/extensions/menu_theme.dart'; import 'package:cake_wallet/themes/extensions/menu_theme.dart';
import 'package:cake_wallet/themes/extensions/sync_indicator_theme.dart';
import 'package:cake_wallet/themes/theme_base.dart'; import 'package:cake_wallet/themes/theme_base.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -33,13 +34,17 @@ class _StandardSlideButtonState extends State<StandardSlideButton> {
final double effectiveMaxWidth = maxWidth - 2 * sideMargin; final double effectiveMaxWidth = maxWidth - 2 * sideMargin;
const double sliderWidth = 42.0; const double sliderWidth = 42.0;
final tileBackgroundColor = widget.currentTheme.type == ThemeType.light
? Theme.of(context).extension<SyncIndicatorTheme>()!.syncedBackgroundColor
: widget.currentTheme.type == ThemeType.oled
? Colors.black.withOpacity(0.5)
: Theme.of(context).extension<FilterTheme>()!.buttonColor;
return Container( return Container(
height: widget.height, height: widget.height,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
color: widget.currentTheme.type == ThemeType.light || widget.currentTheme.type == ThemeType.bright color: tileBackgroundColor),
? Theme.of(context).disabledColor
: widget.currentTheme.type == ThemeType.oled ? Colors.black : Theme.of(context).extension<CakeMenuTheme>()!.backgroundColor),
child: Stack( child: Stack(
alignment: Alignment.centerLeft, alignment: Alignment.centerLeft,
children: [ children: [
@ -74,11 +79,11 @@ class _StandardSlideButtonState extends State<StandardSlideButton> {
height: widget.height - 8, height: widget.height - 8,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
color: widget.currentTheme.type == ThemeType.bright ? Theme.of(context).extension<CakeMenuTheme>()!.backgroundColor : Theme.of(context).extension<FilterTheme>()!.buttonColor, color: Theme.of(context).extension<CakeTextTheme>()!.titleColor,
), ),
alignment: Alignment.center, alignment: Alignment.center,
child: Icon(Icons.arrow_forward, child: Icon(Icons.arrow_forward,
color: Theme.of(context).extension<CakeTextTheme>()!.titleColor), color: widget.currentTheme.type == ThemeType.bright ? Theme.of(context).extension<CakeMenuTheme>()!.backgroundColor : Theme.of(context).extension<FilterTheme>()!.buttonColor),
), ),
), ),
) )

View file

@ -266,7 +266,8 @@ abstract class DashboardViewModelBase with Store {
reaction((_) => appStore.wallet, (wallet) { reaction((_) => appStore.wallet, (wallet) {
_onWalletChange(wallet); _onWalletChange(wallet);
_checkMweb(); _checkMweb();
showDecredInfoCard = wallet?.type == WalletType.decred; showDecredInfoCard = wallet?.type == WalletType.decred &&
sharedPreferences.getBool(PreferencesKey.showDecredInfoCard) != false;
}); });
_transactionDisposer?.reaction.dispose(); _transactionDisposer?.reaction.dispose();
@ -792,7 +793,7 @@ abstract class DashboardViewModelBase with Store {
(List<TransactionInfo> txs) { (List<TransactionInfo> txs) {
transactions.clear(); transactions.clear();
transactions.addAll( transactions.addAll(
txs.where((tx) { txs.where((tx) {
if (wallet.type == WalletType.monero) { if (wallet.type == WalletType.monero) {

View file

@ -1,7 +1,6 @@
import 'package:cake_wallet/core/execution_state.dart'; import 'package:cake_wallet/core/execution_state.dart';
import 'package:cake_wallet/entities/qr_scanner.dart'; import 'package:cake_wallet/entities/qr_scanner.dart';
import 'package:cake_wallet/store/settings_store.dart'; import 'package:cake_wallet/store/settings_store.dart';
import 'package:cw_core/utils/print_verbose.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:hive/hive.dart'; import 'package:hive/hive.dart';
import 'package:mobx/mobx.dart'; import 'package:mobx/mobx.dart';

View file

@ -3,7 +3,6 @@ PODS:
- FlutterMacOS - FlutterMacOS
- ReachabilitySwift - ReachabilitySwift
- cw_mweb (0.0.1): - cw_mweb (0.0.1):
- cw_decred (0.0.1):
- FlutterMacOS - FlutterMacOS
- device_info_plus (0.0.1): - device_info_plus (0.0.1):
- FlutterMacOS - FlutterMacOS
@ -46,7 +45,6 @@ PODS:
DEPENDENCIES: DEPENDENCIES:
- connectivity_plus (from `Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos`) - connectivity_plus (from `Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos`)
- cw_mweb (from `Flutter/ephemeral/.symlinks/plugins/cw_mweb/macos`) - cw_mweb (from `Flutter/ephemeral/.symlinks/plugins/cw_mweb/macos`)
- cw_decred (from `Flutter/ephemeral/.symlinks/plugins/cw_decred/macos`)
- device_info_plus (from `Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos`) - device_info_plus (from `Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos`)
- devicelocale (from `Flutter/ephemeral/.symlinks/plugins/devicelocale/macos`) - devicelocale (from `Flutter/ephemeral/.symlinks/plugins/devicelocale/macos`)
- fast_scanner (from `Flutter/ephemeral/.symlinks/plugins/fast_scanner/macos`) - fast_scanner (from `Flutter/ephemeral/.symlinks/plugins/fast_scanner/macos`)
@ -74,10 +72,6 @@ EXTERNAL SOURCES:
:path: Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos :path: Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos
cw_mweb: cw_mweb:
:path: Flutter/ephemeral/.symlinks/plugins/cw_mweb/macos :path: Flutter/ephemeral/.symlinks/plugins/cw_mweb/macos
cw_decred:
:path: Flutter/ephemeral/.symlinks/plugins/cw_decred/macos
cw_monero:
:path: Flutter/ephemeral/.symlinks/plugins/cw_monero/macos
device_info_plus: device_info_plus:
:path: Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos :path: Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos
devicelocale: devicelocale:
@ -114,8 +108,6 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS: SPEC CHECKSUMS:
connectivity_plus: 18d3c32514c886e046de60e9c13895109866c747 connectivity_plus: 18d3c32514c886e046de60e9c13895109866c747
cw_mweb: 7440b12ead811dda972a9918442ea2a458e8742c cw_mweb: 7440b12ead811dda972a9918442ea2a458e8742c
cw_monero: ec03de55a19c4a2b174ea687e0f4202edc716fa4
cw_decred: 0c93fbeb31bd97a6ad4ec5680960af0943bfca78
device_info_plus: 5401765fde0b8d062a2f8eb65510fb17e77cf07f device_info_plus: 5401765fde0b8d062a2f8eb65510fb17e77cf07f
devicelocale: 9f0f36ac651cabae2c33f32dcff4f32b61c38225 devicelocale: 9f0f36ac651cabae2c33f32dcff4f32b61c38225
fast_scanner: d31bae07e2653403a69dac99fb710c1722b16a97 fast_scanner: d31bae07e2653403a69dac99fb710c1722b16a97

View file

@ -822,6 +822,7 @@
"sync_status_syncronizing": "يتم المزامنة", "sync_status_syncronizing": "يتم المزامنة",
"sync_status_timed_out": "نفد وقته", "sync_status_timed_out": "نفد وقته",
"sync_status_unsupported": "عقدة غير مدعومة", "sync_status_unsupported": "عقدة غير مدعومة",
"synchronizing": "المزامنة",
"syncing_wallet_alert_content": "قد لا يكتمل رصيدك وقائمة المعاملات الخاصة بك حتى تظهر عبارة “SYNCHRONIZED“ في الأعلى. انقر / اضغط لمعرفة المزيد.", "syncing_wallet_alert_content": "قد لا يكتمل رصيدك وقائمة المعاملات الخاصة بك حتى تظهر عبارة “SYNCHRONIZED“ في الأعلى. انقر / اضغط لمعرفة المزيد.",
"syncing_wallet_alert_title": "محفظتك تتم مزامنتها", "syncing_wallet_alert_title": "محفظتك تتم مزامنتها",
"template": "قالب", "template": "قالب",

View file

@ -822,6 +822,7 @@
"sync_status_syncronizing": "СИНХРОНИЗИРАНЕ", "sync_status_syncronizing": "СИНХРОНИЗИРАНЕ",
"sync_status_timed_out": "ВРЕМЕТО ИЗТЕЧЕ", "sync_status_timed_out": "ВРЕМЕТО ИЗТЕЧЕ",
"sync_status_unsupported": "Неподдържан възел", "sync_status_unsupported": "Неподдържан възел",
"synchronizing": "Синхронизиране",
"syncing_wallet_alert_content": "Списъкът ви с баланс и транзакции може да не е пълен, докато в горната част не пише „СИНХРОНИЗИРАН“. Кликнете/докоснете, за да научите повече.", "syncing_wallet_alert_content": "Списъкът ви с баланс и транзакции може да не е пълен, докато в горната част не пише „СИНХРОНИЗИРАН“. Кликнете/докоснете, за да научите повече.",
"syncing_wallet_alert_title": "Вашият портфейл се синхронизира", "syncing_wallet_alert_title": "Вашият портфейл се синхронизира",
"template": "Шаблон", "template": "Шаблон",

View file

@ -822,6 +822,7 @@
"sync_status_syncronizing": "SYNCHRONIZUJI", "sync_status_syncronizing": "SYNCHRONIZUJI",
"sync_status_timed_out": "ČAS VYPRŠEL", "sync_status_timed_out": "ČAS VYPRŠEL",
"sync_status_unsupported": "Nepodporovaný uzel", "sync_status_unsupported": "Nepodporovaný uzel",
"synchronizing": "Synchronizace",
"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.", "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.",
"syncing_wallet_alert_title": "Vaše peněženka se synchronizuje", "syncing_wallet_alert_title": "Vaše peněženka se synchronizuje",
"template": "Šablona", "template": "Šablona",

View file

@ -823,6 +823,7 @@
"sync_status_syncronizing": "SYNCHRONISIERE", "sync_status_syncronizing": "SYNCHRONISIERE",
"sync_status_timed_out": "Zeitlich abgestimmt", "sync_status_timed_out": "Zeitlich abgestimmt",
"sync_status_unsupported": "Nicht unterstützter Knoten", "sync_status_unsupported": "Nicht unterstützter Knoten",
"synchronizing": "Synchronisierung",
"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.", "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.",
"syncing_wallet_alert_title": "Ihr Wallet wird synchronisiert", "syncing_wallet_alert_title": "Ihr Wallet wird synchronisiert",
"template": "Vorlage", "template": "Vorlage",

View file

@ -823,6 +823,7 @@
"sync_status_syncronizing": "SYNCHRONIZING", "sync_status_syncronizing": "SYNCHRONIZING",
"sync_status_timed_out": "TIMED OUT", "sync_status_timed_out": "TIMED OUT",
"sync_status_unsupported": "UNSUPPORTED NODE", "sync_status_unsupported": "UNSUPPORTED NODE",
"synchronizing": "Synchronizing",
"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.", "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.",
"syncing_wallet_alert_title": "Your wallet is syncing", "syncing_wallet_alert_title": "Your wallet is syncing",
"template": "Template", "template": "Template",

View file

@ -823,6 +823,7 @@
"sync_status_syncronizing": "SINCRONIZANDO", "sync_status_syncronizing": "SINCRONIZANDO",
"sync_status_timed_out": "CADUCADO", "sync_status_timed_out": "CADUCADO",
"sync_status_unsupported": "Nodo no compatible", "sync_status_unsupported": "Nodo no compatible",
"synchronizing": "Sincronización",
"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.", "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.",
"syncing_wallet_alert_title": "Tu billetera se está sincronizando", "syncing_wallet_alert_title": "Tu billetera se está sincronizando",
"template": "Plantilla", "template": "Plantilla",

View file

@ -303,7 +303,7 @@
"etherscan_history": "Historique Etherscan", "etherscan_history": "Historique Etherscan",
"event": "Événement", "event": "Événement",
"events": "Événements", "events": "Événements",
"exchange": "Échange", "exchange": "Acheter / Vendre",
"exchange_incorrect_current_wallet_for_xmr": "Si vous souhaitez échanger des XMR depuis le solde Monero de votre Cake Wallet, veuillez d'abord passer à votre portefeuille Monero.", "exchange_incorrect_current_wallet_for_xmr": "Si vous souhaitez échanger des XMR depuis le solde Monero de votre Cake Wallet, veuillez d'abord passer à votre portefeuille Monero.",
"exchange_new_template": "Nouveau modèle d'échange", "exchange_new_template": "Nouveau modèle d'échange",
"exchange_provider_unsupported": "${providerName} n'est plus pris en charge !", "exchange_provider_unsupported": "${providerName} n'est plus pris en charge !",
@ -756,8 +756,8 @@
"shared_seed_wallet_groups": "Groupes de portefeuilles partagés", "shared_seed_wallet_groups": "Groupes de portefeuilles partagés",
"show": "Montrer", "show": "Montrer",
"show_address_book_popup": "Afficher la fenêtre contextuelle du carnet d'adresses", "show_address_book_popup": "Afficher la fenêtre contextuelle du carnet d'adresses",
"show_balance": "Longue presse pour montrer l'équilibre", "show_balance": "Appuyez longtemps pour afficher votre solde",
"show_balance_toast": "Longue appuyez sur pour masquer ou afficher l'équilibre", "show_balance_toast": "Appuyez longtemps pour masquer ou afficher votre solde",
"show_details": "Afficher les détails", "show_details": "Afficher les détails",
"show_keys": "Visualiser la phrase secrète (seed) et les clefs", "show_keys": "Visualiser la phrase secrète (seed) et les clefs",
"show_market_place": "Afficher la place de marché", "show_market_place": "Afficher la place de marché",
@ -782,7 +782,7 @@
"silent_payments_scanned_tip": "SCANNEZ POUR DONNER ! (${tip})", "silent_payments_scanned_tip": "SCANNEZ POUR DONNER ! (${tip})",
"silent_payments_scanning": "Scan des paiements silencieux", "silent_payments_scanning": "Scan des paiements silencieux",
"silent_payments_settings": "Paramètres de paiement silencieux", "silent_payments_settings": "Paramètres de paiement silencieux",
"single_seed_wallets_group": "Portefeuilles de semences simples", "single_seed_wallets_group": "Portefeuilles de mots-clés (seed) simples",
"slidable": "Glissable", "slidable": "Glissable",
"solana_create_associated_token_account_exception": "Création d'erreur Création de jetons associés pour l'adresse détenue.", "solana_create_associated_token_account_exception": "Création d'erreur Création de jetons associés pour l'adresse détenue.",
"solana_no_associated_token_account_exception": "Il n'y a pas de compte de jeton associé pour cette adresse.", "solana_no_associated_token_account_exception": "Il n'y a pas de compte de jeton associé pour cette adresse.",
@ -822,6 +822,7 @@
"sync_status_syncronizing": "SYNCHRONISATION EN COURS", "sync_status_syncronizing": "SYNCHRONISATION EN COURS",
"sync_status_timed_out": "FIN DU TEMPS", "sync_status_timed_out": "FIN DU TEMPS",
"sync_status_unsupported": "Nœud non pris en charge", "sync_status_unsupported": "Nœud non pris en charge",
"synchronizing": "Synchronisation",
"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.", "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.",
"syncing_wallet_alert_title": "Votre portefeuille (wallet) est en cours de synchronisation", "syncing_wallet_alert_title": "Votre portefeuille (wallet) est en cours de synchronisation",
"template": "Modèle", "template": "Modèle",
@ -943,7 +944,7 @@
"variable_pair_not_supported": "Cette paire variable n'est pas prise en charge avec les échanges sélectionnés", "variable_pair_not_supported": "Cette paire variable n'est pas prise en charge avec les échanges sélectionnés",
"verification": "Vérification", "verification": "Vérification",
"verify_message": "Vérifier le message", "verify_message": "Vérifier le message",
"verify_seed": "Vérifiez les semences", "verify_seed": "Vérifiez les mots-clés (seed)",
"verify_with_2fa": "Vérifier avec Cake 2FA", "verify_with_2fa": "Vérifier avec Cake 2FA",
"version": "Version ${currentVersion}", "version": "Version ${currentVersion}",
"view_all": "Voir tout", "view_all": "Voir tout",

View file

@ -824,6 +824,7 @@
"sync_status_syncronizing": "KWAFI", "sync_status_syncronizing": "KWAFI",
"sync_status_timed_out": "ATED Out", "sync_status_timed_out": "ATED Out",
"sync_status_unsupported": "Ba a Taimako ba", "sync_status_unsupported": "Ba a Taimako ba",
"synchronizing": "Aikiɓaɓaƙe",
"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.", "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.",
"syncing_wallet_alert_title": "Walat ɗin ku yana aiki tare", "syncing_wallet_alert_title": "Walat ɗin ku yana aiki tare",
"template": "Samfura", "template": "Samfura",

View file

@ -824,6 +824,7 @@
"sync_status_syncronizing": "सिंक्रनाइज़ करने", "sync_status_syncronizing": "सिंक्रनाइज़ करने",
"sync_status_timed_out": "समय समााप्त", "sync_status_timed_out": "समय समााप्त",
"sync_status_unsupported": "असमर्थित नोड", "sync_status_unsupported": "असमर्थित नोड",
"synchronizing": "सिंक्रनाइज़ करना",
"syncing_wallet_alert_content": "आपकी शेष राशि और लेनदेन सूची तब तक पूरी नहीं हो सकती जब तक कि शीर्ष पर \"सिंक्रनाइज़्ड\" न लिखा हो। अधिक जानने के लिए क्लिक/टैप करें।", "syncing_wallet_alert_content": "आपकी शेष राशि और लेनदेन सूची तब तक पूरी नहीं हो सकती जब तक कि शीर्ष पर \"सिंक्रनाइज़्ड\" न लिखा हो। अधिक जानने के लिए क्लिक/टैप करें।",
"syncing_wallet_alert_title": "आपका वॉलेट सिंक हो रहा है", "syncing_wallet_alert_title": "आपका वॉलेट सिंक हो रहा है",
"template": "खाका", "template": "खाका",

View file

@ -822,6 +822,7 @@
"sync_status_syncronizing": "SINKRONIZIRANJE", "sync_status_syncronizing": "SINKRONIZIRANJE",
"sync_status_timed_out": "ISTEKLO", "sync_status_timed_out": "ISTEKLO",
"sync_status_unsupported": "Nepodržani čvor", "sync_status_unsupported": "Nepodržani čvor",
"synchronizing": "Sinkronizirajući",
"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.", "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.",
"syncing_wallet_alert_title": "Vaš novčanik se sinkronizira", "syncing_wallet_alert_title": "Vaš novčanik se sinkronizira",
"template": "Predložak", "template": "Predložak",

View file

@ -820,6 +820,7 @@
"sync_status_syncronizing": "ՀԱՄԱԺԱՄԵՑՎՈՒՄ Է", "sync_status_syncronizing": "ՀԱՄԱԺԱՄԵՑՎՈՒՄ Է",
"sync_status_timed_out": "Ժամանակը սպառվեց", "sync_status_timed_out": "Ժամանակը սպառվեց",
"sync_status_unsupported": "ՉԱՋԱԿՑՎՈՂ ՀԱՆԳՈՒՅՑ,", "sync_status_unsupported": "ՉԱՋԱԿՑՎՈՂ ՀԱՆԳՈՒՅՑ,",
"synchronizing": "Համաժամանակող",
"syncing_wallet_alert_content": "Ձեր հաշիվը և գործարքների ցանկը կարող են լինել անավարտ մինչև վերին մասում գրված լինի “ՀԱՂՈՒՄ”։ Սեղմեք/դիպեք ուսումնասիրելու համար։", "syncing_wallet_alert_content": "Ձեր հաշիվը և գործարքների ցանկը կարող են լինել անավարտ մինչև վերին մասում գրված լինի “ՀԱՂՈՒՄ”։ Սեղմեք/դիպեք ուսումնասիրելու համար։",
"syncing_wallet_alert_title": "Ձեր դրամապանակը համաժամացվում է", "syncing_wallet_alert_title": "Ձեր դրամապանակը համաժամացվում է",
"template": "Տարբերակ", "template": "Տարբերակ",

View file

@ -825,6 +825,7 @@
"sync_status_syncronizing": "SEDANG SINKRONISASI", "sync_status_syncronizing": "SEDANG SINKRONISASI",
"sync_status_timed_out": "WAKTU HABIS", "sync_status_timed_out": "WAKTU HABIS",
"sync_status_unsupported": "Node yang tidak didukung", "sync_status_unsupported": "Node yang tidak didukung",
"synchronizing": "Sinkronisasi",
"syncing_wallet_alert_content": "Saldo dan daftar transaksi Anda mungkin belum lengkap sampai tertulis “SYNCHRONIZED” di bagian atas. Klik/ketuk untuk mempelajari lebih lanjut.", "syncing_wallet_alert_content": "Saldo dan daftar transaksi Anda mungkin belum lengkap sampai tertulis “SYNCHRONIZED” di bagian atas. Klik/ketuk untuk mempelajari lebih lanjut.",
"syncing_wallet_alert_title": "Dompet Anda sedang disinkronkan", "syncing_wallet_alert_title": "Dompet Anda sedang disinkronkan",
"template": "Template", "template": "Template",

View file

@ -823,6 +823,7 @@
"sync_status_syncronizing": "SINCRONIZZAZIONE", "sync_status_syncronizing": "SINCRONIZZAZIONE",
"sync_status_timed_out": "TIMED OUT", "sync_status_timed_out": "TIMED OUT",
"sync_status_unsupported": "NODO NON SUPPORTATO", "sync_status_unsupported": "NODO NON SUPPORTATO",
"synchronizing": "Sincronizzazione",
"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ù.", "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ù.",
"syncing_wallet_alert_title": "Il tuo portafoglio si sta sincronizzando", "syncing_wallet_alert_title": "Il tuo portafoglio si sta sincronizzando",
"template": "Modello", "template": "Modello",

View file

@ -823,6 +823,7 @@
"sync_status_syncronizing": "同期", "sync_status_syncronizing": "同期",
"sync_status_timed_out": "タイムアウトしました", "sync_status_timed_out": "タイムアウトしました",
"sync_status_unsupported": "サポートされていないノード", "sync_status_unsupported": "サポートされていないノード",
"synchronizing": "同期",
"syncing_wallet_alert_content": "上部に「同期済み」と表示されるまで、残高と取引リストが完了していない可能性があります。詳細については、クリック/タップしてください。", "syncing_wallet_alert_content": "上部に「同期済み」と表示されるまで、残高と取引リストが完了していない可能性があります。詳細については、クリック/タップしてください。",
"syncing_wallet_alert_title": "ウォレットは同期中です", "syncing_wallet_alert_title": "ウォレットは同期中です",
"template": "テンプレート", "template": "テンプレート",

View file

@ -822,6 +822,7 @@
"sync_status_syncronizing": "동기화", "sync_status_syncronizing": "동기화",
"sync_status_timed_out": "시간 초과", "sync_status_timed_out": "시간 초과",
"sync_status_unsupported": "지원되지 않은 노드", "sync_status_unsupported": "지원되지 않은 노드",
"synchronizing": "동기화",
"syncing_wallet_alert_content": "상단에 \"동기화됨\"이라고 표시될 때까지 잔액 및 거래 목록이 완전하지 않을 수 있습니다. 자세히 알아보려면 클릭/탭하세요.", "syncing_wallet_alert_content": "상단에 \"동기화됨\"이라고 표시될 때까지 잔액 및 거래 목록이 완전하지 않을 수 있습니다. 자세히 알아보려면 클릭/탭하세요.",
"syncing_wallet_alert_title": "지갑 동기화 중", "syncing_wallet_alert_title": "지갑 동기화 중",
"template": "주형", "template": "주형",

View file

@ -822,6 +822,7 @@
"sync_status_syncronizing": "ထပ်တူပြုခြင်း။", "sync_status_syncronizing": "ထပ်တူပြုခြင်း။",
"sync_status_timed_out": "ထွက်အချိန်ကုန်", "sync_status_timed_out": "ထွက်အချိန်ကုန်",
"sync_status_unsupported": "node မထောက်ပံ့ node ကို", "sync_status_unsupported": "node မထောက်ပံ့ node ကို",
"synchronizing": "ထပ်တူပြုခြင်း",
"syncing_wallet_alert_content": "သင်၏လက်ကျန်နှင့် ငွေပေးငွေယူစာရင်းသည် ထိပ်တွင် \"Synchronizeed\" ဟုပြောသည်အထိ မပြီးမြောက်နိုင်ပါ။ ပိုမိုလေ့လာရန် နှိပ်/နှိပ်ပါ။", "syncing_wallet_alert_content": "သင်၏လက်ကျန်နှင့် ငွေပေးငွေယူစာရင်းသည် ထိပ်တွင် \"Synchronizeed\" ဟုပြောသည်အထိ မပြီးမြောက်နိုင်ပါ။ ပိုမိုလေ့လာရန် နှိပ်/နှိပ်ပါ။",
"syncing_wallet_alert_title": "သင့်ပိုက်ဆံအိတ်ကို စင့်ခ်လုပ်နေပါသည်။", "syncing_wallet_alert_title": "သင့်ပိုက်ဆံအိတ်ကို စင့်ခ်လုပ်နေပါသည်။",
"template": "ပုံစံခွက်", "template": "ပုံစံခွက်",

View file

@ -822,6 +822,7 @@
"sync_status_syncronizing": "SYNCHRONISEREN", "sync_status_syncronizing": "SYNCHRONISEREN",
"sync_status_timed_out": "Uitgeput", "sync_status_timed_out": "Uitgeput",
"sync_status_unsupported": "Niet ondersteund knooppunt", "sync_status_unsupported": "Niet ondersteund knooppunt",
"synchronizing": "Synchronisatie",
"syncing_wallet_alert_content": "Uw saldo- en transactielijst is mogelijk pas compleet als er bovenaan 'GESYNCHRONISEERD' staat. Klik/tik voor meer informatie.", "syncing_wallet_alert_content": "Uw saldo- en transactielijst is mogelijk pas compleet als er bovenaan 'GESYNCHRONISEERD' staat. Klik/tik voor meer informatie.",
"syncing_wallet_alert_title": "Uw portemonnee wordt gesynchroniseerd", "syncing_wallet_alert_title": "Uw portemonnee wordt gesynchroniseerd",
"template": "Sjabloon", "template": "Sjabloon",

View file

@ -822,6 +822,7 @@
"sync_status_syncronizing": "SYNCHRONIZACJA", "sync_status_syncronizing": "SYNCHRONIZACJA",
"sync_status_timed_out": "PRZEKROCZONO LIMIT CZASU", "sync_status_timed_out": "PRZEKROCZONO LIMIT CZASU",
"sync_status_unsupported": "Nieobsługiwany węzeł", "sync_status_unsupported": "Nieobsługiwany węzeł",
"synchronizing": "Synchronizacja",
"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.", "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.",
"syncing_wallet_alert_title": "Twój portfel się synchronizuje", "syncing_wallet_alert_title": "Twój portfel się synchronizuje",
"template": "Szablon", "template": "Szablon",

View file

@ -824,6 +824,7 @@
"sync_status_syncronizing": "SINCRONIZANDO", "sync_status_syncronizing": "SINCRONIZANDO",
"sync_status_timed_out": "TEMPO ESGOTADO", "sync_status_timed_out": "TEMPO ESGOTADO",
"sync_status_unsupported": "Nó não suportado", "sync_status_unsupported": "Nó não suportado",
"synchronizing": "Sincronizando",
"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.", "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.",
"syncing_wallet_alert_title": "Sua carteira está sincronizando", "syncing_wallet_alert_title": "Sua carteira está sincronizando",
"template": "Modelo", "template": "Modelo",

View file

@ -823,6 +823,7 @@
"sync_status_syncronizing": "СИНХРОНИЗАЦИЯ", "sync_status_syncronizing": "СИНХРОНИЗАЦИЯ",
"sync_status_timed_out": "ВРЕМЯ ВЫШЛО", "sync_status_timed_out": "ВРЕМЯ ВЫШЛО",
"sync_status_unsupported": "Неподдерживаемый узел", "sync_status_unsupported": "Неподдерживаемый узел",
"synchronizing": "Синхронизация",
"syncing_wallet_alert_content": "Ваш баланс и список транзакций могут быть неполными, пока вверху не будет написано «СИНХРОНИЗИРОВАНО». Щелкните/коснитесь, чтобы узнать больше.", "syncing_wallet_alert_content": "Ваш баланс и список транзакций могут быть неполными, пока вверху не будет написано «СИНХРОНИЗИРОВАНО». Щелкните/коснитесь, чтобы узнать больше.",
"syncing_wallet_alert_title": "Ваш кошелек синхронизируется", "syncing_wallet_alert_title": "Ваш кошелек синхронизируется",
"template": "Шаблон", "template": "Шаблон",

View file

@ -822,6 +822,7 @@
"sync_status_syncronizing": "กำลังซิงโครไนซ์", "sync_status_syncronizing": "กำลังซิงโครไนซ์",
"sync_status_timed_out": "หมดเวลา", "sync_status_timed_out": "หมดเวลา",
"sync_status_unsupported": "โหนดที่ไม่ได้รับการสนับสนุน", "sync_status_unsupported": "โหนดที่ไม่ได้รับการสนับสนุน",
"synchronizing": "การซิงโครไนซ์",
"syncing_wallet_alert_content": "รายการยอดเงินและธุรกรรมของคุณอาจไม่สมบูรณ์จนกว่าจะมีข้อความว่า “ซิงโครไนซ์” ที่ด้านบน คลิก/แตะเพื่อเรียนรู้เพิ่มเติม่", "syncing_wallet_alert_content": "รายการยอดเงินและธุรกรรมของคุณอาจไม่สมบูรณ์จนกว่าจะมีข้อความว่า “ซิงโครไนซ์” ที่ด้านบน คลิก/แตะเพื่อเรียนรู้เพิ่มเติม่",
"syncing_wallet_alert_title": "กระเป๋าสตางค์ของคุณกำลังซิงค์", "syncing_wallet_alert_title": "กระเป๋าสตางค์ของคุณกำลังซิงค์",
"template": "แบบฟอร์ม", "template": "แบบฟอร์ม",

View file

@ -822,6 +822,7 @@
"sync_status_syncronizing": "PAG-SYNCHRONIZE", "sync_status_syncronizing": "PAG-SYNCHRONIZE",
"sync_status_timed_out": "NAG-TIME OUT", "sync_status_timed_out": "NAG-TIME OUT",
"sync_status_unsupported": "HINDI SUPORTADONG NODE", "sync_status_unsupported": "HINDI SUPORTADONG NODE",
"synchronizing": "Pag -synchronize",
"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.", "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.",
"syncing_wallet_alert_title": "Ang iyong wallet ay nag-sync", "syncing_wallet_alert_title": "Ang iyong wallet ay nag-sync",
"template": "Template", "template": "Template",

View file

@ -822,6 +822,7 @@
"sync_status_syncronizing": "SENKRONİZE EDİLİYOR", "sync_status_syncronizing": "SENKRONİZE EDİLİYOR",
"sync_status_timed_out": "ZAMAN AŞIMINA UĞRADI", "sync_status_timed_out": "ZAMAN AŞIMINA UĞRADI",
"sync_status_unsupported": "Desteklenmeyen düğüm", "sync_status_unsupported": "Desteklenmeyen düğüm",
"synchronizing": "Senkronize etme",
"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.", "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.",
"syncing_wallet_alert_title": "Cüzdanınız senkronize ediliyor", "syncing_wallet_alert_title": "Cüzdanınız senkronize ediliyor",
"template": "Şablon", "template": "Şablon",

View file

@ -823,6 +823,7 @@
"sync_status_syncronizing": "СИНХРОНІЗАЦІЯ", "sync_status_syncronizing": "СИНХРОНІЗАЦІЯ",
"sync_status_timed_out": "ТАЙМ-АУТ", "sync_status_timed_out": "ТАЙМ-АУТ",
"sync_status_unsupported": "Непідтримуваний вузол", "sync_status_unsupported": "Непідтримуваний вузол",
"synchronizing": "Синхронізація",
"syncing_wallet_alert_content": "Ваш баланс та список транзакцій може бути неповним, доки вгорі не буде написано «СИНХРОНІЗОВАНО». Натисніть/торкніться, щоб дізнатися більше.", "syncing_wallet_alert_content": "Ваш баланс та список транзакцій може бути неповним, доки вгорі не буде написано «СИНХРОНІЗОВАНО». Натисніть/торкніться, щоб дізнатися більше.",
"syncing_wallet_alert_title": "Ваш гаманець синхронізується", "syncing_wallet_alert_title": "Ваш гаманець синхронізується",
"template": "Шаблон", "template": "Шаблон",

View file

@ -824,6 +824,7 @@
"sync_status_syncronizing": "مطابقت پذیری", "sync_status_syncronizing": "مطابقت پذیری",
"sync_status_timed_out": "وقت ختم", "sync_status_timed_out": "وقت ختم",
"sync_status_unsupported": "غیر تعاون یافتہ نوڈ", "sync_status_unsupported": "غیر تعاون یافتہ نوڈ",
"synchronizing": "ہم آہنگی",
"syncing_wallet_alert_content": "آپ کے بیلنس اور لین دین کی فہرست اس وقت تک مکمل نہیں ہو سکتی جب تک کہ یہ سب سے اوپر \"SYNCRONIZED\" نہ کہے۔ مزید جاننے کے لیے کلک/تھپتھپائیں۔", "syncing_wallet_alert_content": "آپ کے بیلنس اور لین دین کی فہرست اس وقت تک مکمل نہیں ہو سکتی جب تک کہ یہ سب سے اوپر \"SYNCRONIZED\" نہ کہے۔ مزید جاننے کے لیے کلک/تھپتھپائیں۔",
"syncing_wallet_alert_title": "آپ کا بٹوہ مطابقت پذیر ہو رہا ہے۔", "syncing_wallet_alert_title": "آپ کا بٹوہ مطابقت پذیر ہو رہا ہے۔",
"template": "سانچے", "template": "سانچے",

View file

@ -819,6 +819,7 @@
"sync_status_syncronizing": "ĐANG ĐỒNG BỘ", "sync_status_syncronizing": "ĐANG ĐỒNG BỘ",
"sync_status_timed_out": "HẾT THỜI GIAN", "sync_status_timed_out": "HẾT THỜI GIAN",
"sync_status_unsupported": "NÓT KHÔNG ĐƯỢC HỖ TRỢ", "sync_status_unsupported": "NÓT KHÔNG ĐƯỢC HỖ TRỢ",
"synchronizing": "Đồng bộ hóa",
"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.", "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.",
"syncing_wallet_alert_title": "Ví của bạn đang đồng bộ", "syncing_wallet_alert_title": "Ví của bạn đang đồng bộ",
"template": "Mẫu", "template": "Mẫu",

View file

@ -823,6 +823,7 @@
"sync_status_syncronizing": "Ń MÚDỌ́GBA", "sync_status_syncronizing": "Ń MÚDỌ́GBA",
"sync_status_timed_out": "Ti akoko jade", "sync_status_timed_out": "Ti akoko jade",
"sync_status_unsupported": "Ile-igbimọ ti ko ni atilẹyin", "sync_status_unsupported": "Ile-igbimọ ti ko ni atilẹyin",
"synchronizing": "Mimuuṣiṣẹpọ",
"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.", "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.",
"syncing_wallet_alert_title": "Apamọwọ rẹ n muṣiṣẹpọ", "syncing_wallet_alert_title": "Apamọwọ rẹ n muṣiṣẹpọ",
"template": "Àwòṣe", "template": "Àwòṣe",

View file

@ -822,6 +822,7 @@
"sync_status_syncronizing": "正在同步", "sync_status_syncronizing": "正在同步",
"sync_status_timed_out": "时间到", "sync_status_timed_out": "时间到",
"sync_status_unsupported": "不支持的节点", "sync_status_unsupported": "不支持的节点",
"synchronizing": "同步",
"syncing_wallet_alert_content": "您的余额和交易列表可能不完整,直到顶部显示“已同步”。单击/点击以了解更多信息。", "syncing_wallet_alert_content": "您的余额和交易列表可能不完整,直到顶部显示“已同步”。单击/点击以了解更多信息。",
"syncing_wallet_alert_title": "您的钱包正在同步", "syncing_wallet_alert_title": "您的钱包正在同步",
"template": "模板", "template": "模板",

View file

@ -14,15 +14,15 @@ TYPES=($MONERO_COM $CAKEWALLET)
APP_ANDROID_TYPE=$1 APP_ANDROID_TYPE=$1
MONERO_COM_NAME="Monero.com" MONERO_COM_NAME="Monero.com"
MONERO_COM_VERSION="1.20.3" MONERO_COM_VERSION="1.21.0"
MONERO_COM_BUILD_NUMBER=115 MONERO_COM_BUILD_NUMBER=116
MONERO_COM_BUNDLE_ID="com.monero.app" MONERO_COM_BUNDLE_ID="com.monero.app"
MONERO_COM_PACKAGE="com.monero.app" MONERO_COM_PACKAGE="com.monero.app"
MONERO_COM_SCHEME="monero.com" MONERO_COM_SCHEME="monero.com"
CAKEWALLET_NAME="Cake Wallet" CAKEWALLET_NAME="Cake Wallet"
CAKEWALLET_VERSION="4.23.4" CAKEWALLET_VERSION="4.24.0"
CAKEWALLET_BUILD_NUMBER=249 CAKEWALLET_BUILD_NUMBER=252
CAKEWALLET_BUNDLE_ID="com.cakewallet.cake_wallet" CAKEWALLET_BUNDLE_ID="com.cakewallet.cake_wallet"
CAKEWALLET_PACKAGE="com.cakewallet.cake_wallet" CAKEWALLET_PACKAGE="com.cakewallet.cake_wallet"
CAKEWALLET_SCHEME="cakewallet" CAKEWALLET_SCHEME="cakewallet"

View file

@ -1,4 +1,4 @@
#!/bin/sh #!/bin/bash
set -e set -e
cd "$(dirname "$0")" cd "$(dirname "$0")"
@ -7,10 +7,10 @@ cd "$(dirname "$0")"
CW_DECRED_DIR=$(realpath ../..)/cw_decred CW_DECRED_DIR=$(realpath ../..)/cw_decred
LIBWALLET_PATH="${PWD}/decred/libwallet" LIBWALLET_PATH="${PWD}/decred/libwallet"
LIBWALLET_URL="https://github.com/decred/libwallet.git" LIBWALLET_URL="https://github.com/decred/libwallet.git"
LIBWALLET_VERSION="87b2769538db3065b334d247b25774593fc6443d" LIBWALLET_VERSION="dba5327d35cb5d5d1ff113b780869deee154511f"
if [ -e $LIBWALLET_PATH ]; then if [[ -e $LIBWALLET_PATH ]]; then
rm -fr $LIBWALLET_PATH/{*,.*} || true rm -fr $LIBWALLET_PATH || true
fi fi
mkdir -p $LIBWALLET_PATH || true mkdir -p $LIBWALLET_PATH || true
@ -32,7 +32,7 @@ then
echo "You have these versions installed on your system currently:" echo "You have these versions installed on your system currently:"
ls ${ANDROID_HOME}/ndk/ | cat | awk '{ print "- " $1 }' ls ${ANDROID_HOME}/ndk/ | cat | awk '{ print "- " $1 }'
echo "echo > ~/.zprofile" echo "echo > ~/.zprofile"
echo "echo 'export ANDROID_NDK_CERSION=..... > ~/.zprofile" echo "echo 'export ANDROID_NDK_VERSION=..... > ~/.zprofile"
exit 1 exit 1
fi fi
@ -65,7 +65,7 @@ do
esac esac
# PATH="${TOOLCHAIN_BASE_DIR}_${arch}/bin:${ORIGINAL_PATH}" # PATH="${TOOLCHAIN_BASE_DIR}_${arch}/bin:${ORIGINAL_PATH}"
if [ -e ./build ]; then if [[ -e ./build ]]; then
rm -fr ./build rm -fr ./build
fi fi

View file

@ -12,13 +12,13 @@ TYPES=($MONERO_COM $CAKEWALLET)
APP_IOS_TYPE=$1 APP_IOS_TYPE=$1
MONERO_COM_NAME="Monero.com" MONERO_COM_NAME="Monero.com"
MONERO_COM_VERSION="1.20.3" MONERO_COM_VERSION="1.21.0"
MONERO_COM_BUILD_NUMBER=113 MONERO_COM_BUILD_NUMBER=114
MONERO_COM_BUNDLE_ID="com.cakewallet.monero" MONERO_COM_BUNDLE_ID="com.cakewallet.monero"
CAKEWALLET_NAME="Cake Wallet" CAKEWALLET_NAME="Cake Wallet"
CAKEWALLET_VERSION="4.23.4" CAKEWALLET_VERSION="4.24.0"
CAKEWALLET_BUILD_NUMBER=302 CAKEWALLET_BUILD_NUMBER=305
CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet" CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet"

View file

@ -1,12 +1,12 @@
#!/bin/sh #!/bin/bash
set -e set -e
. ./config.sh . ./config.sh
LIBWALLET_PATH="${EXTERNAL_IOS_SOURCE_DIR}/libwallet" LIBWALLET_PATH="${EXTERNAL_IOS_SOURCE_DIR}/libwallet"
LIBWALLET_URL="https://github.com/decred/libwallet.git" LIBWALLET_URL="https://github.com/decred/libwallet.git"
LIBWALLET_VERSION="87b2769538db3065b334d247b25774593fc6443d" LIBWALLET_VERSION="dba5327d35cb5d5d1ff113b780869deee154511f"
if [ -e $LIBWALLET_PATH ]; then if [[ -e $LIBWALLET_PATH ]]; then
rm -fr $LIBWALLET_PATH rm -fr $LIBWALLET_PATH
fi fi
mkdir -p $LIBWALLET_PATH mkdir -p $LIBWALLET_PATH
git clone $LIBWALLET_URL $LIBWALLET_PATH git clone $LIBWALLET_URL $LIBWALLET_PATH
@ -17,8 +17,8 @@ SYSROOT=`xcrun --sdk iphoneos --show-sdk-path`
CLANG="clang -target arm64-apple-ios -isysroot ${SYSROOT}" CLANG="clang -target arm64-apple-ios -isysroot ${SYSROOT}"
CLANGXX="clang++ -target arm64-apple-ios -isysroot ${SYSROOT}" CLANGXX="clang++ -target arm64-apple-ios -isysroot ${SYSROOT}"
if [ -e ./build ]; then if [[ -e ./build ]]; then
rm -fr ./build rm -fr ./build
fi fi
CGO_ENABLED=1 GOOS=ios GOARCH=arm64 CC=$CLANG CXX=$CLANGXX \ CGO_ENABLED=1 GOOS=ios GOARCH=arm64 CC=$CLANG CXX=$CLANGXX \
go build -v -buildmode=c-archive -o ./build/libdcrwallet.a ./cgo || exit 1 go build -v -buildmode=c-archive -o ./build/libdcrwallet.a ./cgo || exit 1

View file

@ -14,8 +14,8 @@ if [ -n "$1" ]; then
fi fi
CAKEWALLET_NAME="Cake Wallet" CAKEWALLET_NAME="Cake Wallet"
CAKEWALLET_VERSION="1.13.4" CAKEWALLET_VERSION="1.14.0"
CAKEWALLET_BUILD_NUMBER=49 CAKEWALLET_BUILD_NUMBER=50
if ! [[ " ${TYPES[*]} " =~ " ${APP_LINUX_TYPE} " ]]; then if ! [[ " ${TYPES[*]} " =~ " ${APP_LINUX_TYPE} " ]]; then
echo "Wrong app type." echo "Wrong app type."

View file

@ -36,7 +36,7 @@ case $APP_MACOS_TYPE in
$MONERO_COM) $MONERO_COM)
CONFIG_ARGS="--monero";; CONFIG_ARGS="--monero";;
$CAKEWALLET) $CAKEWALLET)
CONFIG_ARGS="--monero --bitcoin --ethereum --polygon --nano --bitcoinCash --solana --tron --wownero --decred";; CONFIG_ARGS="--monero --bitcoin --ethereum --polygon --nano --bitcoinCash --solana --tron --wownero";;
esac esac
cp -rf pubspec_description.yaml pubspec.yaml cp -rf pubspec_description.yaml pubspec.yaml

View file

@ -16,13 +16,13 @@ if [ -n "$1" ]; then
fi fi
MONERO_COM_NAME="Monero.com" MONERO_COM_NAME="Monero.com"
MONERO_COM_VERSION="1.10.3" MONERO_COM_VERSION="1.11.0"
MONERO_COM_BUILD_NUMBER=45 MONERO_COM_BUILD_NUMBER=46
MONERO_COM_BUNDLE_ID="com.cakewallet.monero" MONERO_COM_BUNDLE_ID="com.cakewallet.monero"
CAKEWALLET_NAME="Cake Wallet" CAKEWALLET_NAME="Cake Wallet"
CAKEWALLET_VERSION="1.16.4" CAKEWALLET_VERSION="1.17.0"
CAKEWALLET_BUILD_NUMBER=107 CAKEWALLET_BUILD_NUMBER=108
CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet" CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet"
if ! [[ " ${TYPES[*]} " =~ " ${APP_MACOS_TYPE} " ]]; then if ! [[ " ${TYPES[*]} " =~ " ${APP_MACOS_TYPE} " ]]; then

View file

@ -4,7 +4,7 @@
LIBWALLET_PATH="${EXTERNAL_MACOS_SOURCE_DIR}/libwallet" LIBWALLET_PATH="${EXTERNAL_MACOS_SOURCE_DIR}/libwallet"
LIBWALLET_URL="https://github.com/decred/libwallet.git" LIBWALLET_URL="https://github.com/decred/libwallet.git"
LIBWALLET_VERSION="87b2769538db3065b334d247b25774593fc6443d" LIBWALLET_VERSION="dba5327d35cb5d5d1ff113b780869deee154511f"
echo "======================= DECRED LIBWALLET =========================" echo "======================= DECRED LIBWALLET ========================="

View file

@ -1,5 +1,5 @@
#define MyAppName "Cake Wallet" #define MyAppName "Cake Wallet"
#define MyAppVersion "0.4.4" #define MyAppVersion "0.5.0"
#define MyAppPublisher "Cake Labs LLC" #define MyAppPublisher "Cake Labs LLC"
#define MyAppURL "https://cakewallet.com/" #define MyAppURL "https://cakewallet.com/"
#define MyAppExeName "CakeWallet.exe" #define MyAppExeName "CakeWallet.exe"

View file

@ -1,4 +1,3 @@
import 'package:cw_core/utils/print_verbose.dart';
import 'utils/translation/arb_file_utils.dart'; import 'utils/translation/arb_file_utils.dart';
import 'utils/translation/translation_constants.dart'; import 'utils/translation/translation_constants.dart';

View file

@ -1,6 +1,6 @@
import 'dart:io'; import 'dart:io';
import 'package:cw_core/utils/print_verbose.dart'; import './print_verbose_dummy.dart';
import 'package:dio/dio.dart'; import 'package:dio/dio.dart';
import 'package:archive/archive_io.dart'; import 'package:archive/archive_io.dart';

View file

@ -1,6 +1,6 @@
import 'dart:io'; import 'dart:io';
import 'dart:convert'; import 'dart:convert';
import 'package:cw_core/utils/print_verbose.dart'; import './print_verbose_dummy.dart';
import 'localization/localization_constants.dart'; import 'localization/localization_constants.dart';
import 'utils/utils.dart'; import 'utils/utils.dart';

View file

@ -0,0 +1 @@
void printV(dynamic content) => print(content);

View file

@ -1,6 +1,6 @@
import 'dart:io'; import 'dart:io';
import 'package:cw_core/utils/print_verbose.dart'; import './print_verbose_dummy.dart';
import 'utils/translation/arb_file_utils.dart'; import 'utils/translation/arb_file_utils.dart';
import 'utils/translation/translation_constants.dart'; import 'utils/translation/translation_constants.dart';

View file

@ -1,6 +1,6 @@
import 'dart:io'; import 'dart:io';
import 'package:cw_core/utils/print_verbose.dart'; import './print_verbose_dummy.dart';
import 'utils/translation/arb_file_utils.dart'; import 'utils/translation/arb_file_utils.dart';
import 'utils/translation/translation_constants.dart'; import 'utils/translation/translation_constants.dart';

View file

@ -1,7 +1,7 @@
import 'dart:convert'; import 'dart:convert';
import 'dart:io'; import 'dart:io';
import 'package:cw_core/utils/print_verbose.dart'; import '../../print_verbose_dummy.dart';
void appendStringToArbFile(String fileName, String name, String text, {bool force = false}) { void appendStringToArbFile(String fileName, String name, String text, {bool force = false}) {
final file = File(fileName); final file = File(fileName);