4.22.1 RC (#1932)
* 4.22.1 RC * minor cleanup [skip ci] * Fix frozen balance not displaying at startup issue * Monero balance tx display issue (#1934) * minor cleanup [skip ci] * Fix frozen balance not displaying at startup issue * fix transactions not updating (stupid mobx reactions :3) * [skip ci]
Omar Hatem committed
Jan 5, 2025 at 03:11 UTC
d1c45a5326317b0b78675d34f4d827a88a5bba5a
10 files changed
+32
-54
assets/text/Monerocom_Release_Notes.txt
+2
-3
@@ -1,3 +1,2 @@
1
-Support Monero Ledger
2
-Bug fixes
3
-New designs and better user experience
\ No newline at end of file
1
+UI enhancements
2
+Bug fixes
\ No newline at end of file
assets/text/Release_Notes.txt
+4
-5
@@ -1,5 +1,4 @@
1
-Support Monero Ledger
2
-Prepare for Haven removal
3
-Improve Ethereum and Polygon sending process
4
-Bug fixes
5
-New designs and better user experience
\ No newline at end of file
1
+Bitcoin and Litecoin enhancements
2
+Solana and Nano fixes/improvements
3
+UI enhancements
4
+Bug fixes
\ No newline at end of file
cw_monero/lib/monero_wallet.dart
+7
-27
@@ -7,7 +7,6 @@ import 'package:cw_core/pathForWallet.dart';
7
import 'package:cw_core/transaction_priority.dart';
8
import 'package:cw_core/account.dart';
9
import 'package:cw_core/crypto_currency.dart';
10
-import 'package:cw_core/monero_amount_format.dart';
10
import 'package:cw_core/monero_balance.dart';
11
import 'package:cw_core/monero_transaction_priority.dart';
12
import 'package:cw_core/monero_wallet_keys.dart';
@@ -28,7 +27,6 @@ import 'package:cw_monero/api/transaction_history.dart' as transaction_history;
27
import 'package:cw_monero/api/wallet.dart' as monero_wallet;
28
import 'package:cw_monero/api/wallet_manager.dart';
29
import 'package:cw_monero/exceptions/monero_transaction_creation_exception.dart';
31
-import 'package:cw_monero/exceptions/monero_transaction_no_inputs_exception.dart';
30
import 'package:cw_monero/ledger.dart';
31
import 'package:cw_monero/monero_transaction_creation_credentials.dart';
32
import 'package:cw_monero/monero_transaction_history.dart';
@@ -58,8 +56,9 @@ abstract class MoneroWalletBase extends WalletBase<MoneroBalance,
56
required String password})
57
: balance = ObservableMap<CryptoCurrency, MoneroBalance>.of({
58
CryptoCurrency.xmr: MoneroBalance(
61
- fullBalance: monero_wallet.getFullBalance(accountIndex: 0),
62
- unlockedBalance: monero_wallet.getFullBalance(accountIndex: 0))
59
+ fullBalance: monero_wallet.getFullBalance(accountIndex: 0),
60
+ unlockedBalance: monero_wallet.getUnlockedBalance(accountIndex: 0),
61
+ )
62
}),
63
_isTransactionUpdating = false,
64
_hasSyncAfterStartup = false,
@@ -281,7 +280,6 @@ abstract class MoneroWalletBase extends WalletBase<MoneroBalance,
280
final hasMultiDestination = outputs.length > 1;
281
final unlockedBalance = monero_wallet.getUnlockedBalance(
282
accountIndex: walletAddresses.account!.id);
284
- var allInputsAmount = 0;
283
284
PendingTransactionDescription pendingTransactionDescription;
285
@@ -295,11 +293,9 @@ abstract class MoneroWalletBase extends WalletBase<MoneroBalance,
293
294
for (final utx in unspentCoins) {
295
if (utx.isSending) {
298
- allInputsAmount += utx.value;
296
inputs.add(utx.keyImage!);
297
}
298
}
302
- final spendAllCoins = inputs.length == unspentCoins.length;
299
300
if (hasMultiDestination) {
301
if (outputs.any(
@@ -311,8 +307,6 @@ abstract class MoneroWalletBase extends WalletBase<MoneroBalance,
307
final int totalAmount = outputs.fold(
308
0, (acc, value) => acc + (value.formattedCryptoAmount ?? 0));
309
314
- final estimatedFee =
315
- calculateEstimatedFee(_credentials.priority, totalAmount);
310
if (unlockedBalance < totalAmount) {
311
throw MoneroTransactionCreationException(
312
'You do not have enough XMR to send this amount.');
@@ -342,8 +336,6 @@ abstract class MoneroWalletBase extends WalletBase<MoneroBalance,
336
output.isParsedAddress ? output.extractedAddress : output.address;
337
final amount =
338
output.sendAll ? null : output.cryptoAmount!.replaceAll(',', '.');
345
- final formattedAmount =
346
- output.sendAll ? null : output.formattedCryptoAmount;
339
340
// if ((formattedAmount != null && unlockedBalance < formattedAmount) ||
341
// (formattedAmount == null && unlockedBalance <= 0)) {
@@ -353,8 +345,6 @@ abstract class MoneroWalletBase extends WalletBase<MoneroBalance,
345
// 'You do not have enough unlocked balance. Unlocked: $formattedBalance. Transaction amount: ${output.cryptoAmount}.');
346
// }
347
356
- final estimatedFee =
357
- calculateEstimatedFee(_credentials.priority, formattedAmount);
348
if (inputs.isEmpty) MoneroTransactionCreationException(
349
'No inputs selected');
350
pendingTransactionDescription =
@@ -750,26 +740,16 @@ abstract class MoneroWalletBase extends WalletBase<MoneroBalance,
740
Future<void> _askForUpdateTransactionHistory() async =>
741
await updateTransactions();
742
753
- int _getFullBalance() =>
754
- monero_wallet.getFullBalance(accountIndex: walletAddresses.account!.id);
755
-
743
int _getUnlockedBalance() => monero_wallet.getUnlockedBalance(
744
accountIndex: walletAddresses.account!.id);
745
746
int _getFrozenBalance() {
747
var frozenBalance = 0;
748
762
- unspentCoinsInfo.values.forEach((info) {
763
- unspentCoins.forEach((element) {
764
- if (element.hash == info.hash &&
765
- element.vout == info.vout &&
766
- info.isFrozen &&
767
- element.value == info.value && info.walletId == id &&
768
- info.accountIndex == walletAddresses.account!.id) {
769
- if (element.isFrozen && !element.isSending) frozenBalance+= element.value;
770
- }
771
- });
772
- });
749
+ for (var coin in unspentCoinsInfo.values.where((element) =>
750
+ element.walletId == id && element.accountIndex == walletAddresses.account!.id)) {
751
+ if (coin.isFrozen && !coin.isSending) frozenBalance += coin.value;
752
+ }
753
754
return frozenBalance;
755
}
ios/Podfile.lock
+1
-1
@@ -272,7 +272,7 @@ SPEC CHECKSUMS:
272
uni_links: d97da20c7701486ba192624d99bffaaffcfc298a
273
universal_ble: cf52a7b3fd2e7c14d6d7262e9fdadb72ab6b88a6
274
url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
275
- wakelock_plus: 78ec7c5b202cab7761af8e2b2b3d0671be6c4ae1
275
+ wakelock_plus: 373cfe59b235a6dd5837d0fb88791d2f13a90d56
276
workmanager: 0afdcf5628bbde6924c21af7836fed07b42e30e6
277
278
PODFILE CHECKSUM: e448f662d4c41f0c0b1ccbb78afd57dbf895a597
lib/view_model/dashboard/dashboard_view_model.dart
+3
-3
@@ -641,7 +641,7 @@ abstract class DashboardViewModelBase with Store {
641
642
transactions.clear();
643
644
- transactions = ObservableList.of(
644
+ transactions.addAll(
645
wallet.transactionHistory.transactions.values.map(
646
(transaction) => TransactionListItem(
647
transaction: transaction,
@@ -703,7 +703,7 @@ abstract class DashboardViewModelBase with Store {
703
monero!.getTransactionInfoAccountId(tx) == monero!.getCurrentAccount(wallet).id)
704
.toList();
705
706
- transactions = ObservableList.of(
706
+ transactions.addAll(
707
_accountTransactions.map(
708
(transaction) => TransactionListItem(
709
transaction: transaction,
@@ -723,7 +723,7 @@ abstract class DashboardViewModelBase with Store {
723
wow.wownero!.getCurrentAccount(wallet).id)
724
.toList();
725
726
- transactions = ObservableList.of(
726
+ transactions.addAll(
727
_accountTransactions.map(
728
(transaction) => TransactionListItem(
729
transaction: transaction,
scripts/android/app_env.sh
+4
-4
@@ -15,15 +15,15 @@ TYPES=($MONERO_COM $CAKEWALLET $HAVEN)
15
APP_ANDROID_TYPE=$1
16
17
MONERO_COM_NAME="Monero.com"
18
-MONERO_COM_VERSION="1.19.0"
19
-MONERO_COM_BUILD_NUMBER=109
18
+MONERO_COM_VERSION="1.19.1"
19
+MONERO_COM_BUILD_NUMBER=110
20
MONERO_COM_BUNDLE_ID="com.monero.app"
21
MONERO_COM_PACKAGE="com.monero.app"
22
MONERO_COM_SCHEME="monero.com"
23
24
CAKEWALLET_NAME="Cake Wallet"
25
-CAKEWALLET_VERSION="4.22.0"
26
-CAKEWALLET_BUILD_NUMBER=240
25
+CAKEWALLET_VERSION="4.22.1"
26
+CAKEWALLET_BUILD_NUMBER=241
27
CAKEWALLET_BUNDLE_ID="com.cakewallet.cake_wallet"
28
CAKEWALLET_PACKAGE="com.cakewallet.cake_wallet"
29
CAKEWALLET_SCHEME="cakewallet"
scripts/ios/app_env.sh
+4
-4
@@ -13,13 +13,13 @@ TYPES=($MONERO_COM $CAKEWALLET $HAVEN)
13
APP_IOS_TYPE=$1
14
15
MONERO_COM_NAME="Monero.com"
16
-MONERO_COM_VERSION="1.19.0"
17
-MONERO_COM_BUILD_NUMBER=106
16
+MONERO_COM_VERSION="1.19.1"
17
+MONERO_COM_BUILD_NUMBER=107
18
MONERO_COM_BUNDLE_ID="com.cakewallet.monero"
19
20
CAKEWALLET_NAME="Cake Wallet"
21
-CAKEWALLET_VERSION="4.22.0"
22
-CAKEWALLET_BUILD_NUMBER=287
21
+CAKEWALLET_VERSION="4.22.1"
22
+CAKEWALLET_BUILD_NUMBER=288
23
CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet"
24
25
HAVEN_NAME="Haven"
scripts/linux/app_env.sh
+2
-2
@@ -14,8 +14,8 @@ if [ -n "$1" ]; then
14
fi
15
16
CAKEWALLET_NAME="Cake Wallet"
17
-CAKEWALLET_VERSION="1.12.0"
18
-CAKEWALLET_BUILD_NUMBER=41
17
+CAKEWALLET_VERSION="1.12.1"
18
+CAKEWALLET_BUILD_NUMBER=42
19
20
if ! [[ " ${TYPES[*]} " =~ " ${APP_LINUX_TYPE} " ]]; then
21
echo "Wrong app type."
scripts/macos/app_env.sh
+4
-4
@@ -16,13 +16,13 @@ if [ -n "$1" ]; then
16
fi
17
18
MONERO_COM_NAME="Monero.com"
19
-MONERO_COM_VERSION="1.9.0"
20
-MONERO_COM_BUILD_NUMBER=39
19
+MONERO_COM_VERSION="1.9.1"
20
+MONERO_COM_BUILD_NUMBER=40
21
MONERO_COM_BUNDLE_ID="com.cakewallet.monero"
22
23
CAKEWALLET_NAME="Cake Wallet"
24
-CAKEWALLET_VERSION="1.15.0"
25
-CAKEWALLET_BUILD_NUMBER=99
24
+CAKEWALLET_VERSION="1.15.1"
25
+CAKEWALLET_BUILD_NUMBER=100
26
CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet"
27
28
if ! [[ " ${TYPES[*]} " =~ " ${APP_MACOS_TYPE} " ]]; then
scripts/windows/build_exe_installer.iss
+1
-1
@@ -1,5 +1,5 @@
1
#define MyAppName "Cake Wallet"
2
-#define MyAppVersion "0.3.0"
2
+#define MyAppVersion "0.3.1"
3
#define MyAppPublisher "Cake Labs LLC"
4
#define MyAppURL "https://cakewallet.com/"
5
#define MyAppExeName "CakeWallet.exe"