v5.8.0 Release Candidate (#2815)
* v5.8.0 Release Candidate Add Arbitrum EVM chains enhancements Integrate Jupiter swaps for Solana Bug fixes * Exclude transparent address from unified address * fix hiddenAddresses getting discarded [skip ci] * pump zcash order [skip ci] * CW-1372: zcash improvements and missing features second iteration (#2818) * fix: remove hidden addresses from usable address list fix: getBlockHeightByTime fallback to offline calculation fix: remove NewWalletTypeViewModel to fix groups working without restart * fix: rotate T addresses in exchanges * fix: builds without --zcash config (linux) * fix: update address after trade * Add zcash.me * printv [skip ci] --------- Co-authored-by: cyan <cyjan@mrcyjanek.net>
Omar Hatem committed
Jan 20, 2026 at 19:23 UTC
9ca2346a45f9c91a4fbc1b3ea38312120e2b7f6b
19 files changed
+185
-70
assets/text/Release_Notes.txt
+4
-2
@@ -1,3 +1,5 @@
1
-Add Zcash wallet
2
-Generic enhancements
1
+Add Arbitrum
2
+Zcash improvements
3
+EVM chains enhancements
4
+Integrate Jupiter swaps for Solana
5
Bug fixes
\ No newline at end of file
cw_zcash/lib/src/zcash_taddress_rotation.dart
+25
-5
@@ -17,6 +17,7 @@ import 'dart:io';
17
18
import 'package:cw_core/pathForWallet.dart';
19
import 'package:cw_core/utils/print_verbose.dart';
20
+import 'package:cw_core/wallet_info.dart';
21
import 'package:cw_core/wallet_type.dart';
22
import 'package:cw_zcash/src/util/crc32.dart';
23
import 'package:cw_zcash/src/zcash_wallet.dart';
@@ -232,6 +233,21 @@ class ZcashTaddressRotation {
233
final txs = WarpApi.getTxsSync(coin, a.id);
234
return txs.isNotEmpty;
235
});
236
+
237
+ // remove hidden addresses
238
+ final wis = await WalletInfo.selectList('type = ?', [WalletType.zcash.index]);
239
+
240
+ final List<String> hiddenAddresses_ = [];
241
+ for (int k = 0; k < wis.length; k++) {
242
+ final addrs = await wis[i].getHiddenAddresses();
243
+ final addr2 = await wis[i].getUsedAddresses();
244
+ hiddenAddresses_.addAll(addrs);
245
+ hiddenAddresses_.addAll(addr2);
246
+ }
247
+ final Set<String> hiddenAddresses = hiddenAddresses_.toSet();
248
+ rotationAccountsUsable[raKeys[i]]!.removeWhere((final a) {
249
+ return hiddenAddresses.contains(WarpApi.getTAddr(coin, a.id));
250
+ });
251
}
252
printV("rotationAccountsUsable: ${rotationAccountsUsable.length}");
253
@@ -376,12 +392,16 @@ class ZcashTaddressRotation {
392
}
393
}
394
379
- static String? addressForAccount(final int accountId) {
380
- final acc = rotationAccountsUsable[accountId]?.firstOrNull;
381
- if (acc == null) {
382
- return null;
395
+ static String? addressForAccount(final int accountId, final Set<String>? hiddenAddresses) {
396
+ final accs = rotationAccountsUsable[accountId] ?? [];
397
+ for (int i = 0; i < accs.length; i++) {
398
+ final addr = WarpApi.getTAddr(coin, accs[i].id);
399
+ if (hiddenAddresses?.contains(addr) == true) {
400
+ continue;
401
+ }
402
+ return addr;
403
}
384
- return WarpApi.getTAddr(coin, acc.id);
404
+ return null;
405
}
406
407
static List<String>? allAddressesForAccount(final int accountId) {
cw_zcash/lib/src/zcash_transaction_info.dart
-1
@@ -75,7 +75,6 @@ class ZcashTransactionInfo extends TransactionInfo {
75
static final Map<String, String> _destinationAddressMap = {};
76
77
static String? getCachedDestinationAddress(final String txId) {
78
- printV("$txId -> ${_destinationAddressMap.keys.join(",")}");
78
return _destinationAddressMap[txId] ??
79
_destinationAddressMap['"$txId"'] ??
80
_destinationAddressMap[txId.replaceAll('"', '')];
cw_zcash/lib/src/zcash_wallet.dart
+52
-3
@@ -783,7 +783,7 @@ abstract class ZcashWalletBase
783
final newWalletCredentials = credentials as ZcashNewWalletCredentials;
784
785
String mnemonic;
786
- if (newWalletCredentials.mnemonic != null && newWalletCredentials.mnemonic!.isNotEmpty) {
786
+ if (newWalletCredentials.mnemonic?.isNotEmpty == true) {
787
mnemonic = newWalletCredentials.mnemonic!;
788
} else {
789
final strength = (newWalletCredentials.seedPhraseLength == 24) ? 256 : 128;
@@ -970,7 +970,56 @@ abstract class ZcashWalletBase
970
_initialized = true;
971
}
972
973
- static Future<int> getHeightByDate(final DateTime date) {
974
- return WarpApi.getBlockHeightByTime(coin, date);
973
+ static Future<int> getBlockHeightByTime(final DateTime time) async {
974
+ final genesisTime = DateTime.utc(2016, 10, 28);
975
+ const genesisHeight = 0;
976
+
977
+ final firstHalvingTime = DateTime.utc(2020, 11, 18);
978
+ const firstHalvingHeight = 1046400;
979
+
980
+ final secondHalvingTime = DateTime.utc(2024, 11, 23);
981
+ const secondHalvingHeight = 2726400;
982
+
983
+ final t = time.toUtc().millisecondsSinceEpoch;
984
+ final t0 = genesisTime.millisecondsSinceEpoch;
985
+ final t1 = firstHalvingTime.millisecondsSinceEpoch;
986
+ final t2 = secondHalvingTime.millisecondsSinceEpoch;
987
+
988
+ if (t <= t0) return genesisHeight;
989
+
990
+ if (t < t1) {
991
+ return _interpolate(genesisHeight, firstHalvingHeight, t0, t1, t);
992
+ }
993
+
994
+ if (t < t2) {
995
+ return _interpolate(firstHalvingHeight, secondHalvingHeight, t1, t2, t);
996
+ }
997
+
998
+ final secondsSince2 = (t - t2) / 1000.0;
999
+ final blocksSince2 = (secondsSince2 / 76.0).floor();
1000
+ return secondHalvingHeight + blocksSince2;
1001
+ }
1002
+
1003
+ static int _interpolate(
1004
+ final int hStart,
1005
+ final int hEnd,
1006
+ final int tStart,
1007
+ final int tEnd,
1008
+ final int t,
1009
+ ) {
1010
+ if (tEnd == tStart) return hStart;
1011
+ final ratio = (t - tStart) / (tEnd - tStart);
1012
+ return (hStart + (hEnd - hStart) * ratio).round();
1013
+ }
1014
+
1015
+ static Future<int> getHeightByDate(final DateTime date) async {
1016
+ int height = await getBlockHeightByTime(date);
1017
+ try {
1018
+ final h2 = await WarpApi.getBlockHeightByTime(coin, date);
1019
+ height = h2;
1020
+ } catch (e) {
1021
+ printV("getHeightByDate: $e");
1022
+ }
1023
+ return height;
1024
}
1025
}
cw_zcash/lib/src/zcash_wallet_addresses.dart
+19
-12
@@ -51,7 +51,7 @@ abstract class ZcashWalletAddressesBase extends WalletAddresses with Store {
51
return orchardAddress;
52
case ZcashAddressType.unifiedType:
53
if (_unifiedAddress == null) {
54
- _unifiedAddress = WarpApi.getAddress(ZcashWalletBase.coin, accountId, 7);
54
+ _unifiedAddress = WarpApi.getAddress(ZcashWalletBase.coin, accountId, 6);
55
}
56
return _unifiedAddress ?? "";
57
}
@@ -91,7 +91,7 @@ abstract class ZcashWalletAddressesBase extends WalletAddresses with Store {
91
@computed
92
String? get transparentAddressRotated {
93
try {
94
- return ZcashTaddressRotation.addressForAccount(accountId);
94
+ return ZcashTaddressRotation.addressForAccount(accountId, hiddenAddresses);
95
} catch (e) {
96
return null;
97
}
@@ -120,6 +120,7 @@ abstract class ZcashWalletAddressesBase extends WalletAddresses with Store {
120
}
121
122
@override
123
+ @computed
124
String get addressForExchange => transparentAddressRotated ?? transparentAddress;
125
126
@override
@@ -130,17 +131,23 @@ abstract class ZcashWalletAddressesBase extends WalletAddresses with Store {
131
static int get coin => ZcashWalletBase.coin;
132
133
@override
133
- Future<void> init() async {
134
+ @observable
135
+ Set<String> hiddenAddresses = {};
136
+
137
+ Future<void> _initAddresses() async {
138
addressesMap = await walletInfo.getAddresses();
139
addressInfos = await walletInfo.getAddressInfos();
140
usedAddresses = await walletInfo.getUsedAddresses();
141
manualAddresses = await walletInfo.getManualAddresses();
142
hiddenAddresses = await walletInfo.getHiddenAddresses();
143
+ address = latestAddress;
144
+ }
145
140
- addressesMap = {"a": "b"};
146
+ @override
147
+ Future<void> init() async {
148
+ await _initAddresses();
149
150
await ZcashTaddressRotation.init();
143
- printV(ZcashTaddressRotation.rotationAccounts.keys);
151
int accountIndex = 0;
152
addressInfos = {
153
0:
@@ -155,11 +162,13 @@ abstract class ZcashWalletAddressesBase extends WalletAddresses with Store {
162
}).toList() ??
163
[],
164
};
158
- hiddenAddresses = ZcashTaddressRotation.allUsedAddressesForAccount(accountId)?.toSet() ?? {};
165
+ hiddenAddresses.addAll(
166
+ ZcashTaddressRotation.allUsedAddressesForAccount(accountId)?.toSet() ?? {},
167
+ );
168
160
- addressInfos[0]?.removeWhere((final test) => hiddenAddresses.contains(test.address));
169
+ // addressInfos[0]?.removeWhere((final test) => hiddenAddresses.contains(test.address));
170
if (_addressPageType == ZcashAddressType.transparentRotated) {
162
- final addr = ZcashTaddressRotation.addressForAccount(accountId);
171
+ final addr = ZcashTaddressRotation.addressForAccount(accountId, hiddenAddresses);
172
if (addr != null) {
173
address = addr;
174
}
@@ -167,14 +176,11 @@ abstract class ZcashWalletAddressesBase extends WalletAddresses with Store {
176
await saveAddressesInBox();
177
}
178
170
- @override
179
@observable
180
late String _address = latestAddress;
181
182
+ @computed
183
String get address {
175
- if (addressPageType == ZcashAddressType.transparentRotated) {
176
- return transparentAddressRotated ?? transparentAddress;
177
- }
184
return _address;
185
}
186
@@ -191,6 +197,7 @@ abstract class ZcashWalletAddressesBase extends WalletAddresses with Store {
197
await walletInfo.setUsedAddresses(usedAddresses.toList());
198
await walletInfo.setHiddenAddresses(hiddenAddresses.toList());
199
await walletInfo.setManualAddresses(manualAddresses.toList());
200
+ await _initAddresses();
201
} catch (e) {
202
printV("Error saving addresses: $e");
203
}
ios/Podfile.lock
+6
@@ -84,6 +84,8 @@ PODS:
84
- payjoin_flutter (0.23.0)
85
- permission_handler_apple (9.3.0):
86
- Flutter
87
+ - quick_actions_ios (0.0.1):
88
+ - Flutter
89
- reown_yttrium (0.0.1):
90
- Flutter
91
- YttriumWrapper (= 0.8.35)
@@ -169,6 +171,7 @@ DEPENDENCIES:
171
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
172
- payjoin_flutter (from `.symlinks/plugins/payjoin_flutter/ios`)
173
- permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
174
+ - quick_actions_ios (from `.symlinks/plugins/quick_actions_ios/ios`)
175
- reown_yttrium (from `.symlinks/plugins/reown_yttrium/ios`)
176
- sensitive_clipboard (from `.symlinks/plugins/sensitive_clipboard/ios`)
177
- share_plus (from `.symlinks/plugins/share_plus/ios`)
@@ -243,6 +246,8 @@ EXTERNAL SOURCES:
246
:path: ".symlinks/plugins/payjoin_flutter/ios"
247
permission_handler_apple:
248
:path: ".symlinks/plugins/permission_handler_apple/ios"
249
+ quick_actions_ios:
250
+ :path: ".symlinks/plugins/quick_actions_ios/ios"
251
reown_yttrium:
252
:path: ".symlinks/plugins/reown_yttrium/ios"
253
sensitive_clipboard:
@@ -299,6 +304,7 @@ SPEC CHECKSUMS:
304
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
305
payjoin_flutter: d9d4c8aa16bd5dfedb9b21d0edc8199e0187d96e
306
permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
307
+ quick_actions_ios: 56f3cbaa71e94f212838d1f9fe354bd0734779bf
308
reown_yttrium: c0e87e5965fa60a3559564cc35cffbba22976089
309
SDWebImage: 9f177d83116802728e122410fb25ad88f5c7608a
310
sensitive_clipboard: d4866e5d176581536c27bb1618642ee83adca986
lib/di.dart
+2
-6
@@ -188,7 +188,6 @@ import 'package:cake_wallet/view_model/cake_pay/cake_pay_account_view_model.dart
188
import 'package:cake_wallet/view_model/cake_pay/cake_pay_cards_list_view_model.dart';
189
import 'package:cake_wallet/view_model/nano_account_list/nano_account_edit_or_create_view_model.dart';
190
import 'package:cake_wallet/view_model/nano_account_list/nano_account_list_view_model.dart';
191
-import 'package:cake_wallet/view_model/new_wallet_type_view_model.dart';
191
import 'package:cake_wallet/view_model/node_list/pow_node_list_view_model.dart';
192
import 'package:cake_wallet/view_model/wallet_groups_display_view_model.dart';
193
import 'package:cake_wallet/view_model/seed_settings_view_model.dart';
@@ -442,10 +441,6 @@ Future<void> setup({
441
newWalletArguments: newWalletArgs,
442
));
443
445
-
446
- final walletList = await WalletInfo.getAll();
447
- getIt.registerFactory<NewWalletTypeViewModel>(() => NewWalletTypeViewModel(walletList.isNotEmpty));
448
-
444
getIt.registerFactory<WalletManager>(
445
() => WalletManager(
446
getIt.get<SharedPreferences>(),
@@ -579,6 +574,8 @@ Future<void> setup({
574
sharedPreferences: getIt.get<SharedPreferences>(),
575
keyService: getIt.get<KeyService>()));
576
577
+ final walletList = await WalletInfo.getAll();
578
+
579
getIt.registerFactory<AuthService>(
580
() => AuthService(
581
secureStorage: getIt.get<SecureStorage>(),
@@ -1326,7 +1323,6 @@ Future<void> setup({
1323
(newWalletTypeArguments, _) {
1324
return NewWalletTypePage(
1325
newWalletTypeArguments: newWalletTypeArguments,
1329
- newWalletTypeViewModel: getIt.get<NewWalletTypeViewModel>(),
1326
);
1327
});
1328
lib/entities/parse_address_from_domain.dart
+38
@@ -15,6 +15,7 @@ import 'package:cake_wallet/store/settings_store.dart';
15
import 'package:cake_wallet/twitter/twitter_api.dart';
16
import 'package:cw_core/crypto_currency.dart';
17
import 'package:cw_core/utils/print_verbose.dart';
18
+import 'package:cw_core/utils/proxy_wrapper.dart';
19
import 'package:cw_core/wallet_base.dart';
20
import 'package:cw_core/wallet_type.dart';
21
import 'package:flutter/cupertino.dart';
@@ -216,6 +217,19 @@ class AddressResolver {
217
Future<ParsedAddress> resolve(BuildContext context, String text, CryptoCurrency currency) async {
218
final ticker = currency.title;
219
try {
220
+ if (text.startsWith("zcash.me")) {
221
+ final parts = text.split("/");
222
+ final handle = parts.last;
223
+ if (parts.length == 2 && handle.isNotEmpty) {
224
+ final extractZcashAddress = await _fetchZcashAddress(handle);
225
+ if (extractZcashAddress != null) {
226
+ return ParsedAddress.zcashAddress(
227
+ address: extractZcashAddress,
228
+ name: handle,
229
+ );
230
+ }
231
+ }
232
+ }
233
// twitter handle example: @username
234
if (text.startsWith('@') && !text.substring(1).contains('@')) {
235
if (currency == CryptoCurrency.zano && settingsStore.lookupsZanoAlias) {
@@ -479,4 +493,28 @@ class AddressResolver {
493
494
return ParsedAddress(addresses: [text]);
495
}
496
+
497
+ Future<String?> _fetchZcashAddress(String handle) async {
498
+ final url = Uri.parse('https://zcash.me/$handle');
499
+
500
+ try {
501
+ final response = await ProxyWrapper().get(clearnetUri: url);
502
+
503
+ if (response.statusCode == 200) {
504
+ final addressRegex = RegExp(
505
+ r'(t1[0-9A-Za-z]{33}|t3[0-9A-Za-z]{33}|zs[a-z0-9]{76}|u1[a-z0-9]{1,300})',
506
+ caseSensitive: true,
507
+ );
508
+
509
+ final match = addressRegex.firstMatch(response.body);
510
+
511
+ if (match != null) {
512
+ return match.group(0);
513
+ }
514
+ }
515
+ } catch (e) {
516
+ printV('Error fetching zcash.me profile: $e');
517
+ }
518
+ return null;
519
+ }
520
}
lib/entities/parsed_address.dart
+9
@@ -15,6 +15,7 @@ enum ParseFrom {
15
thorChain,
16
wellKnown,
17
zanoAlias,
18
+ zcashAddress,
19
bip353
20
}
21
@@ -167,6 +168,14 @@ class ParsedAddress {
168
);
169
}
170
171
+ factory ParsedAddress.zcashAddress({required String address, required String name}) {
172
+ return ParsedAddress(
173
+ addresses: [address],
174
+ name: name,
175
+ parseFrom: ParseFrom.zcashAddress,
176
+ );
177
+ }
178
+
179
factory ParsedAddress.fetchWellKnownAddress({required String address, required String name}) {
180
return ParsedAddress(
181
addresses: [address],
lib/src/screens/new_wallet/new_wallet_type_page.dart
+2
-7
@@ -13,7 +13,6 @@ import 'package:cake_wallet/src/widgets/scollable_with_bottom_section.dart';
13
import 'package:cake_wallet/src/widgets/search_bar_widget.dart';
14
import 'package:cake_wallet/utils/responsive_layout_util.dart';
15
import 'package:cake_wallet/utils/show_pop_up.dart';
16
-import 'package:cake_wallet/view_model/new_wallet_type_view_model.dart';
16
import 'package:cake_wallet/wallet_types.g.dart';
17
import 'package:cw_core/currency_for_wallet_type.dart';
18
import 'package:cw_core/hardware/device_connection_type.dart';
@@ -23,11 +22,9 @@ import 'package:flutter/material.dart';
22
23
class NewWalletTypePage extends BasePage {
24
NewWalletTypePage({
26
- required this.newWalletTypeViewModel,
25
required this.newWalletTypeArguments,
26
});
27
30
- final NewWalletTypeViewModel newWalletTypeViewModel;
28
final NewWalletTypeArguments newWalletTypeArguments;
29
30
final walletTypeImage = Image.asset('assets/images/wallet_type.png');
@@ -50,7 +47,6 @@ class NewWalletTypePage extends BasePage {
47
Widget body(BuildContext context) => WalletTypeForm(
48
walletImage: currentTheme.isDark ? walletTypeImage : walletTypeLightImage,
49
isCreate: newWalletTypeArguments.isCreate,
53
- newWalletTypeViewModel: newWalletTypeViewModel,
50
onTypeSelected: newWalletTypeArguments.onTypeSelected,
51
hardwareWalletType: newWalletTypeArguments.hardwareWalletType,
52
);
@@ -60,14 +56,12 @@ class WalletTypeForm extends StatefulWidget {
56
WalletTypeForm({
57
required this.walletImage,
58
required this.isCreate,
63
- required this.newWalletTypeViewModel,
59
this.onTypeSelected,
60
this.hardwareWalletType,
61
});
62
63
final bool isCreate;
64
final Image walletImage;
70
- final NewWalletTypeViewModel newWalletTypeViewModel;
65
final void Function(BuildContext, WalletType)? onTypeSelected;
66
final HardwareWalletType? hardwareWalletType;
67
@@ -195,9 +189,10 @@ class WalletTypeFormState extends State<WalletTypeForm> {
189
// If it's a restore flow, trigger the external callback
190
// If it's not a BIP39 Wallet or if there are no other wallets, route to the newWallet page
191
// Any other scenario, route to pre-existing seed page
192
+ final walletList = await WalletInfo.getAll();
193
if (!widget.isCreate) {
194
widget.onTypeSelected!(context, selected!);
200
- } else if (!isBIP39Wallet(selected!) || !widget.newWalletTypeViewModel.hasExisitingWallet) {
195
+ } else if (!isBIP39Wallet(selected!) || walletList.isEmpty) {
196
Navigator.of(context).pushNamed(
197
Routes.newWallet,
198
arguments: NewWalletArguments(type: selected!),
lib/src/screens/send/widgets/extract_address_from_parsed.dart
+5
@@ -73,6 +73,11 @@ Future<String> extractAddressFromParsed(
73
content = S.of(context).extracted_address_content('${parsedAddress.name} (Zano Alias)');
74
address = parsedAddress.addresses.first;
75
break;
76
+ case ParseFrom.zcashAddress:
77
+ title = S.of(context).address_detected;
78
+ content = S.of(context).extracted_address_content('${parsedAddress.name} (Zcash.me)');
79
+ address = parsedAddress.addresses.first;
80
+ break;
81
case ParseFrom.bip353:
82
title = S.of(context).address_detected;
83
content = S.of(context).extracted_address_content('${parsedAddress.name} (BIP-353)');
lib/view_model/new_wallet_type_view_model.dart
deleted
-11
@@ -1,11 +0,0 @@
1
-import 'package:mobx/mobx.dart';
2
-
3
-part 'new_wallet_type_view_model.g.dart';
4
-
5
-class NewWalletTypeViewModel = NewWalletTypeViewModelBase with _$NewWalletTypeViewModel;
6
-
7
-abstract class NewWalletTypeViewModelBase with Store {
8
- NewWalletTypeViewModelBase(this.hasExisitingWallet);
9
-
10
- final bool hasExisitingWallet;
11
-}
lib/zcash/cw_zcash.dart
+2
-2
@@ -176,7 +176,7 @@ class CWZcash extends Zcash {
176
}
177
178
@override
179
- ZcashAddressType getZcashAddressType(ReceivePageOption option) {
179
+ dynamic getZcashAddressType(ReceivePageOption option) {
180
switch (option) {
181
case ZcashReceivePageOption.unified:
182
return ZcashAddressType.unifiedType;
@@ -196,7 +196,7 @@ class CWZcash extends Zcash {
196
}
197
198
@override
199
- ZcashAddressType getOptionToType(ReceivePageOption option) {
199
+ dynamic getOptionToType(ReceivePageOption option) {
200
return (option as ZcashReceivePageOption).toType();
201
}
202
scripts/android/app_env.sh
+4
-4
@@ -14,15 +14,15 @@ TYPES=($MONERO_COM $CAKEWALLET)
14
APP_ANDROID_TYPE=$1
15
16
MONERO_COM_NAME="Monero.com"
17
-MONERO_COM_VERSION="5.6.5"
18
-MONERO_COM_BUILD_NUMBER=4150
17
+MONERO_COM_VERSION="5.8.0"
18
+MONERO_COM_BUILD_NUMBER=4151
19
MONERO_COM_BUNDLE_ID="com.monero.app"
20
MONERO_COM_PACKAGE="com.monero.app"
21
MONERO_COM_SCHEME="monero.com"
22
23
CAKEWALLET_NAME="Cake Wallet"
24
-CAKEWALLET_VERSION="5.7.0"
25
-CAKEWALLET_BUILD_NUMBER=4298
24
+CAKEWALLET_VERSION="5.8.0"
25
+CAKEWALLET_BUILD_NUMBER=4299
26
CAKEWALLET_BUNDLE_ID="com.cakewallet.cake_wallet"
27
CAKEWALLET_PACKAGE="com.cakewallet.cake_wallet"
28
CAKEWALLET_SCHEME="cakewallet"
scripts/ios/app_env.sh
+4
-4
@@ -12,13 +12,13 @@ TYPES=($MONERO_COM $CAKEWALLET)
12
APP_IOS_TYPE=$1
13
14
MONERO_COM_NAME="Monero.com"
15
-MONERO_COM_VERSION="5.6.5"
16
-MONERO_COM_BUILD_NUMBER=153
15
+MONERO_COM_VERSION="5.8.0"
16
+MONERO_COM_BUILD_NUMBER=155
17
MONERO_COM_BUNDLE_ID="com.cakewallet.monero"
18
19
CAKEWALLET_NAME="Cake Wallet"
20
-CAKEWALLET_VERSION="5.7.0"
21
-CAKEWALLET_BUILD_NUMBER=363
20
+CAKEWALLET_VERSION="5.8.0"
21
+CAKEWALLET_BUILD_NUMBER=366
22
CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet"
23
24
scripts/linux/app_env.sh
+2
-2
@@ -14,8 +14,8 @@ if [ -n "$1" ]; then
14
fi
15
16
CAKEWALLET_NAME="Cake Wallet"
17
-CAKEWALLET_VERSION="5.6.1"
18
-CAKEWALLET_BUILD_NUMBER=75
17
+CAKEWALLET_VERSION="5.8.0"
18
+CAKEWALLET_BUILD_NUMBER=76
19
20
if ! [[ " ${TYPES[*]} " =~ " ${APP_LINUX_TYPE} " ]]; then
21
echo "Wrong app type."
scripts/macos/app_config.sh
+1
-1
@@ -36,7 +36,7 @@ case $APP_MACOS_TYPE in
36
$MONERO_COM)
37
CONFIG_ARGS="--monero";;
38
$CAKEWALLET)
39
- CONFIG_ARGS="--monero --bitcoin --ethereum --polygon --nano --bitcoinCash --solana --tron --wownero --dogecoin --base --zcash --arbitrum";;
39
+ CONFIG_ARGS="--monero --bitcoin --ethereum --polygon --nano --bitcoinCash --solana --tron --wownero --dogecoin --base --arbitrum";;
40
esac
41
42
cp -rf pubspec_description.yaml pubspec.yaml
scripts/macos/app_env.sh
+4
-4
@@ -16,13 +16,13 @@ if [ -n "$1" ]; then
16
fi
17
18
MONERO_COM_NAME="Monero.com"
19
-MONERO_COM_VERSION="5.6.6"
20
-MONERO_COM_BUILD_NUMBER=74
19
+MONERO_COM_VERSION="5.8.0"
20
+MONERO_COM_BUILD_NUMBER=75
21
MONERO_COM_BUNDLE_ID="com.cakewallet.monero"
22
23
CAKEWALLET_NAME="Cake Wallet"
24
-CAKEWALLET_VERSION="5.7.0"
25
-CAKEWALLET_BUILD_NUMBER=142
24
+CAKEWALLET_VERSION="5.8.0"
25
+CAKEWALLET_BUILD_NUMBER=143
26
CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet"
27
28
if ! [[ " ${TYPES[*]} " =~ " ${APP_MACOS_TYPE} " ]]; then
tool/configure.dart
+6
-6
@@ -1631,9 +1631,9 @@ abstract class Zcash {
1631
List<TransactionPriority> getTransactionPriorities();
1632
List<ReceivePageOption> getZcashReceivePageOptions(Object wallet);
1633
ReceivePageOption getSelectedAddressType(Object wallet);
1634
- ZcashAddressType getZcashAddressType(ReceivePageOption option);
1634
+ dynamic getZcashAddressType(ReceivePageOption option);
1635
Future<void> setAddressType(Object wallet, dynamic option);
1636
- ZcashAddressType getOptionToType(ReceivePageOption option);
1636
+ dynamic getOptionToType(ReceivePageOption option);
1637
void unlockDatabase(String password);
1638
Future<int> getHeightByDate(DateTime date);
1639
}
@@ -1862,6 +1862,10 @@ Future<void> generateWalletTypes({
1862
outputContent += '\tWalletType.solana,\n';
1863
}
1864
1865
+ if (hasZcash) {
1866
+ outputContent += '\tWalletType.zcash,\n';
1867
+ }
1868
+
1869
if (hasTron) {
1870
outputContent += '\tWalletType.tron,\n';
1871
}
@@ -1874,10 +1878,6 @@ Future<void> generateWalletTypes({
1878
outputContent += '\tWalletType.bitcoinCash,\n';
1879
}
1880
1877
- if (hasZcash) {
1878
- outputContent += '\tWalletType.zcash,\n';
1879
- }
1880
-
1881
if (hasBitcoin) {
1882
outputContent += '\tWalletType.litecoin,\n';
1883
}