Merge branch 'cake-tech:dev' into dev

This commit is contained in:
BSN ∞/21M
2026-03-26 11:43:02 +01:00
committed by GitHub
78 changed files with 346 additions and 186 deletions
+10 -7
View File
@@ -113,12 +113,15 @@ jobs:
- name: Build monero_c
run: |
mkdir -p scripts/monero_c
pushd scripts/monero_c
wget https://github.com/MrCyjaneK/monero_c/releases/download/v0.18.4.0-RC9/release-bundle.zip
unzip release-bundle.zip
rm release-bundle.zip
unxz -fv release/*/*.xz
./scripts/prepare_moneroc.sh
mkdir -p scripts/monero_c/release
pushd scripts/monero_c/release
mkdir -p $(git describe --tags)
pushd $(git describe --tags)
wget https://github.com/MrCyjaneK/monero_c/releases/download/v0.18.4.6-RC1/release-bundle.zip
unzip release-bundle.zip
rm release-bundle.zip
popd
popd
- name: Execute Build and Setup Commands
@@ -218,7 +221,7 @@ jobs:
exec timeout --signal=SIGKILL 900 flutter drive --driver=test_driver/integration_test.dart --target=integration_test/test_suites/restore_wallet_through_seeds_flow_test.dart
- name: Test [cw_monero]
timeout-minutes: 15
run: cd cw_monero && flutter test --verbose
run: cd cw_monero && flutter test
- name: Stop screen recording, encrypt and upload
if: always()
run: |
+1
View File
@@ -0,0 +1 @@
lib*_wallet2_api_c.so
@@ -1 +0,0 @@
../../../../../../scripts/monero_c/release/monero/aarch64-linux-android_libwallet2_api_c.so
@@ -1 +0,0 @@
../../../../../../scripts/monero_c/release/wownero/aarch64-linux-android_libwallet2_api_c.so
@@ -1 +0,0 @@
../../../../../../scripts/monero_c/release/zano/aarch64-linux-android_libwallet2_api_c.so
@@ -1 +0,0 @@
../../../../../../scripts/monero_c/release/monero/armv7a-linux-androideabi_libwallet2_api_c.so
@@ -1 +0,0 @@
../../../../../../scripts/monero_c/release/wownero/armv7a-linux-androideabi_libwallet2_api_c.so
@@ -1 +0,0 @@
../../../../../../scripts/monero_c/release/zano/armv7a-linux-androideabi_libwallet2_api_c.so
@@ -1 +0,0 @@
../../../../../../scripts/monero_c/release/monero/x86_64-linux-android_libwallet2_api_c.so
@@ -1 +0,0 @@
../../../../../../scripts/monero_c/release/wownero/x86_64-linux-android_libwallet2_api_c.so
@@ -1 +0,0 @@
../../../../../../scripts/monero_c/release/zano/x86_64-linux-android_libwallet2_api_c.so
+17 -8
View File
@@ -112,10 +112,7 @@ abstract class BitcoinWalletBase extends ElectrumWallet with Store {
);
} catch (e) {
printV(e);
lightningWallet = null;
}
} else {
lightningWallet = null;
}
payjoinManager = PayjoinManager(PayjoinStorage(payjoinBox), this);
@@ -153,6 +150,7 @@ abstract class BitcoinWalletBase extends ElectrumWallet with Store {
lnurlDomain: "cake.cash",
cachedAddress: cachedLightningAddress,
);
walletAddresses.setLightningAddress(walletInfo.name);
}
} else {
lightningWallet = null;
@@ -367,6 +365,18 @@ abstract class BitcoinWalletBase extends ElectrumWallet with Store {
await fetchBalances();
}
},
onCreateDepositTransactionEvent: (txs) async {
if (txs.isNotEmpty) {
transactionHistory.addMany(txs);
await transactionHistory.save();
}
},
onUpdateDepositTransactionEvent: (txs) async {
if (txs.isNotEmpty) {
txs.forEach((tx) => transactionHistory.transactions.remove(tx.id));
await transactionHistory.save();
}
},
onBalanceChangedEvent: fetchBalances,
);
}
@@ -390,7 +400,7 @@ abstract class BitcoinWalletBase extends ElectrumWallet with Store {
return super.fetchTransactions();
}
late LightningWallet? lightningWallet;
LightningWallet? lightningWallet;
late final PayjoinManager payjoinManager;
@@ -479,10 +489,9 @@ abstract class BitcoinWalletBase extends ElectrumWallet with Store {
final isLNCompatible = await lightningWallet?.isCompatible(lnAddr);
if ((credentials.coinTypeToSpendFrom == UnspentCoinType.lightning && lightningWallet != null) ||
isLNCompatible == true) {
BigInt amount;
if (credentials.outputs.first.sendAll) {
amount = (await lightningWallet!.getBalance()) - BigInt.from(10);
amount = await lightningWallet!.getBalance();
} else {
amount = parseFixed(
credentials.outputs.first.cryptoAmount?.isNotEmpty == true
@@ -491,8 +500,8 @@ abstract class BitcoinWalletBase extends ElectrumWallet with Store {
8);
}
return lightningWallet!.createTransaction(lnAddr,
amount > BigInt.zero ? amount : null, credentials.priority);
return lightningWallet!.createTransaction(lnAddr, amount > BigInt.zero ? amount : null,
credentials.priority, credentials.outputs.first.sendAll);
}
final tx = (await super.createTransaction(credentials)) as PendingBitcoinTransaction;
@@ -3,6 +3,7 @@ import 'dart:math';
import 'package:bitcoin_base/bitcoin_base.dart';
import 'package:blockchain_utils/blockchain_utils.dart';
import 'package:breez_sdk_spark_flutter/breez_sdk_spark.dart';
import 'package:cw_bitcoin/bitcoin_address_record.dart';
import 'package:cw_bitcoin/bitcoin_unspent.dart';
import 'package:cw_bitcoin/lightning/lightning_addres_type.dart';
@@ -807,10 +808,11 @@ abstract class ElectrumWalletAddressesBase extends WalletAddresses with Store {
printV(username);
rethrow;
}
} catch (e) {
// make sure lightningAddress gets initialized anyway
} on SdkError_NetworkError catch (_) {
} on SdkError_SparkError catch (e) {
if (!e.field0.contains("dns")) rethrow;
} finally {
lightningAddress ??= lightningWallet!.cachedAddress;
rethrow;
}
}
}
+59 -17
View File
@@ -137,17 +137,24 @@ class LightningWallet {
.lightningAddress;
}
Future<String> getBolt11Invoice(BigInt? amount, String description) async {
final response = await sdk.receivePayment(
request: ReceivePaymentRequest(
paymentMethod: ReceivePaymentMethod.bolt11Invoice(
description: description,
amountSats: amount,
Future<String?> getBolt11Invoice(BigInt? amount, String description) async {
try {
final response = await sdk.receivePayment(
request: ReceivePaymentRequest(
paymentMethod: ReceivePaymentMethod.bolt11Invoice(
description: description,
amountSats: amount,
),
),
),
);
);
return response.paymentRequest;
return response.paymentRequest;
} on SdkError_NetworkError catch (_) {
return null;
} on SdkError_SparkError catch (e) {
if (!e.field0.contains("dns")) rethrow;
return null;
}
}
Future<bool> isCompatible(String input) async {
@@ -162,12 +169,14 @@ class LightningWallet {
}
Future<PendingLightningTransaction> createTransaction(
String address, BigInt? amountSats, BitcoinTransactionPriority? priority) async {
String address, BigInt? amountSats, BitcoinTransactionPriority? priority, bool feesIncluded) async {
final inputType = await sdk.parse(input: address);
final feePolicy = feesIncluded ? FeePolicy.feesIncluded : FeePolicy.feesExcluded;
if (inputType is InputType_Bolt11Invoice) {
final request = PrepareSendPaymentRequest(
paymentRequest: inputType.field0.invoice.bolt11, amount: amountSats);
paymentRequest: inputType.field0.invoice.bolt11, amount: amountSats, feePolicy: feePolicy);
final prepareResponse = await sdk.prepareSendPayment(request: request);
final paymentMethod = prepareResponse.paymentMethod;
@@ -177,7 +186,7 @@ class LightningWallet {
return PendingLightningTransaction(
id: paymentMethod.invoiceDetails.paymentHash,
amount: amountSats?.toInt() ??
amount: request.amount?.toInt() ?? amountSats?.toInt() ??
((paymentMethod.invoiceDetails.amountMsat?.toInt() ?? 0) / 1000).round(),
fee: lightningFeeSats.toInt() + (sparkTransferFeeSats?.toInt() ?? 0),
commitOverride: () async {
@@ -203,12 +212,14 @@ class LightningWallet {
amountSats: amountSats!,
payRequest: inputType.field0.payRequest,
validateSuccessActionUrl: optionalValidateSuccessActionUrl,
feePolicy: feePolicy,
);
} else {
request = PrepareLnurlPayRequest(
amountSats: amountSats!,
payRequest: (inputType as InputType_LnurlPay).field0,
validateSuccessActionUrl: optionalValidateSuccessActionUrl,
feePolicy: feePolicy,
);
}
@@ -218,7 +229,7 @@ class LightningWallet {
return PendingLightningTransaction(
id: prepareResponse.invoiceDetails.paymentHash,
amount: ((prepareResponse.invoiceDetails.amountMsat?.toInt() ?? 0) / 1000).round(),
amount: prepareResponse.amountSats.toInt(),
fee: feeSats.toInt(),
commitOverride: () async {
final res =
@@ -227,8 +238,11 @@ class LightningWallet {
},
);
} else if (inputType is InputType_BitcoinAddress) {
final request =
PrepareSendPaymentRequest(paymentRequest: inputType.field0.address, amount: amountSats);
final request = PrepareSendPaymentRequest(
paymentRequest: inputType.field0.address,
amount: amountSats,
feePolicy: feePolicy,
);
final prepareResponse = await sdk.prepareSendPayment(request: request);
final paymentMethod = prepareResponse.paymentMethod;
@@ -355,8 +369,12 @@ class LightningWallet {
return response.txHex;
}
void setEventListener(
{required Function(ElectrumTransactionInfo) onTransactionEvent, required Function onBalanceChangedEvent}) {
void setEventListener({
required Function(ElectrumTransactionInfo) onTransactionEvent,
required Function onBalanceChangedEvent,
required Function(Map<String, ElectrumTransactionInfo>) onCreateDepositTransactionEvent,
required Function(List<ElectrumTransactionInfo>) onUpdateDepositTransactionEvent,
}) {
_eventSubscription = _eventStream?.listen((sdkEvent) {
if (sdkEvent is SdkEvent_PaymentSucceeded) {
onTransactionEvent(_getElectrumTransactionInfoFromPayment(sdkEvent.payment));
@@ -364,6 +382,16 @@ class LightningWallet {
onTransactionEvent(_getElectrumTransactionInfoFromPayment(sdkEvent.payment));
} else if (sdkEvent is SdkEvent_ClaimedDeposits) {
onBalanceChangedEvent();
onUpdateDepositTransactionEvent(
sdkEvent.claimedDeposits.map(_getElectrumTransactionInfoFromDepositInfo).toList());
} else if (sdkEvent is SdkEvent_UnclaimedDeposits) {
final unclaimedDeposits = <String, ElectrumTransactionInfo>{};
for (final deposit in sdkEvent.unclaimedDeposits) {
unclaimedDeposits[deposit.txid] = _getElectrumTransactionInfoFromDepositInfo(deposit);
}
onCreateDepositTransactionEvent(unclaimedDeposits);
}
});
}
@@ -390,4 +418,18 @@ class LightningWallet {
additionalInfo: {"isLightning": true},
);
}
ElectrumTransactionInfo _getElectrumTransactionInfoFromDepositInfo(DepositInfo deposit) {
return ElectrumTransactionInfo(
WalletType.bitcoin,
id: deposit.txid,
amount: deposit.amountSats.toInt(),
direction: TransactionDirection.incoming,
isPending: true,
fee: 0,
date: DateTime.now(),
confirmations: 0,
additionalInfo: {"isLightning": true, "isSparkDeposit": true},
);
}
}
@@ -73,7 +73,8 @@ abstract class LitecoinWalletAddressesBase extends ElectrumWalletAddresses with
return List.from(super.allAddresses)..addAll(mwebAddresses);
}
Future<void> ensureMwebAddressUpToIndexExists(int index) async {
Future<void> ensureMwebAddressUpToIndexExists(int _index) async {
final index = _index + 1;
if (Platform.isLinux || Platform.isMacOS || Platform.isWindows) {
return null;
}
+2 -2
View File
@@ -582,8 +582,8 @@ packages:
dependency: "direct main"
description:
path: "impls/monero.dart"
ref: "411e8a1cdb3f4c2812d83f28c335d2a4eb18bd29"
resolved-ref: "411e8a1cdb3f4c2812d83f28c335d2a4eb18bd29"
ref: bc8d1a0b75b97156d71579581b4cdfe58c777ed2
resolved-ref: bc8d1a0b75b97156d71579581b4cdfe58c777ed2
url: "https://github.com/mrcyjanek/monero_c"
source: git
version: "0.0.0"
+1 -2
View File
@@ -26,7 +26,7 @@ dependencies:
monero:
git:
url: https://github.com/mrcyjanek/monero_c
ref: 411e8a1cdb3f4c2812d83f28c335d2a4eb18bd29
ref: bc8d1a0b75b97156d71579581b4cdfe58c777ed2
path: impls/monero.dart
mutex: ^3.1.0
ledger_flutter_plus: ^1.4.1
@@ -54,7 +54,6 @@ flutter:
# be modified. They are used by the tooling to maintain consistency when
# adding or updating assets for this project.
# To add assets to your plugin package, add an assets section, like this:
# assets:
# - images/a_dot_burr.jpeg
@@ -18,7 +18,7 @@ import 'utils/setup_monero_c.dart';
Future<void> main() async {
group("MoneroWalletService Tests", () {
late MoneroWalletService walletService;
late File moneroCBinary;
File? moneroCBinary;
setUpAll(() async {
await initDb(pathOverride: './test/data/db');
@@ -34,7 +34,7 @@ Future<void> main() async {
tearDownAll(() {
Directory('./test/data').deleteSync(recursive: true);
moneroCBinary.deleteSync();
moneroCBinary!.deleteSync();
});
group("Create wallet", () {
+20 -9
View File
@@ -1,16 +1,27 @@
import 'dart:io';
import 'package:path/path.dart' as p;
File getMoneroCBinary() {
if (Platform.isWindows)
return File(
'../scripts/monero_c/release/monero/x86_64-w64-mingw32_libwallet2_api_c.dll');
if (Platform.isMacOS) return File('../macos/monero_libwallet2_api_c.dylib');
return File('../scripts/monero_c/release/monero/x86_64-linux-gnu_libwallet2_api_c.so');
final baseDir = Directory('../scripts/monero_c/release');
final versionDir =
baseDir.listSync().whereType<Directory>().map((d) => d.path).firstWhere(
(path) => p.basename(path).startsWith('v'),
);
if (Platform.isWindows) {
return File(p.join(
versionDir, 'x86_64-w64-mingw32', 'libmonero_wallet2_api_c.dll'));
}
if (Platform.isMacOS) {
return File(p.join(versionDir, 'macos', 'libmonero_wallet2_api_c.dylib'));
}
return File(
p.join(versionDir, 'x86_64-linux-gnu', 'libmonero_wallet2_api_c.so'));
}
String get moneroCBinaryName {
if (Platform.isWindows)
return "monero_libwallet2_api_c.dll";
if (Platform.isMacOS) return "monero_libwallet2_api_c.dylib";
return "/usr/lib/monero_libwallet2_api_c.so";
if (Platform.isWindows) return "libmonero_wallet2_api_c.dll";
if (Platform.isMacOS) return "libmonero_wallet2_api_c.dylib";
return "/usr/lib/libmonero_wallet2_api_c.so";
}
+2 -2
View File
@@ -502,8 +502,8 @@ packages:
dependency: "direct main"
description:
path: "impls/monero.dart"
ref: "411e8a1cdb3f4c2812d83f28c335d2a4eb18bd29"
resolved-ref: "411e8a1cdb3f4c2812d83f28c335d2a4eb18bd29"
ref: bc8d1a0b75b97156d71579581b4cdfe58c777ed2
resolved-ref: bc8d1a0b75b97156d71579581b4cdfe58c777ed2
url: "https://github.com/mrcyjanek/monero_c"
source: git
version: "0.0.0"
+1 -2
View File
@@ -24,7 +24,7 @@ dependencies:
monero:
git:
url: https://github.com/mrcyjanek/monero_c
ref: 411e8a1cdb3f4c2812d83f28c335d2a4eb18bd29 # monero_c hash
ref: bc8d1a0b75b97156d71579581b4cdfe58c777ed2 # monero_c hash
path: impls/monero.dart
mutex: ^3.1.0
@@ -49,7 +49,6 @@ flutter:
# be modified. They are used by the tooling to maintain consistency when
# adding or updating assets for this project.
# To add assets to your plugin package, add an assets section, like this:
# assets:
# - images/a_dot_burr.jpeg
+2 -2
View File
@@ -507,8 +507,8 @@ packages:
dependency: "direct main"
description:
path: "impls/monero.dart"
ref: "411e8a1cdb3f4c2812d83f28c335d2a4eb18bd29"
resolved-ref: "411e8a1cdb3f4c2812d83f28c335d2a4eb18bd29"
ref: bc8d1a0b75b97156d71579581b4cdfe58c777ed2
resolved-ref: bc8d1a0b75b97156d71579581b4cdfe58c777ed2
url: "https://github.com/mrcyjanek/monero_c"
source: git
version: "0.0.0"
+1 -2
View File
@@ -25,7 +25,7 @@ dependencies:
monero:
git:
url: https://github.com/mrcyjanek/monero_c
ref: 411e8a1cdb3f4c2812d83f28c335d2a4eb18bd29 # monero_c hash
ref: bc8d1a0b75b97156d71579581b4cdfe58c777ed2 # monero_c hash
path: impls/monero.dart
dev_dependencies:
flutter_test:
@@ -38,7 +38,6 @@ dev_dependencies:
dependency_overrides:
watcher: ^1.1.0
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec
+1 -1
View File
@@ -65,7 +65,7 @@ class SymbolsAmountValidator extends TextValidator {
maxLength: 0,
);
static String _pattern() => '^([0-9]+([.\,][0-9]+)?|[.\,][0-9]+)\$';
static String _pattern() => r'^(?:\d+(?:[.\,]\d+)?|[.\,]\d+)$';
}
class DecimalAmountValidator extends TextValidator {
+3 -1
View File
@@ -12,7 +12,8 @@ class LNUrlPayRecord {
final String name;
final String address;
static Future<String?> checkWellKnownUsername(String username, CryptoCurrency currency) async {
static Future<String?> checkWellKnownUsername(String username, CryptoCurrency currency,
{bool allowRethrow = false}) async {
if (![CryptoCurrency.btc, CryptoCurrency.btcln].contains(currency)) return null;
// split the string by the @ symbol:
@@ -40,6 +41,7 @@ class LNUrlPayRecord {
return LNURL.encode(expectedUrl);
}
} catch (e) {
if (allowRethrow) rethrow;
printV("error checking well-known username: $e");
}
return null;
+1
View File
@@ -136,4 +136,5 @@ class PreferencesKey {
static const syncStatusDisplayMode = 'sync_status_display_mode';
static const backgroundImage = 'background_image';
static const mwebAdDismissed = "mweb_ad_dismissed";
static const balanceHideCounter = "balance_hide_counter";
}
+24 -1
View File
@@ -1,5 +1,6 @@
import 'package:cake_wallet/core/auth_service.dart';
import 'package:cake_wallet/di.dart';
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/new-ui/modal_navigator.dart';
import 'package:cake_wallet/new-ui/pages/account_customizer.dart';
import 'package:cake_wallet/new-ui/pages/card_customizer.dart';
@@ -129,7 +130,29 @@ class _NewHomePageState extends State<NewHomePage> {
lightningMode: _lightningMode,
),
),
UnconfirmedBalanceWidget(dashboardViewModel: widget.dashboardViewModel,),
Observer(builder: (_) {
return AnimatedSize(
duration: Duration(milliseconds: 150),
curve: Curves.easeInOutCubic,
child: (widget.dashboardViewModel.shouldShowBalanceHiddenMessage)
? Column(
children: [
SizedBox(
height: 12,
width: double.infinity,
),
Text(
S.of(context).long_press_show_balance,
style: TextStyle(
color:
Theme.of(context).colorScheme.onSurfaceVariant),
)
],
)
: SizedBox(width: double.infinity),
);
}),
UnconfirmedBalanceWidget(dashboardViewModel: widget.dashboardViewModel,),
],
),
Observer(
+7 -4
View File
@@ -691,12 +691,15 @@ class _NewSendPageState extends State<NewSendPage> {
void _handleSend() async {
//TODO refactor this action. code was copied over from old ui. i don't like it.
for(int i=0; i<widget.sendViewModel.outputs.length; i++) {
if(i < _amountControllers.length) {
if(_fiatInputMode) {
for (var i = 0; i < widget.sendViewModel.outputs.length; i++) {
if (i < _amountControllers.length && !widget.sendViewModel.outputs[i].sendAll) {
if (_fiatInputMode) {
widget.sendViewModel.outputs[i].setFiatAmount(_amountControllers[i].text);
} else {
widget.sendViewModel.outputs[i].cryptoAmount = _amountControllers[i].text;
final amount = widget.sendViewModel.amountParsingProxy.getCanonicalCryptoAmount(
_amountControllers[i].text.replaceAll(",", "."),
widget.sendViewModel.selectedCryptoCurrency);
widget.sendViewModel.outputs[i].setCryptoAmount(amount);
}
}
}
@@ -81,10 +81,15 @@ class LightningUsernameBloc extends Bloc<LightningUsernameEvent, LightningUserna
return UsernameError(S.current.already_your_username, isInfo: true);
}
if ((await LNUrlPayRecord.checkWellKnownUsername(
"${username}${usernameSuffix}", CryptoCurrency.btc)) !=
null) {
return UsernameError(S.current.username_not_available);
try {
if ((await LNUrlPayRecord.checkWellKnownUsername(
"${username}${usernameSuffix}", CryptoCurrency.btc,
allowRethrow: true)) !=
null) {
return UsernameError(S.current.username_not_available);
}
} catch (e) {
return UsernameError(S.current.username_check_your_network);
}
return null;
@@ -42,11 +42,11 @@ class _TransactionDetailsModalState extends State<TransactionDetailsModal> {
Widget build(BuildContext context) {
return DraggableScrollableSheet(
expand: false,
initialChildSize: 0.6,
initialChildSize: 0.9,
minChildSize: 0.25,
maxChildSize: 0.9,
snap: true,
snapSizes: const [0.6, 0.9],
snapSizes: const [0.9],
builder: (context, controller) => SafeArea(
bottom: false,
child: Padding(
@@ -3,7 +3,6 @@ import 'package:cake_wallet/src/widgets/cake_image_widget.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_mobx/flutter_mobx.dart';
import 'package:flutter_svg/flutter_svg.dart';
class NewSendAmountInput extends StatefulWidget {
const NewSendAmountInput(
@@ -66,7 +65,7 @@ class _NewSendAmountInputState extends State<NewSendAmountInput> {
keyboardType:
TextInputType.numberWithOptions(signed: false, decimal: true),
inputFormatters: <TextInputFormatter>[
FilteringTextInputFormatter.allow(RegExp(r'^\d*\.?\d*$'))
FilteringTextInputFormatter.allow(RegExp(r'^\d*[.,]?\d*$'))
],
onChanged: state.didChange,
controller: widget.amountController,
+12
View File
@@ -143,6 +143,7 @@ abstract class SettingsStoreBase with Store {
required this.hasEnabledMwebBefore,
required this.mwebNodeUri,
required this.mwebAdDismissed,
required this.balanceHideCounter,
required bool initialEnableAutomaticNodeSwitching,
required String initialBackgroundImage,
TransactionPriority? initialBitcoinTransactionPriority,
@@ -720,6 +721,11 @@ abstract class SettingsStoreBase with Store {
PreferencesKey.decentralizedExchangesPromptDismissed,
decentralizedExchangesPromptDismissed));
reaction(
(_) => balanceHideCounter,
(int balanceHideCounter) => _sharedPreferences.setInt(PreferencesKey.balanceHideCounter, balanceHideCounter)
);
this.nodes.observe((change) {
if (change.newValue != null && change.key != null) {
_saveCurrentNode(change.newValue!, change.key!);
@@ -773,6 +779,9 @@ abstract class SettingsStoreBase with Store {
@observable
BalanceDisplayMode balanceDisplayMode;
@observable
int balanceHideCounter;
@observable
BitcoinAmountDisplayMode displayAmountsInSatoshi;
@@ -1552,6 +1561,8 @@ abstract class SettingsStoreBase with Store {
final mwebAdDismissed =
await sharedPreferences.getBool(PreferencesKey.mwebAdDismissed) ?? false;
final balanceHideCounter = await sharedPreferences.getInt(PreferencesKey.balanceHideCounter) ?? 0;
return SettingsStore(
secureStorage: secureStorage,
@@ -1663,6 +1674,7 @@ abstract class SettingsStoreBase with Store {
shouldShowRepWarning: shouldShowRepWarning,
initialBuiltinTor: builtinTor,
mwebAdDismissed: mwebAdDismissed,
balanceHideCounter: balanceHideCounter,
);
}
+2 -1
View File
@@ -301,7 +301,8 @@ class ExceptionHandler {
"_QueuedFuture.execute (package:universal_ble/src/queue.dart:65)",
"reown_core/relay_client/websocket/websocket_handler.dart",
"Image upload failed due to loss of GPU access",
'transport error',
"transport error",
"SdkError.sparkError(field0: Operator RPC error: Connection error: status: Unavailable, message: \"dns error\", details: []"
];
static Future<void> _addDeviceInfo(File file) async {
@@ -445,6 +445,7 @@ abstract class BalanceViewModelBase with Store {
void switchBalanceValue() {
if (settingsStore.balanceDisplayMode == BalanceDisplayMode.displayableBalance) {
settingsStore.balanceDisplayMode = BalanceDisplayMode.hiddenBalance;
settingsStore.balanceHideCounter++;
} else {
settingsStore.balanceDisplayMode = BalanceDisplayMode.displayableBalance;
}
@@ -632,6 +632,9 @@ abstract class DashboardViewModelBase with Store {
return trade.trade.walletId == wallet.id && isSameChain;
}).toList();
@computed
bool get shouldShowBalanceHiddenMessage => balanceDisplayMode == BalanceDisplayMode.hiddenBalance && appStore.settingsStore.balanceHideCounter < 10;
@computed
List<OrderListItem> get orders =>
ordersStore.orders.where((item) => item.order.walletId == wallet.id).toList();
+29 -6
View File
@@ -113,14 +113,37 @@ else()
set(LIB_TRIPLET "x86_64-linux-gnu")
endif()
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/zcash_lib/target/release/libwarp_api_ffi.so" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" RENAME "libwarp_api_ffi.so"
COMPONENT Runtime)
execute_process(
COMMAND git describe --tags
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/monero_c
OUTPUT_VARIABLE MONERO_C_TAG
OUTPUT_STRIP_TRAILING_WHITESPACE
)
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/monero_c/release/monero/${LIB_TRIPLET}_libwallet2_api_c.so" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" RENAME "monero_libwallet2_api_c.so"
COMPONENT Runtime)
set(MONERO_C_RELEASE_DIR
"${CMAKE_CURRENT_SOURCE_DIR}/../scripts/monero_c/release/${MONERO_C_TAG}/${LIB_TRIPLET}"
)
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/monero_c/release/wownero/${LIB_TRIPLET}_libwallet2_api_c.so" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" RENAME "wownero_libwallet2_api_c.so"
COMPONENT Runtime)
install(
FILES "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/zcash_lib/target/release/libwarp_api_ffi.so"
DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
RENAME "libwarp_api_ffi.so"
COMPONENT Runtime
)
install(
FILES "${MONERO_C_RELEASE_DIR}/libmonero_wallet2_api_c.so"
DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
RENAME "libmonero_wallet2_api_c.so"
COMPONENT Runtime
)
install(
FILES "${MONERO_C_RELEASE_DIR}/libwownero_wallet2_api_c.so"
DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
RENAME "libwownero_wallet2_api_c.so"
COMPONENT Runtime
)
install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}"
COMPONENT Runtime)
+1
View File
@@ -5,3 +5,4 @@
# Xcode-related
**/dgph
**/xcuserdata/
*.dylib
+24 -24
View File
@@ -167,34 +167,34 @@ EXTERNAL SOURCES:
:path: Flutter/ephemeral/.symlinks/plugins/wakelock_plus/macos
SPEC CHECKSUMS:
bitbox_flutter: 16088f5c7febacf894f4d07bbdfb441c9f0757fe
breez_sdk_spark_flutter: 2e864a52e699546aedea3d64d0e0cc88bc0ac595
connectivity_plus: 0a976dfd033b59192912fa3c6c7b54aab5093802
cw_mweb: 7440b12ead811dda972a9918442ea2a458e8742c
device_info_plus: 5401765fde0b8d062a2f8eb65510fb17e77cf07f
devicelocale: 9f0f36ac651cabae2c33f32dcff4f32b61c38225
bitbox_flutter: b3c6d3c4970b134a78a17fddef0ef429cfec2593
breez_sdk_spark_flutter: b7826ff465c65d620a03560c28c384f44c2dc383
connectivity_plus: 4adf20a405e25b42b9c9f87feff8f4b6fde18a4e
cw_mweb: 4746a3b5cc5bd4afe6fadd2481c4f7b239e391d0
device_info_plus: b0fafc687fb901e2af612763340f1b0d4352f8e5
devicelocale: 456a07c045d3113938aa4983065bd8526e2af792
dnssec_proof: d461cac7bd3301eb7447f87936745a0c1ae0a67e
fast_scanner: d31bae07e2653403a69dac99fb710c1722b16a97
file_selector_macos: cc3858c981fe6889f364731200d6232dac1d812d
flutter_inappwebview_macos: bdf207b8f4ebd58e86ae06cd96b147de99a67c9b
flutter_local_authentication: 85674893931e1c9cfa7c9e4f5973cb8c56b018b0
flutter_local_notifications: 4ccab5b7a22835214a6672e3f9c5e8ae207dab36
flutter_secure_storage_macos: d56e2d218c1130b262bef8b4a7d64f88d7f9c9ea
fast_scanner: a4ead8e56f185cd565e25250fdb97fa669ea1d2e
file_selector_macos: 6280b52b459ae6c590af5d78fc35c7267a3c4b31
flutter_inappwebview_macos: c2d68649f9f8f1831bfcd98d73fd6256366d9d1d
flutter_local_authentication: 2f9a2682f498abcc12d7e9729b5007a947170fdc
flutter_local_notifications: 4bf37a31afde695b56091b4ae3e4d9c7a7e6cda0
flutter_secure_storage_macos: 3dacac420d84c4d0dc5e868194ee43c8664ec797
FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24
in_app_review: 866c9b17c87a7b46a395bda43f5d3ca02deb585a
in_app_review: 66e7680752b632d83f4f0e88b34d52ed303fbff4
OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94
package_info_plus: 12f1c5c2cfe8727ca46cbd0b26677728972d9a5b
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
share_plus: 1fa619de8392a4398bfaf176d441853922614e89
shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
sp_scanner: 269d96e0ec3173e69156be7239b95182be3b8303
sqflite_darwin: 5a7236e3b501866c1c9befc6771dfd73ffb8702d
package_info_plus: f0052d280d17aa382b932f399edf32507174e870
path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564
share_plus: 510bf0af1a42cd602274b4629920c9649c52f4cc
shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7
sp_scanner: d9316427b628dd86d6e9e3c5d42ed6b4b410157c
sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0
sqlite3: 73513155ec6979715d3904ef53a8d68892d4032b
sqlite3_flutter_libs: 86f82662868ee26ff3451f73cac9c5fc2a1f57fa
torch_dart: 2e94855e15fcc87bd824e179f1f9c3e0f1e1d302
universal_ble: cf52a7b3fd2e7c14d6d7262e9fdadb72ab6b88a6
url_launcher_macos: c82c93949963e55b228a30115bd219499a6fe404
wakelock_plus: 9d63063ffb7af1c215209769067c57103bde719d
sqlite3_flutter_libs: 83f8e9f5b6554077f1d93119fe20ebaa5f3a9ef1
torch_dart: 7e4f682c34ee0d967a35977102590094a7510c90
universal_ble: ff19787898040d721109c6324472e5dd4bc86adc
url_launcher_macos: 0fba8ddabfc33ce0a9afe7c5fef5aab3d8d2d673
wakelock_plus: 917609be14d812ddd9e9528876538b2263aaa03b
PODFILE CHECKSUM: 65ec1541137fb5b35d00490dec1bb48d4d9586bb
+8 -8
View File
@@ -28,8 +28,8 @@
33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; };
83FF6BF911B29965D3589BE7 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BD06F8F6E3797AC031038136 /* Pods_Runner.framework */; };
9F565D5929954F53009A75FB /* secRandom.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F565D5729954F53009A75FB /* secRandom.swift */; };
CE75FC4A2C147EBA00CCC46E /* wownero_libwallet2_api_c.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = CE75FC492C147EBA00CCC46E /* wownero_libwallet2_api_c.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
CED5DBE42BE59BBF0065028F /* monero_libwallet2_api_c.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = CED5DBE32BE59BBF0065028F /* monero_libwallet2_api_c.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
CE5899C52F71669A008E754F /* libwownero_wallet2_api_c.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = CE5899C32F71669A008E754F /* libwownero_wallet2_api_c.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
CE5899C62F71669A008E754F /* libmonero_wallet2_api_c.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = CE5899C42F71669A008E754F /* libmonero_wallet2_api_c.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -59,8 +59,8 @@
dstPath = "";
dstSubfolderSpec = 10;
files = (
CE75FC4A2C147EBA00CCC46E /* wownero_libwallet2_api_c.dylib in CopyFiles */,
CED5DBE42BE59BBF0065028F /* monero_libwallet2_api_c.dylib in CopyFiles */,
CE5899C52F71669A008E754F /* libwownero_wallet2_api_c.dylib in CopyFiles */,
CE5899C62F71669A008E754F /* libmonero_wallet2_api_c.dylib in CopyFiles */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -90,8 +90,8 @@
9F1E7BFB2BF2D27500C28C9A /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
9F565D5729954F53009A75FB /* secRandom.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = secRandom.swift; path = CakeWallet/secRandom.swift; sourceTree = "<group>"; };
BD06F8F6E3797AC031038136 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
CE75FC492C147EBA00CCC46E /* wownero_libwallet2_api_c.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = wownero_libwallet2_api_c.dylib; sourceTree = "<group>"; };
CED5DBE32BE59BBF0065028F /* monero_libwallet2_api_c.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = monero_libwallet2_api_c.dylib; sourceTree = "<group>"; };
CE5899C32F71669A008E754F /* libwownero_wallet2_api_c.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = libwownero_wallet2_api_c.dylib; sourceTree = "<group>"; };
CE5899C42F71669A008E754F /* libmonero_wallet2_api_c.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = libmonero_wallet2_api_c.dylib; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -120,8 +120,8 @@
33CC10E42044A3C60003C045 = {
isa = PBXGroup;
children = (
CE75FC492C147EBA00CCC46E /* wownero_libwallet2_api_c.dylib */,
CED5DBE32BE59BBF0065028F /* monero_libwallet2_api_c.dylib */,
CE5899C42F71669A008E754F /* libmonero_wallet2_api_c.dylib */,
CE5899C32F71669A008E754F /* libwownero_wallet2_api_c.dylib */,
9F565D5729954F53009A75FB /* secRandom.swift */,
33FAB671232836740065AC1E /* Runner */,
33CEB47122A05771004F2AC0 /* Flutter */,
-1
View File
@@ -1 +0,0 @@
../scripts/monero_c/release/monero/host-apple-darwin_libwallet2_api_c.dylib
-1
View File
@@ -1 +0,0 @@
../scripts/monero_c/release/wownero/host-apple-darwin_libwallet2_api_c.dylib
+1
View File
@@ -595,6 +595,7 @@
"login": "تسجيل الدخول",
"logout": "تسجيل الخروج",
"long_press_edit_address": "اضغط مطولًا لتعديل العنوان",
"long_press_show_balance": "اضغط لفترة طويلة على البطاقة لإظهار التوازن",
"low_fee": "رسوم منخفضة",
"low_fee_alert": "أنت تستخدم حاليًا أولوية منخفضة لرسوم الشبكة. قد يؤدي ذلك إلى فترات انتظار طويلة، أو أسعار مختلفة، أو إلغاء عمليات التداول. نوصي بتعيين رسوم أعلى للحصول على تجربة أفضل.",
"made_easy": "بسهولة",
+1
View File
@@ -595,6 +595,7 @@
"login": "Вход",
"logout": "Изход",
"long_press_edit_address": "Натиснете и задръжте, за да редактирате адреса",
"long_press_show_balance": "Натиснете дълго картата, за да видите баланса",
"low_fee": "Ниска такса",
"low_fee_alert": "В момента използвате нисък приоритет за мрежовата такса. Това може да доведе до дълго изчакване, различни курсове или отменени сделки. Препоръчваме да зададете по‑висока такса за по‑добро изживяване.",
"made_easy": "направено лесно",
+1
View File
@@ -595,6 +595,7 @@
"login": "Přihlásit se",
"logout": "Odhlásit se",
"long_press_edit_address": "Dlouhým stisknutím upravíte adresu",
"long_press_show_balance": "Dlouhým stisknutím karty zobrazíte zůstatek",
"low_fee": "Nízký poplatek",
"low_fee_alert": "Momentálně používáte nízkou prioritu síťového poplatku. To může způsobit dlouhé čekání, odlišné kurzy nebo zrušené obchody. Pro lepší zkušenost doporučujeme nastavit vyšší poplatek.",
"made_easy": "snadno",
+2
View File
@@ -595,6 +595,7 @@
"login": "Anmelden",
"logout": "Abmelden",
"long_press_edit_address": "Lange drücken, um die Adresse zu bearbeiten",
"long_press_show_balance": "Drücken Sie lange auf die Karte, um den Kontostand anzuzeigen",
"low_fee": "Niedrige Gebühr",
"low_fee_alert": "Sie verwenden derzeit eine niedrige Priorität für Netzwerkgebühren. Dies kann zu langen Wartezeiten, abweichenden Kursen oder abgebrochenen Trades führen. Wir empfehlen, für ein besseres Erlebnis eine höhere Gebühr festzulegen.",
"made_easy": "leicht gemacht",
@@ -1270,6 +1271,7 @@
"username": "Benutzername",
"username_available": "Benutzername verfügbar",
"username_character_error": "Benutzernamen dürfen nur Folgendes enthalten",
"username_check_your_network": "Benutzername konnte nicht geprüft werden. Bitte überprüfen Sie Ihre Netzwerkverbindung.",
"username_length_error": "Benutzernamen müssen 6–32 alphanumerische Zeichen enthalten.",
"username_length_error_1_64": "Benutzernamen müssen 1–64 alphanumerische Zeichen enthalten.",
"username_not_available": "Dieser Benutzername ist nicht verfügbar.",
+2
View File
@@ -595,6 +595,7 @@
"login": "Login",
"logout": "Logout",
"long_press_edit_address": "Long press to edit address",
"long_press_show_balance": "Long press card to show balance",
"low_fee": "Low fee",
"low_fee_alert": "You currently are using a low network fee priority. This could cause long waits, different rates, or canceled trades. We recommend setting a higher fee for a better experience.",
"made_easy": "made easy",
@@ -1269,6 +1270,7 @@
"username": "Username",
"username_available": "Username Available",
"username_character_error": "Usernames must only contain",
"username_check_your_network": "Unable to check username. Please check your network connection.",
"username_length_error": "Usernames must contain 6-32 alphanumeric characters.",
"username_length_error_1_64": "Usernames must contain 1-64 alphanumeric characters.",
"username_not_available": "This username is not available.",
+1
View File
@@ -595,6 +595,7 @@
"login": "Iniciar sesión",
"logout": "Cerrar sesión",
"long_press_edit_address": "Mantén pulsado para editar la dirección",
"long_press_show_balance": "Mantenga presionada la tarjeta para mostrar el saldo",
"low_fee": "Comisión baja",
"low_fee_alert": "Actualmente está utilizando una prioridad baja de tarifa de red. Esto podría causar largas esperas, tipos de cambio diferentes u operaciones canceladas. Recomendamos establecer una tarifa más alta para una mejor experiencia.",
"made_easy": "hecho fácil",
+1
View File
@@ -593,6 +593,7 @@
"login": "ورود",
"logout": "خروج",
"long_press_edit_address": "برای ویرایش آدرس، لمس طولانی کنید",
"long_press_show_balance": "برای نشان دادن تعادل، کارت را طولانی فشار دهید",
"low_fee": "کارمزد پایین",
"low_fee_alert": "در حال حاضر از اولویت پایینِ کارمزد شبکه استفاده می‌کنید.\nاین موضوع می‌تواند باعث انتظار طولانی، نرخ‌های متفاوت یا لغو معاملات شود.\nبرای تجربه بهتر، توصیه می‌کنیم کارمزد بالاتری تنظیم کنید.",
"made_easy": "آسان",
+1
View File
@@ -595,6 +595,7 @@
"login": "Connexion",
"logout": "Déconnexion",
"long_press_edit_address": "Appuyez longuement pour modifier l'adresse",
"long_press_show_balance": "Appuyez longuement sur la carte pour afficher le solde",
"low_fee": "Frais réduits",
"low_fee_alert": "Vous utilisez actuellement une priorité de frais réseau faible. Cela pourrait entraîner de longues attentes, des taux différents ou des échanges annulés. Nous vous recommandons de définir des frais plus élevés pour une meilleure expérience.",
"made_easy": "simplifié",
+1
View File
@@ -459,6 +459,7 @@
"login": "Eike hag̃ua",
"logout": "Emboty hag̃ua",
"long_press_edit_address": "Eipoko puku hag̃ua emoambue dirección.",
"long_press_show_balance": "Tarjeta de prensa puku ohechauka haguã equilibrio",
"low_fee": "Jehepyme’ẽ michĩva",
"low_fee_alert": "Koʼág̃a reiporu hína peteĩ prioridad jehepymeʼẽ ñanduti rehegua imbeguéva. Kóva ikatu omoheñói ñehaʼãro puku, tasa iñambuéva térã ñemurã ñembotove. Roñeʼẽporã emoĩ hag̃ua jehepymeʼẽ yvateve hag̃ua reiko porãve hag̃ua.",
"manage_nodes": "Eñangareko nodo-kuérare",
+1
View File
@@ -595,6 +595,7 @@
"login": "Shiga",
"logout": "Fita",
"long_press_edit_address": "Danna na ɗan lokaci don gyara adireshi",
"long_press_show_balance": "Dogon danna katin don nuna ma'auni",
"low_fee": "Ƙananan kuɗi",
"low_fee_alert": "A halin yanzu kuna amfani da ƙaramin fifikon kuɗin hanyar sadarwa. Wannan na iya haifar da dogon jira, farashi daban-daban, ko soke mu’amaloli. Muna ba da shawarar saita kuɗi mafi girma don ƙwarewa mafi kyau.",
"made_easy": "an sauƙaƙe",
+1
View File
@@ -595,6 +595,7 @@
"login": "लॉग इन",
"logout": "लॉग आउट",
"long_press_edit_address": "पता संपादित करने के लिए देर तक दबाएँ",
"long_press_show_balance": "बैलेंस दिखाने के लिए कार्ड को देर तक दबाएं",
"low_fee": "कम शुल्क",
"low_fee_alert": "आप वर्तमान में कम नेटवर्क शुल्क प्राथमिकता का उपयोग कर रहे हैं। इससे लंबे समय तक प्रतीक्षा, अलग-अलग दरें या ट्रेड रद्द होने जैसी समस्याएँ हो सकती हैं। बेहतर अनुभव के लिए हम अधिक शुल्क सेट करने की सलाह देते हैं।",
"made_easy": "आसान बनाया",
+1
View File
@@ -595,6 +595,7 @@
"login": "Prijava",
"logout": "Odjava",
"long_press_edit_address": "Dugo pritisnite za uređivanje adrese",
"long_press_show_balance": "Dugo pritisnite karticu za prikaz stanja",
"low_fee": "Niska naknada",
"low_fee_alert": "Trenutačno koristite nizak prioritet mrežne naknade. To bi moglo uzrokovati duga čekanja, različite tečajeve ili otkazane zamjene. Preporučujemo postavljanje veće naknade za bolje iskustvo.",
"made_easy": "jednostavno",
+1
View File
@@ -595,6 +595,7 @@
"login": "Մուտք",
"logout": "Դուրս գալ",
"long_press_edit_address": "Հասցեն խմբագրելու համար երկար սեղմեք",
"long_press_show_balance": "Երկար սեղմեք քարտը՝ մնացորդը ցույց տալու համար",
"low_fee": "Ցածր վճար",
"low_fee_alert": "Դուք ներկայումս օգտագործում եք ցանցային միջնորդավճարի ցածր առաջնահերթություն։ Սա կարող է հանգեցնել երկար սպասման, տարբեր փոխարժեքների կամ չեղարկված գործարքների։ Ավելի լավ փորձի համար խորհուրդ ենք տալիս սահմանել ավելի բարձր միջնորդավճար։",
"made_easy": "հեշտացված",
+1
View File
@@ -595,6 +595,7 @@
"login": "Masuk",
"logout": "Keluar",
"long_press_edit_address": "Tekan lama untuk mengedit alamat",
"long_press_show_balance": "Tekan lama kartu untuk menunjukkan keseimbangan",
"low_fee": "Biaya rendah",
"low_fee_alert": "Anda saat ini menggunakan prioritas biaya jaringan rendah. Hal ini dapat menyebabkan waktu tunggu yang lama, nilai tukar yang berbeda, atau perdagangan yang dibatalkan. Kami merekomendasikan untuk menetapkan biaya yang lebih tinggi agar pengalaman lebih baik.",
"made_easy": "jadi mudah",
+1
View File
@@ -595,6 +595,7 @@
"login": "Accedi",
"logout": "Disconnetti",
"long_press_edit_address": "Tieni premuto per modificare l'indirizzo",
"long_press_show_balance": "Premi a lungo la carta per mostrare il saldo",
"low_fee": "Commissione bassa",
"low_fee_alert": "Attualmente stai utilizzando una priorità bassa per la commissione di rete. Ciò potrebbe causare lunghe attese, tassi diversi o scambi annullati. Ti consigliamo di impostare una commissione più alta per un'esperienza migliore.",
"made_easy": "reso facile",
+1
View File
@@ -596,6 +596,7 @@
"login": "ログイン",
"logout": "ログアウト",
"long_press_edit_address": "長押ししてアドレスを編集",
"long_press_show_balance": "カードを長押しすると残高が表示されます",
"low_fee": "低手数料",
"low_fee_alert": "現在、ネットワーク手数料の優先度を低く設定しています。これにより、待ち時間が長くなったり、レートが変動したり、取引がキャンセルされたりする可能性があります。より快適にご利用いただくために、手数料を高めに設定することをおすすめします。",
"made_easy": "簡単に",
+1
View File
@@ -595,6 +595,7 @@
"login": "로그인",
"logout": "로그아웃",
"long_press_edit_address": "주소를 편집하려면 길게 누르세요",
"long_press_show_balance": "잔액을 표시하려면 카드를 길게 누르세요.",
"low_fee": "낮은 수수료",
"low_fee_alert": "현재 낮은 네트워크 수수료 우선순위를 사용하고 있습니다. 이로 인해 대기 시간이 길어지거나, 환율이 달라지거나, 거래가 취소될 수 있습니다. 더 나은 사용 경험을 위해 더 높은 수수료로 설정하는 것을 권장합니다.",
"made_easy": "쉽게",
+1
View File
@@ -595,6 +595,7 @@
"login": "လော့ဂ်အင်",
"logout": "အကောင့်မှ ထွက်ရန်",
"long_press_edit_address": "လိပ်စာကို တည်းဖြတ်ရန် အကြာကြီးနှိပ်ပါ",
"long_press_show_balance": "လက်ကျန်ငွေကိုပြသရန် ကတ်ကို အကြာကြီးနှိပ်ပါ။",
"low_fee": "အခကြေးငွေနည်း",
"low_fee_alert": "သင်သည် လက်ရှိတွင် ကွန်ရက်အခကြေးငွေ ဦးစားပေးကို နိမ့်ထားပြီး အသုံးပြုနေပါသည်။ ၎င်းကြောင့် စောင့်ဆိုင်းချိန်ကြာခြင်း၊ နှုန်းထားများကွာခြားခြင်း သို့မဟုတ် အရောင်းအဝယ်များ ပယ်ဖျက်ခံရခြင်းတို့ ဖြစ်နိုင်ပါသည်။ ပိုမိုကောင်းမွန်သော အတွေ့အကြုံအတွက် အခကြေးငွေကို ပိုမြင့်အောင် သတ်မှတ်ရန် အကြံပြုပါသည်။",
"made_easy": "လွယ်ကူစွာ",
+3 -2
View File
@@ -592,6 +592,7 @@
"login": "Aanmelden",
"logout": "Afmelden",
"long_press_edit_address": "Houd ingedrukt om het adres te bewerken",
"long_press_show_balance": "Druk lang op de kaart om het saldo weer te geven",
"low_fee": "Lage vergoeding",
"low_fee_alert": "Je gebruikt momenteel een lage prioriteit voor netwerkkosten. Dit kan lange wachttijden, andere tarieven of geannuleerde transacties veroorzaken. We raden aan een hogere vergoeding in te stellen voor een betere ervaring.",
"made_easy": "gemakkelijk gemaakt",
@@ -1180,8 +1181,8 @@
"trade_state_trading": "Handel",
"trade_state_underpaid": "Te weinig betaald",
"trade_state_unpaid": "Onbetaald",
"transaction": "Transactie",
"trades": "Trades",
"transaction": "Transactie",
"transaction_commited": "Transactie vastgelegd",
"transaction_cost": "Transactiekosten",
"transaction_details_amount": "Bedrag",
@@ -1318,8 +1319,8 @@
"wallet_restoration_store_incorrect_seed_length": "Onjuiste seedlengte",
"wallet_seed": "Wallet seed",
"wallet_seed_legacy": "Legacy wallet seed",
"wallet_store_monero_wallet": "Monero wallet",
"wallet_settings": "Walletinstellingen",
"wallet_store_monero_wallet": "Monero wallet",
"walletConnect": "WalletConnect",
"wallets": "Wallets",
"warning": "Waarschuwing",
+1
View File
@@ -594,6 +594,7 @@
"login": "Zaloguj się",
"logout": "Wyloguj się",
"long_press_edit_address": "Naciśnij i przytrzymaj, aby edytować adres",
"long_press_show_balance": "Naciśnij i przytrzymaj kartę, aby wyświetlić saldo",
"low_fee": "Niska opłata",
"low_fee_alert": "Obecnie używasz niskiego priorytetu opłaty sieciowej. Może to spowodować długi czas oczekiwania, inne kursy lub anulowane transakcje. Zalecamy ustawienie wyższej opłaty, aby zapewnić lepsze wrażenia.",
"made_easy": "łatwe",
+1
View File
@@ -595,6 +595,7 @@
"login": "Entrar",
"logout": "Sair",
"long_press_edit_address": "Pressione e segure para editar o endereço",
"long_press_show_balance": "Pressione e segure o cartão para mostrar o saldo",
"low_fee": "Taxa baixa",
"low_fee_alert": "No momento, você está usando uma prioridade baixa de taxa de rede. Isso pode causar longas esperas, taxas diferentes ou negociações canceladas. Recomendamos definir uma taxa mais alta para uma melhor experiência.",
"made_easy": "feito fácil",
+1
View File
@@ -595,6 +595,7 @@
"login": "Войти",
"logout": "Выйти",
"long_press_edit_address": "Нажмите и удерживайте, чтобы изменить адрес",
"long_press_show_balance": "Длительное нажатие карты, чтобы показать баланс",
"low_fee": "Низкая комиссия",
"low_fee_alert": "В настоящее время вы используете низкий приоритет комиссии сети. Это может привести к длительному ожиданию, изменению курсов или отмене сделок. Мы рекомендуем установить более высокую комиссию для лучшего опыта.",
"made_easy": "это просто",
+1
View File
@@ -595,6 +595,7 @@
"login": "เข้าสู่ระบบ",
"logout": "ออกจากระบบ",
"long_press_edit_address": "กดค้างเพื่อแก้ไขที่อยู่",
"long_press_show_balance": "กดการ์ดค้างไว้เพื่อแสดงยอดเงินคงเหลือ",
"low_fee": "ค่าธรรมเนียมต่ำ",
"low_fee_alert": "ขณะนี้คุณกำลังใช้ค่าธรรมเนียมเครือข่ายที่มีลำดับความสำคัญต่ำ ซึ่งอาจทำให้ต้องรอนาน อัตราที่แตกต่างกัน หรือการเทรดถูกยกเลิก เราแนะนำให้ตั้งค่าธรรมเนียมให้สูงขึ้นเพื่อประสบการณ์ที่ดียิ่งขึ้น",
"made_easy": "ใช้งานง่าย",
+1
View File
@@ -595,6 +595,7 @@
"login": "Mag-login",
"logout": "Mag-logout",
"long_press_edit_address": "Pindutin nang matagal para i-edit ang address",
"long_press_show_balance": "Pindutin nang matagal ang card para ipakita ang balanse",
"low_fee": "Mababang bayarin",
"low_fee_alert": "Kasalukuyan kang gumagamit ng mababang priyoridad ng network fee. Maaari itong magdulot ng mahabang paghihintay, iba't ibang rate, o nakanselang mga trade. Inirerekomenda naming magtakda ng mas mataas na fee para sa mas magandang karanasan.",
"made_easy": "pinadali",
+1
View File
@@ -595,6 +595,7 @@
"login": "Giriş",
"logout": "Çıkış yap",
"long_press_edit_address": "Adresi düzenlemek için uzun basın",
"long_press_show_balance": "Bakiyeyi göstermek için karta uzun basın",
"low_fee": "Düşük ücret",
"low_fee_alert": "Şu anda düşük bir ağ ücreti önceliği kullanıyorsunuz. Bu durum uzun beklemelere, farklı oranlara veya iptal edilen takaslara neden olabilir. Daha iyi bir deneyim için daha yüksek bir ücret belirlemenizi öneririz.",
"made_easy": "kolaylaştırıldı",
+1
View File
@@ -595,6 +595,7 @@
"login": "Вхід",
"logout": "Вийти",
"long_press_edit_address": "Натисніть і утримуйте, щоб редагувати адресу",
"long_press_show_balance": "Утримуйте картку, щоб показати баланс",
"low_fee": "Низька комісія",
"low_fee_alert": "Наразі ви використовуєте низький пріоритет мережевої комісії. Це може призвести до тривалого очікування, іншого курсу або скасування обмінів. Ми рекомендуємо встановити вищу комісію для кращого досвіду.",
"made_easy": "зроблено просто",
+1
View File
@@ -595,6 +595,7 @@
"login": "لاگ اِن",
"logout": "لاگ آؤٹ",
"long_press_edit_address": "ایڈریس میں ترمیم کرنے کے لیے دیر تک دبائیں",
"long_press_show_balance": "بیلنس دکھانے کے لیے کارڈ کو دیر تک دبائیں",
"low_fee": "کم فیس",
"low_fee_alert": "آپ فی الحال کم نیٹ ورک فیس کی ترجیح استعمال کر رہے ہیں۔ اس کی وجہ سے طویل انتظار، مختلف ریٹس، یا ٹریڈز منسوخ ہو سکتے ہیں۔ بہتر تجربے کے لیے ہم زیادہ فیس سیٹ کرنے کی تجویز دیتے ہیں۔",
"made_easy": "آسان بنایا",
+1
View File
@@ -594,6 +594,7 @@
"login": "Đăng nhập",
"logout": "Đăng xuất",
"long_press_edit_address": "Nhấn và giữ để chỉnh sửa địa chỉ",
"long_press_show_balance": "Nhấn và giữ thẻ để hiển thị số dư",
"low_fee": "Phí thấp",
"low_fee_alert": "Bạn hiện đang sử dụng mức ưu tiên phí mạng thấp. Điều này có thể dẫn đến thời gian chờ lâu, tỷ giá khác nhau hoặc giao dịch bị hủy. Chúng tôi khuyến nghị bạn đặt mức phí cao hơn để có trải nghiệm tốt hơn.",
"made_easy": "dễ dàng",
+1
View File
@@ -596,6 +596,7 @@
"login": "Wọlé",
"logout": "Jáde",
"long_press_edit_address": "Tẹ mọ́lẹ̀ láti ṣàtúnṣe àdírẹ́sì",
"long_press_show_balance": "Tẹ kaadi gigun lati ṣafihan iwọntunwọnsi",
"low_fee": "Owó ìnáwó kékeré",
"low_fee_alert": "Lọ́wọ́lọ́wọ́ yìí, ẹ ń lo ìpàtàkì owó ìdúnáwọ́ọ̀kì (network fee) tó kéré. Èyí lè fa ìdúró pípẹ́, oṣùwọ̀n tó yàtọ̀, tàbí kí ìṣòwò kan fagi lé. A dábàá pé k'ẹ́ ṣètò owó ìdúnáwọ́ọ̀kì tó ga díẹ̀ fún ìrírí tó dára jù.",
"made_easy": "ṣe é rọrùn",
+1
View File
@@ -595,6 +595,7 @@
"login": "登录",
"logout": "退出登录",
"long_press_edit_address": "长按以编辑地址",
"long_press_show_balance": "长按卡显示余额",
"low_fee": "低手续费",
"low_fee_alert": "您当前使用较低的网络手续费优先级,这可能导致等待时间较长、汇率变化或交易被取消。我们建议设置更高的手续费,以获得更好的体验。",
"made_easy": "轻松上手",
+21 -3
View File
@@ -1,7 +1,7 @@
#!/bin/bash
source "$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/functions.sh"
# Usage: env USE_DOCKER= ./build_all.sh
# Usage: env USE_DOCKER= ./build_all.sh
set -x -e
@@ -12,15 +12,33 @@ cd "$(dirname "$0")"
for COIN in monero wownero zano;
do
pushd ../monero_c
monero_c_tag=$(git describe --tags)
for target in {x86_64,aarch64}-linux-android armv7a-linux-androideabi
do
if [[ -f "release/${COIN}/${target}_libwallet2_api_c.so" ]];
if [[ -f "release/${monero_c_tag}/${target}/${COIN}_libwallet2_api_c.so" ]];
then
echo "file exist, not building monero_c for ${COIN}/$target.";
else
./build_single.sh ${COIN} $target -j$MAKE_JOB_COUNT
unxz -f ../monero_c/release/${COIN}/${target}_libwallet2_api_c.so.xz
fi
case $target in
x86_64-linux-android)
mkdir -p ../../android/app/src/main/jniLibs/x86_64 || true
cp ../monero_c/release/${monero_c_tag}/${target}/lib${COIN}_wallet2_api_c.so ../../android/app/src/main/jniLibs/x86_64/
;;
armv7a-linux-androideabi)
mkdir -p ../../android/app/src/main/jniLibs/armeabi-v7a || true
cp ../monero_c/release/${monero_c_tag}/${target}/lib${COIN}_wallet2_api_c.so ../../android/app/src/main/jniLibs/armeabi-v7a/
;;
aarch64-linux-android)
mkdir -p ../../android/app/src/main/jniLibs/arm64-v8a || true
cp ../monero_c/release/${monero_c_tag}/${target}/lib${COIN}_wallet2_api_c.so ../../android/app/src/main/jniLibs/arm64-v8a/
;;
*)
echo "Unsupported target: $target"
exit 1;
esac
done
popd
done
+3 -11
View File
@@ -1,5 +1,5 @@
#!/bin/sh
source "$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/functions.sh"
source "$(cd "$(dirname "$0")/.." && pwd)/functions.sh"
. ./config.sh
# ./install_missing_headers.sh
@@ -19,16 +19,8 @@ for COIN in monero wownero zano;
do
pushd ../monero_c
./build_single.sh ${COIN} aarch64-apple-ios -j$MAKE_JOB_COUNT
./build_single.sh ${COIN} aarch64-apple-iossimulator -j$MAKE_JOB_COUNT
./build_single.sh ${COIN} aarch64-apple-ios-simulator -j$MAKE_JOB_COUNT
popd
done
unxz -fk ../monero_c/release/monero/aarch64-apple-ios_libwallet2_api_c.dylib.xz
unxz -fk ../monero_c/release/wownero/aarch64-apple-ios_libwallet2_api_c.dylib.xz
unxz -fk ../monero_c/release/zano/aarch64-apple-ios_libwallet2_api_c.dylib.xz
unxz -fk ../monero_c/release/monero/aarch64-apple-iossimulator_libwallet2_api_c.dylib.xz
unxz -fk ../monero_c/release/wownero/aarch64-apple-iossimulator_libwallet2_api_c.dylib.xz
unxz -fk ../monero_c/release/zano/aarch64-apple-iossimulator_libwallet2_api_c.dylib.xz
./gen_framework.sh
./gen_framework.sh
+6 -5
View File
@@ -2,7 +2,8 @@
set -e
IOS_DIR="$(pwd)/../../ios"
DYLIB_PATH="$(pwd)/../../scripts/monero_c/release"
monero_c_tag=$(cd $(pwd)/../../scripts/monero_c/; git describe --tags)
DYLIB_PATH="$(pwd)/../../scripts/monero_c/release/${monero_c_tag}/"
TMP_DIR="${IOS_DIR}/tmp"
rm -rf "${IOS_DIR:?}/MoneroWallet.xcframework" "${IOS_DIR:?}/WowneroWallet.xcframework" "${IOS_DIR:?}/ZanoWallet.xcframework"
@@ -16,7 +17,7 @@ write_info_plist() {
target="$3"
plist_path="${framework_bundle}/Info.plist"
if [[ "x$target" = "xiossimulator" ]]; then
if [[ "x$target" = "xios-simulator" ]]; then
platform="iPhoneSimulator"
dtplatformname="iphonesimulator"
dtsdkname="iphonesimulator17.4"
@@ -97,11 +98,11 @@ create_framework() {
echo "Creating ${framework_name}.framework for target ${target} in ${out_dir}..."
framework_bundle="${out_dir}/${framework_name}.framework"
rm -rf "$framework_bundle"
mkdir -p "$framework_bundle"
input_dylib="${DYLIB_PATH}/${wallet}/aarch64-apple-${target}_libwallet2_api_c.dylib"
input_dylib="${DYLIB_PATH}/aarch64-apple-${target}/lib${wallet}_wallet2_api_c.dylib"
if [[ ! -f "$input_dylib" ]]; then
echo "Error: Input dylib not found: $input_dylib"
exit 1
@@ -144,7 +145,7 @@ for i in "${!wallets[@]}"; do
mkdir -p "$device_out" "$simulator_out"
create_framework "$wallet" "$framework_name" "ios" "$device_out"
create_framework "$wallet" "$framework_name" "iossimulator" "$simulator_out"
create_framework "$wallet" "$framework_name" "ios-simulator" "$simulator_out"
device_framework="${device_out}/${framework_name}.framework"
simulator_framework="${simulator_out}/${framework_name}.framework"
+3 -9
View File
@@ -16,13 +16,7 @@ do
else
target="x86_64-linux-gnu"
fi
if [[ -f "release/${COIN}/${target}_libwallet2_api_c.so" ]];
then
echo "file exist, not building monero_c for ${COIN}/$target.";
else
./build_single.sh ${COIN} $target -j$MAKE_JOB_COUNT
unxz -f ../monero_c/release/${COIN}/${target}_libwallet2_api_c.so.xz
fi
./build_single.sh ${COIN} $target -j$MAKE_JOB_COUNT
popd
done
done
+18 -21
View File
@@ -2,14 +2,14 @@
set -x -e
cd "$(dirname "$0")"
../prepare_moneroc.sh
NPROC="-j$(sysctl -n hw.logicalcpu)"
MONERO_LIBS=""
WOWNERO_LIBS=""
MONEROC_RELEASE_DIR="../monero_c/release/monero"
WOWNEROC_RELEASE_DIR="../monero_c/release/wownero"
monero_c_tag=$(cd ../monero_c/; git describe --tags)
MONEROC_RELEASE_DIR="../monero_c/release/${monero_c_tag}"
../prepare_moneroc.sh
# NOTE: -j1 is intentional. Otherwise you will run into weird behaviour on macos
if [[ ! "x$USE_DOCKER" == "x" ]];
@@ -22,29 +22,26 @@ then
popd
done
else
ARCHS=(x86_64 arm64)
ARCHS=(x86_64 arm64)
for COIN in monero wownero;
do
MONERO_LIBS=""
WOWNERO_LIBS=""
for ARCH in "${ARCHS[@]}";
do
if [[ "$ARCH" == "arm64" ]]; then
HOST="aarch64-apple-darwin"
else
HOST="x86_64-apple-darwin"
fi
MONERO_LIBS="$MONERO_LIBS -arch ${ARCH} ${MONEROC_RELEASE_DIR}/${HOST}_libwallet2_api_c.dylib"
WOWNERO_LIBS="$WOWNERO_LIBS -arch ${ARCH} ${WOWNEROC_RELEASE_DIR}/${HOST}_libwallet2_api_c.dylib"
pushd ../monero_c
for ARCH in "${ARCHS[@]}";
do
if [[ "$ARCH" == "arm64" ]]; then
HOST="aarch64-apple-darwin"
else
HOST="x86_64-apple-darwin"
fi
MONERO_LIBS="$MONERO_LIBS -arch ${ARCH} ${MONEROC_RELEASE_DIR}/${HOST}/libmonero_wallet2_api_c.dylib"
WOWNERO_LIBS="$WOWNERO_LIBS -arch ${ARCH} ${MONEROC_RELEASE_DIR}/${HOST}/libwownero_wallet2_api_c.dylib"
pushd ../monero_c
./build_single.sh ${COIN} ${HOST} -j$MAKE_JOB_COUNT
unxz -f ./release/${COIN}/${HOST}_libwallet2_api_c.dylib.xz
popd
done
popd
done
done
fi
lipo -create ${MONERO_LIBS} -output "${MONEROC_RELEASE_DIR}/host-apple-darwin_libwallet2_api_c.dylib"
lipo -create ${WOWNERO_LIBS} -output "${WOWNEROC_RELEASE_DIR}/host-apple-darwin_libwallet2_api_c.dylib"
lipo -create ${MONERO_LIBS} -output "${MONEROC_RELEASE_DIR}/../../../../macos/libmonero_wallet2_api_c.dylib"
lipo -create ${WOWNERO_LIBS} -output "${MONEROC_RELEASE_DIR}/../../../../macos/libwownero_wallet2_api_c.dylib"
+7 -8
View File
@@ -9,18 +9,17 @@ then
rm -rf monero_c
git clone https://github.com/mrcyjanek/monero_c --branch master monero_c
cd monero_c
# NOTE: Make sure to update monero_c prebuilds link in workflow files
# https://github.com/MrCyjaneK/monero_c/releases/download/v0.18.4.0-RC9/release-bundle.zip
git checkout 411e8a1cdb3f4c2812d83f28c335d2a4eb18bd29
git reset --hard
git submodule update --init --force --recursive
./apply_patches.sh monero
./apply_patches.sh wownero
./apply_patches.sh zano
else
cd monero_c
fi
# NOTE: Make sure to update monero_c prebuilds link in workflow files
# https://github.com/MrCyjaneK/monero_c/releases/download/v0.18.4.6-RC1/release-bundle.zip
git fetch -a
git checkout bc8d1a0b75b97156d71579581b4cdfe58c777ed2
git reset --hard
git submodule update --init --force --recursive
for coin in monero wownero zano;
do
if [[ ! -f "$coin/.patch-applied" ]];
+1 -3
View File
@@ -20,13 +20,11 @@ final List<String> triplets = [
"x86_64-w64-mingw32",
// "x86_64-apple-darwin11", // Intel macbooks (contrib) - not used by cake
// "aarch64-apple-darwin11", // apple silicon macbooks (contrib) - not used by cake
// "host-apple-darwin", // not available on CI (yet)
// "x86_64-host-apple-darwin", // not available on CI (yet)
"aarch64-apple-darwin", // apple silicon macbooks
"x86_64-apple-darwin", // intel macbooks
"aarch64-host-apple-darwin", // apple silicon macbooks (local builds)
"aarch64-apple-ios",
"aarch64-apple-iossimulator",
"aarch64-apple-ios-simulator",
];
Future<void> main() async {