Merge remote-tracking branch 'origin/monerodart_testing' into monero_merge

# Conflicts:
#	.gitignore
#	crypto_plugins/flutter_libmonero
#	lib/pages/add_wallet_views/add_wallet_view/add_wallet_view.dart
#	lib/pages/add_wallet_views/restore_wallet_view/restore_options_view/restore_options_view.dart
#	lib/pages_desktop_specific/settings/settings_menu/nodes_settings.dart
#	lib/utilities/constants.dart
#	lib/wallets/crypto_currency/coins/monero.dart
#	lib/wallets/wallet/impl/monero_wallet.dart
#	lib/wallets/wallet/impl/wownero_wallet.dart
#	scripts/app_config/templates/pubspec.template
#	scripts/linux/build_all.sh
#	scripts/windows/build_all.sh
This commit is contained in:
julian 2024-05-27 10:41:50 -06:00
commit c87564e1cd
27 changed files with 288 additions and 162 deletions

11
.gitignore vendored
View file

@ -96,3 +96,14 @@ pubspec.yaml
/windows/runner/main.cpp /windows/runner/main.cpp
/windows/CMakeLists.txt /windows/CMakeLists.txt
/windows/runner/resources/app_icon.ico /windows/runner/resources/app_icon.ico
# FVM Version Cache
.fvm/
android/app/src/main/jniLibs/arm64-v8a/libwownero_wallet2_api_c.so
android/app/src/main/jniLibs/arm64-v8a/libmonero_wallet2_api_c.so
android/app/src/main/jniLibs/armeabi-v7a/libmonero_wallet2_api_c.so
android/app/src/main/jniLibs/armeabi-v7a/libwownero_wallet2_api_c.so
android/app/src/main/jniLibs/x86_64/libmonero_wallet2_api_c.so
android/app/src/main/jniLibs/x86_64/libwownero_wallet2_api_c.so
macos/monero_wallet2_api_c.dylib
macos/wownero_wallet2_api_c.dylib

View file

@ -53,7 +53,7 @@ sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-
### Build dependencies ### Build dependencies
Install basic dependencies Install basic dependencies
``` ```
sudo apt-get install libssl-dev curl unzip automake build-essential file pkg-config git python libtool libtinfo5 cmake libgit2-dev clang libncurses5-dev libncursesw5-dev zlib1g-dev llvm python3-distutils sudo apt-get install libssl-dev curl unzip automake build-essential file pkg-config git python libtool libtinfo5 cmake libgit2-dev clang libncurses5-dev libncursesw5-dev zlib1g-dev llvm python3-distutils g++ gcc gperf
``` ```
Install [Rust](https://www.rust-lang.org/tools/install) with command: Install [Rust](https://www.rust-lang.org/tools/install) with command:
@ -180,7 +180,7 @@ Download and install [Homebrew](https://brew.sh/). The following command can in
After installing Homebrew, install the following packages: After installing Homebrew, install the following packages:
``` ```
brew install autoconf automake boost berkeley-db ca-certificates cbindgen cmake cmake cocoapods curl git libssh2 make openssl@1.1 openssl@3 perl pkg-config rustup-init sodium unbound unzip xz zmq brew install autoconf automake boost berkeley-db ca-certificates cbindgen cmake cocoapods curl git libssh2 libsodium make openssl@1.1 openssl@3 perl pkg-config rustup-init unbound unzip xz zmq
``` ```
The following brew formula *may* be needed: The following brew formula *may* be needed:

View file

@ -221,12 +221,8 @@ void main(List<String> args) async {
} }
} }
if (!Platform.isWindows) { monero.onStartup();
monero.onStartup(); wownero.onStartup();
}
if (!Platform.isLinux && !Platform.isWindows) {
wownero.onStartup();
}
// SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, // SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual,
// overlays: [SystemUiOverlay.bottom]); // overlays: [SystemUiOverlay.bottom]);

View file

@ -132,11 +132,6 @@ class _AddWalletViewState extends ConsumerState<AddWalletView> {
_searchFieldController = TextEditingController(); _searchFieldController = TextEditingController();
_searchFocusNode = FocusNode(); _searchFocusNode = FocusNode();
// _coinsTestnet.remove(Coin.firoTestNet); // _coinsTestnet.remove(Coin.firoTestNet);
if (Platform.isWindows) {
_coins.removeWhere((e) => e is Monero || e is Wownero);
} else if (Platform.isLinux) {
_coins.removeWhere((e) => e is Wownero);
}
if (Util.isDesktop && !kDebugMode) { if (Util.isDesktop && !kDebugMode) {
_coins.removeWhere((e) => e is BitcoinFrost); _coins.removeWhere((e) => e is BitcoinFrost);

View file

@ -219,7 +219,9 @@ class _RestoreOptionsViewState extends ConsumerState<RestoreOptionsView> {
SizedBox( SizedBox(
height: isDesktop ? 40 : 24, height: isDesktop ? 40 : 24,
), ),
if (coin is Monero || if ((coin is Monero &&
ref.watch(mnemonicWordCountStateProvider.state).state ==
25) ||
coin is Epiccash || coin is Epiccash ||
(coin is Wownero && (coin is Wownero &&
ref.watch(mnemonicWordCountStateProvider.state).state == ref.watch(mnemonicWordCountStateProvider.state).state ==
@ -235,7 +237,9 @@ class _RestoreOptionsViewState extends ConsumerState<RestoreOptionsView> {
: STextStyles.smallMed12(context), : STextStyles.smallMed12(context),
textAlign: TextAlign.left, textAlign: TextAlign.left,
), ),
if (coin is Monero || if ((coin is Monero &&
ref.watch(mnemonicWordCountStateProvider.state).state ==
25) ||
coin is Epiccash || coin is Epiccash ||
(coin is Wownero && (coin is Wownero &&
ref.watch(mnemonicWordCountStateProvider.state).state == ref.watch(mnemonicWordCountStateProvider.state).state ==
@ -243,7 +247,9 @@ class _RestoreOptionsViewState extends ConsumerState<RestoreOptionsView> {
SizedBox( SizedBox(
height: isDesktop ? 16 : 8, height: isDesktop ? 16 : 8,
), ),
if (coin is Monero || if ((coin is Monero &&
ref.watch(mnemonicWordCountStateProvider.state).state ==
25) ||
coin is Epiccash || coin is Epiccash ||
(coin is Wownero && (coin is Wownero &&
ref.watch(mnemonicWordCountStateProvider.state).state == ref.watch(mnemonicWordCountStateProvider.state).state ==
@ -253,7 +259,8 @@ class _RestoreOptionsViewState extends ConsumerState<RestoreOptionsView> {
onTap: chooseDate, onTap: chooseDate,
controller: _dateController, controller: _dateController,
), ),
if (coin is Monero || if ((coin is Monero &&
ref.watch(mnemonicWordCountStateProvider.state).state == 25) ||
coin is Epiccash || coin is Epiccash ||
(coin is Wownero && (coin is Wownero &&
ref.watch(mnemonicWordCountStateProvider.state).state == ref.watch(mnemonicWordCountStateProvider.state).state ==
@ -264,7 +271,9 @@ class _RestoreOptionsViewState extends ConsumerState<RestoreOptionsView> {
onTap: chooseDesktopDate, onTap: chooseDesktopDate,
controller: _dateController, controller: _dateController,
), ),
if (coin is Monero || if ((coin is Monero &&
ref.watch(mnemonicWordCountStateProvider.state).state ==
25) ||
coin is Epiccash || coin is Epiccash ||
(coin is Wownero && (coin is Wownero &&
ref.watch(mnemonicWordCountStateProvider.state).state == ref.watch(mnemonicWordCountStateProvider.state).state ==
@ -272,7 +281,9 @@ class _RestoreOptionsViewState extends ConsumerState<RestoreOptionsView> {
const SizedBox( const SizedBox(
height: 8, height: 8,
), ),
if (coin is Monero || if ((coin is Monero &&
ref.watch(mnemonicWordCountStateProvider.state).state ==
25) ||
coin is Epiccash || coin is Epiccash ||
(coin is Wownero && (coin is Wownero &&
ref.watch(mnemonicWordCountStateProvider.state).state == ref.watch(mnemonicWordCountStateProvider.state).state ==
@ -293,7 +304,9 @@ class _RestoreOptionsViewState extends ConsumerState<RestoreOptionsView> {
), ),
), ),
), ),
if (coin is Monero || if ((coin is Monero &&
ref.watch(mnemonicWordCountStateProvider.state).state ==
25) ||
coin is Epiccash || coin is Epiccash ||
(coin is Wownero && (coin is Wownero &&
ref.watch(mnemonicWordCountStateProvider.state).state == ref.watch(mnemonicWordCountStateProvider.state).state ==

View file

@ -70,13 +70,6 @@ class _NodesSettings extends ConsumerState<NodesSettings> {
_coins.removeWhere( _coins.removeWhere(
(e) => e is Firo && e.network == CryptoCurrencyNetwork.test, (e) => e is Firo && e.network == CryptoCurrencyNetwork.test,
); );
if (Platform.isWindows) {
_coins.removeWhere(
(e) => e is Monero && e is Wownero,
);
} else if (Platform.isLinux) {
_coins.removeWhere((e) => e is Wownero);
}
searchNodeController = TextEditingController(); searchNodeController = TextEditingController();
searchNodeFocusNode = FocusNode(); searchNodeFocusNode = FocusNode();

View file

@ -1,4 +1,6 @@
import 'package:cw_monero/api/wallet.dart' as monero_wallet; import 'package:cw_monero/api/wallet.dart' as monero_wallet;
import 'package:monero/monero.dart' as monero;
import '../../../models/node_model.dart'; import '../../../models/node_model.dart';
import '../../../utilities/default_nodes.dart'; import '../../../utilities/default_nodes.dart';
import '../../../utilities/enums/derive_path_type_enum.dart'; import '../../../utilities/enums/derive_path_type_enum.dart';
@ -44,7 +46,7 @@ class Monero extends CryptonoteCurrency {
@override @override
bool validateAddress(String address) { bool validateAddress(String address) {
return monero_wallet.validateAddress(address); return monero.Wallet_addressValid(address, 0);
} }
@override @override

View file

@ -44,7 +44,7 @@ class Wownero extends CryptonoteCurrency {
@override @override
bool validateAddress(String address) { bool validateAddress(String address) {
return wownero_wallet.validateAddress(address); return wownero_wallet.addressValid(address);
} }
@override @override

View file

@ -1,4 +1,5 @@
import 'dart:async'; import 'dart:async';
import 'dart:io';
import 'dart:math'; import 'dart:math';
import 'package:cw_core/monero_transaction_priority.dart'; import 'package:cw_core/monero_transaction_priority.dart';
@ -18,6 +19,8 @@ import 'package:flutter_libmonero/core/wallet_creation_service.dart';
import 'package:flutter_libmonero/monero/monero.dart' as xmr_dart; import 'package:flutter_libmonero/monero/monero.dart' as xmr_dart;
import 'package:flutter_libmonero/view_model/send/output.dart' as monero_output; import 'package:flutter_libmonero/view_model/send/output.dart' as monero_output;
import 'package:isar/isar.dart'; import 'package:isar/isar.dart';
import 'package:tuple/tuple.dart';
import '../../../db/hive/db.dart'; import '../../../db/hive/db.dart';
import '../../../models/isar/models/blockchain_data/address.dart'; import '../../../models/isar/models/blockchain_data/address.dart';
import '../../../models/isar/models/blockchain_data/transaction.dart'; import '../../../models/isar/models/blockchain_data/transaction.dart';
@ -30,14 +33,44 @@ import '../../models/tx_data.dart';
import '../intermediate/cryptonote_wallet.dart'; import '../intermediate/cryptonote_wallet.dart';
import '../wallet.dart'; import '../wallet.dart';
import '../wallet_mixin_interfaces/cw_based_interface.dart'; import '../wallet_mixin_interfaces/cw_based_interface.dart';
import 'package:tuple/tuple.dart';
class MoneroWallet extends CryptonoteWallet with CwBasedInterface { class MoneroWallet extends CryptonoteWallet with CwBasedInterface {
MoneroWallet(CryptoCurrencyNetwork network) : super(Monero(network)); MoneroWallet(CryptoCurrencyNetwork network) : super(Monero(network)) {
final bus = GlobalEventBus.instance;
// Listen for tor status changes.
_torStatusListener = bus.on<TorConnectionStatusChangedEvent>().listen(
(event) async {
switch (event.newStatus) {
case TorConnectionStatus.connecting:
if (!_torConnectingLock.isLocked) {
await _torConnectingLock.acquire();
}
_requireMutex = true;
break;
case TorConnectionStatus.connected:
case TorConnectionStatus.disconnected:
if (_torConnectingLock.isLocked) {
_torConnectingLock.release();
}
_requireMutex = false;
break;
}
},
);
// Listen for tor preference changes.
_torPreferenceListener = bus.on<TorPreferenceChangedEvent>().listen(
(event) async {
await updateNode();
},
);
}
@override @override
Address addressFor({required int index, int account = 0}) { Address addressFor({required int index, int account = 0}) {
String address = (CwBasedInterface.cwWalletBase as MoneroWalletBase) final String address = (CwBasedInterface.cwWalletBase as MoneroWalletBase)
.getTransactionAddress(account, index); .getTransactionAddress(account, index);
final newReceivingAddress = Address( final newReceivingAddress = Address(
@ -153,13 +186,35 @@ class MoneroWallet extends CryptonoteWallet with CwBasedInterface {
final node = getCurrentNode(); final node = getCurrentNode();
final host = Uri.parse(node.host).host; final host = Uri.parse(node.host).host;
await CwBasedInterface.cwWalletBase?.connectToNode( ({InternetAddress host, int port})? proxy;
node: Node( if (prefs.useTor) {
uri: "$host:${node.port}", proxy = TorService.sharedInstance.getProxyInfo();
type: WalletType.monero, }
trusted: node.trusted ?? false, if (_requireMutex) {
), await _torConnectingLock.protect(() async {
); await CwBasedInterface.cwWalletBase?.connectToNode(
node: Node(
uri: "$host:${node.port}",
type: WalletType.monero,
trusted: node.trusted ?? false,
),
socksProxyAddress:
proxy == null ? null : "${proxy.host.address}:${proxy.port}",
);
});
} else {
await CwBasedInterface.cwWalletBase?.connectToNode(
node: Node(
uri: "$host:${node.port}",
type: WalletType.monero,
trusted: node.trusted ?? false,
),
socksProxyAddress:
proxy == null ? null : "${proxy.host.address}:${proxy.port}",
);
}
return;
} }
@override @override
@ -379,7 +434,7 @@ class MoneroWallet extends CryptonoteWallet with CwBasedInterface {
// clear blockchain info // clear blockchain info
await mainDB.deleteWalletBlockchainData(walletId); await mainDB.deleteWalletBlockchainData(walletId);
var restoreHeight = final restoreHeight =
CwBasedInterface.cwWalletBase?.walletInfo.restoreHeight; CwBasedInterface.cwWalletBase?.walletInfo.restoreHeight;
highestPercentCached = 0; highestPercentCached = 0;
await CwBasedInterface.cwWalletBase?.rescan(height: restoreHeight ?? 0); await CwBasedInterface.cwWalletBase?.rescan(height: restoreHeight ?? 0);
@ -392,7 +447,7 @@ class MoneroWallet extends CryptonoteWallet with CwBasedInterface {
final mnemonic = await getMnemonic(); final mnemonic = await getMnemonic();
final seedLength = mnemonic.trim().split(" ").length; final seedLength = mnemonic.trim().split(" ").length;
if (seedLength != 25) { if (seedLength != 25 && seedLength != 16) {
throw Exception("Invalid monero mnemonic length found: $seedLength"); throw Exception("Invalid monero mnemonic length found: $seedLength");
} }
@ -408,7 +463,7 @@ class MoneroWallet extends CryptonoteWallet with CwBasedInterface {
.createMoneroWalletService(DB.instance.moneroWalletInfoBox); .createMoneroWalletService(DB.instance.moneroWalletInfoBox);
WalletInfo walletInfo; WalletInfo walletInfo;
WalletCredentials credentials; WalletCredentials credentials;
String name = walletId; final String name = walletId;
final dirPath = final dirPath =
await pathForWalletDir(name: name, type: WalletType.monero); await pathForWalletDir(name: name, type: WalletType.monero);
final path = await pathForWallet(name: name, type: WalletType.monero); final path = await pathForWallet(name: name, type: WalletType.monero);
@ -510,12 +565,12 @@ class MoneroWallet extends CryptonoteWallet with CwBasedInterface {
isSendAll = true; isSendAll = true;
} }
List<monero_output.Output> outputs = []; final List<monero_output.Output> outputs = [];
for (final recipient in txData.recipients!) { for (final recipient in txData.recipients!) {
final output = monero_output.Output(CwBasedInterface.cwWalletBase!); final output = monero_output.Output(CwBasedInterface.cwWalletBase!);
output.address = recipient.address; output.address = recipient.address;
output.sendAll = isSendAll; output.sendAll = isSendAll;
String amountToSend = recipient.amount.decimal.toString(); final String amountToSend = recipient.amount.decimal.toString();
output.setCryptoAmount(amountToSend); output.setCryptoAmount(amountToSend);
outputs.add(output); outputs.add(output);
} }
@ -535,7 +590,7 @@ class MoneroWallet extends CryptonoteWallet with CwBasedInterface {
level: LogLevel.Warning); level: LogLevel.Warning);
} }
PendingMoneroTransaction pendingMoneroTransaction = final PendingMoneroTransaction pendingMoneroTransaction =
await (awaitPendingTransaction!) as PendingMoneroTransaction; await (awaitPendingTransaction!) as PendingMoneroTransaction;
final realFee = Amount.fromDecimal( final realFee = Amount.fromDecimal(
Decimal.parse(pendingMoneroTransaction.feeFormatted), Decimal.parse(pendingMoneroTransaction.feeFormatted),
@ -617,7 +672,7 @@ class MoneroWallet extends CryptonoteWallet with CwBasedInterface {
?.entries; ?.entries;
if (balanceEntries != null) { if (balanceEntries != null) {
int bal = 0; int bal = 0;
for (var element in balanceEntries) { for (final element in balanceEntries) {
bal = bal + element.value.fullBalance; bal = bal + element.value.fullBalance;
} }
return Amount( return Amount(
@ -630,7 +685,7 @@ class MoneroWallet extends CryptonoteWallet with CwBasedInterface {
.transactionHistory! .transactionHistory!
.transactions; .transactions;
int transactionBalance = 0; int transactionBalance = 0;
for (var tx in transactions!.entries) { for (final tx in transactions!.entries) {
if (tx.value.direction == TransactionDirection.incoming) { if (tx.value.direction == TransactionDirection.incoming) {
transactionBalance += tx.value.amount!; transactionBalance += tx.value.amount!;
} else { } else {
@ -647,4 +702,12 @@ class MoneroWallet extends CryptonoteWallet with CwBasedInterface {
return info.cachedBalance.total; return info.cachedBalance.total;
} }
} }
// ============== Private ====================================================
StreamSubscription<TorConnectionStatusChangedEvent>? _torStatusListener;
StreamSubscription<TorPreferenceChangedEvent>? _torPreferenceListener;
final Mutex _torConnectingLock = Mutex();
bool _requireMutex = false;
} }

View file

@ -1,4 +1,5 @@
import 'dart:async'; import 'dart:async';
import 'dart:io';
import 'dart:math'; import 'dart:math';
import 'package:cw_core/monero_transaction_priority.dart'; import 'package:cw_core/monero_transaction_priority.dart';
@ -11,7 +12,6 @@ import 'package:cw_core/wallet_credentials.dart';
import 'package:cw_core/wallet_info.dart'; import 'package:cw_core/wallet_info.dart';
import 'package:cw_core/wallet_type.dart'; import 'package:cw_core/wallet_type.dart';
import 'package:cw_monero/api/exceptions/creation_transaction_exception.dart'; import 'package:cw_monero/api/exceptions/creation_transaction_exception.dart';
import 'package:cw_wownero/api/wallet.dart';
import 'package:cw_wownero/pending_wownero_transaction.dart'; import 'package:cw_wownero/pending_wownero_transaction.dart';
import 'package:cw_wownero/wownero_wallet.dart'; import 'package:cw_wownero/wownero_wallet.dart';
import 'package:decimal/decimal.dart'; import 'package:decimal/decimal.dart';
@ -23,6 +23,8 @@ import 'package:isar/isar.dart';
import '../../../db/hive/db.dart'; import '../../../db/hive/db.dart';
import '../../../models/isar/models/blockchain_data/address.dart'; import '../../../models/isar/models/blockchain_data/address.dart';
import '../../../models/isar/models/blockchain_data/transaction.dart'; import '../../../models/isar/models/blockchain_data/transaction.dart';
import '../../../services/event_bus/events/global/tor_connection_status_changed_event.dart';
import '../../../services/event_bus/global_event_bus.dart';
import '../../../utilities/amount/amount.dart'; import '../../../utilities/amount/amount.dart';
import '../../../utilities/enums/fee_rate_type_enum.dart'; import '../../../utilities/enums/fee_rate_type_enum.dart';
import '../../../utilities/logger.dart'; import '../../../utilities/logger.dart';
@ -35,11 +37,42 @@ import '../wallet_mixin_interfaces/cw_based_interface.dart';
import 'package:tuple/tuple.dart'; import 'package:tuple/tuple.dart';
class WowneroWallet extends CryptonoteWallet with CwBasedInterface { class WowneroWallet extends CryptonoteWallet with CwBasedInterface {
WowneroWallet(CryptoCurrencyNetwork network) : super(Wownero(network)); WowneroWallet(CryptoCurrencyNetwork network) : super(Wownero(network)) {
final bus = GlobalEventBus.instance;
// Listen for tor status changes.
_torStatusListener = bus.on<TorConnectionStatusChangedEvent>().listen(
(event) async {
switch (event.newStatus) {
case TorConnectionStatus.connecting:
if (!_torConnectingLock.isLocked) {
await _torConnectingLock.acquire();
}
_requireMutex = true;
break;
case TorConnectionStatus.connected:
case TorConnectionStatus.disconnected:
if (_torConnectingLock.isLocked) {
_torConnectingLock.release();
}
_requireMutex = false;
break;
}
},
);
// Listen for tor preference changes.
_torPreferenceListener = bus.on<TorPreferenceChangedEvent>().listen(
(event) async {
await updateNode();
},
);
}
@override @override
Address addressFor({required int index, int account = 0}) { Address addressFor({required int index, int account = 0}) {
String address = (CwBasedInterface.cwWalletBase as WowneroWalletBase) final String address = (CwBasedInterface.cwWalletBase as WowneroWalletBase)
.getTransactionAddress(account, index); .getTransactionAddress(account, index);
final newReceivingAddress = Address( final newReceivingAddress = Address(
@ -143,13 +176,35 @@ class WowneroWallet extends CryptonoteWallet with CwBasedInterface {
final node = getCurrentNode(); final node = getCurrentNode();
final host = Uri.parse(node.host).host; final host = Uri.parse(node.host).host;
await CwBasedInterface.cwWalletBase?.connectToNode( ({InternetAddress host, int port})? proxy;
node: Node( if (prefs.useTor) {
uri: "$host:${node.port}", proxy = TorService.sharedInstance.getProxyInfo();
type: WalletType.wownero, }
trusted: node.trusted ?? false, if (_requireMutex) {
), await _torConnectingLock.protect(() async {
); await CwBasedInterface.cwWalletBase?.connectToNode(
node: Node(
uri: "$host:${node.port}",
type: WalletType.wownero,
trusted: node.trusted ?? false,
),
socksProxyAddress:
proxy == null ? null : "${proxy.host.address}:${proxy.port}",
);
});
} else {
await CwBasedInterface.cwWalletBase?.connectToNode(
node: Node(
uri: "$host:${node.port}",
type: WalletType.wownero,
trusted: node.trusted ?? false,
),
socksProxyAddress:
proxy == null ? null : "${proxy.host.address}:${proxy.port}",
);
}
return;
} }
@override @override
@ -199,7 +254,7 @@ class WowneroWallet extends CryptonoteWallet with CwBasedInterface {
final List<Tuple2<Transaction, Address?>> txnsData = []; final List<Tuple2<Transaction, Address?>> txnsData = [];
if (transactions != null) { if (transactions != null) {
for (var tx in transactions.entries) { for (final tx in transactions.entries) {
Address? address; Address? address;
TransactionType type; TransactionType type;
if (tx.value.direction == TransactionDirection.incoming) { if (tx.value.direction == TransactionDirection.incoming) {
@ -330,7 +385,9 @@ class WowneroWallet extends CryptonoteWallet with CwBasedInterface {
// date: DateTime.now().subtract(const Duration( // date: DateTime.now().subtract(const Duration(
// days: // days:
// 2))); // subtract a couple days to ensure we have a buffer for SWB // 2))); // subtract a couple days to ensure we have a buffer for SWB
final bufferedCreateHeight = getSeedHeightSync(wallet!.seed.trim()); // TODO(mrcyjanek): implement
const bufferedCreateHeight =
1; //getSeedHeightSync(wallet!.seed.trim());
await info.updateRestoreHeight( await info.updateRestoreHeight(
newRestoreHeight: bufferedCreateHeight, newRestoreHeight: bufferedCreateHeight,
@ -419,7 +476,7 @@ class WowneroWallet extends CryptonoteWallet with CwBasedInterface {
// clear blockchain info // clear blockchain info
await mainDB.deleteWalletBlockchainData(walletId); await mainDB.deleteWalletBlockchainData(walletId);
var restoreHeight = final restoreHeight =
CwBasedInterface.cwWalletBase?.walletInfo.restoreHeight; CwBasedInterface.cwWalletBase?.walletInfo.restoreHeight;
highestPercentCached = 0; highestPercentCached = 0;
await CwBasedInterface.cwWalletBase?.rescan(height: restoreHeight ?? 0); await CwBasedInterface.cwWalletBase?.rescan(height: restoreHeight ?? 0);
@ -441,7 +498,8 @@ class WowneroWallet extends CryptonoteWallet with CwBasedInterface {
// extract seed height from 14 word seed // extract seed height from 14 word seed
if (seedLength == 14) { if (seedLength == 14) {
height = getSeedHeightSync(mnemonic.trim()); // TODO(mrcyjanek): implement
height = 1; // getSeedHeightSync(mnemonic.trim());
} else { } else {
height = max(height, 0); height = max(height, 0);
} }
@ -454,7 +512,7 @@ class WowneroWallet extends CryptonoteWallet with CwBasedInterface {
.createWowneroWalletService(DB.instance.moneroWalletInfoBox); .createWowneroWalletService(DB.instance.moneroWalletInfoBox);
WalletInfo walletInfo; WalletInfo walletInfo;
WalletCredentials credentials; WalletCredentials credentials;
String name = walletId; final String name = walletId;
final dirPath = final dirPath =
await pathForWalletDir(name: name, type: WalletType.wownero); await pathForWalletDir(name: name, type: WalletType.wownero);
final path = await pathForWallet(name: name, type: WalletType.wownero); final path = await pathForWallet(name: name, type: WalletType.wownero);
@ -556,13 +614,13 @@ class WowneroWallet extends CryptonoteWallet with CwBasedInterface {
isSendAll = true; isSendAll = true;
} }
List<wownero_output.Output> outputs = []; final List<wownero_output.Output> outputs = [];
for (final recipient in txData.recipients!) { for (final recipient in txData.recipients!) {
final output = final output =
wownero_output.Output(CwBasedInterface.cwWalletBase!); wownero_output.Output(CwBasedInterface.cwWalletBase!);
output.address = recipient.address; output.address = recipient.address;
output.sendAll = isSendAll; output.sendAll = isSendAll;
String amountToSend = recipient.amount.decimal.toString(); final String amountToSend = recipient.amount.decimal.toString();
output.setCryptoAmount(amountToSend); output.setCryptoAmount(amountToSend);
outputs.add(output); outputs.add(output);
} }
@ -582,7 +640,7 @@ class WowneroWallet extends CryptonoteWallet with CwBasedInterface {
level: LogLevel.Warning); level: LogLevel.Warning);
} }
PendingWowneroTransaction pendingWowneroTransaction = final PendingWowneroTransaction pendingWowneroTransaction =
await (awaitPendingTransaction!) as PendingWowneroTransaction; await (awaitPendingTransaction!) as PendingWowneroTransaction;
final realFee = Amount.fromDecimal( final realFee = Amount.fromDecimal(
Decimal.parse(pendingWowneroTransaction.feeFormatted), Decimal.parse(pendingWowneroTransaction.feeFormatted),
@ -665,7 +723,7 @@ class WowneroWallet extends CryptonoteWallet with CwBasedInterface {
?.entries; ?.entries;
if (balanceEntries != null) { if (balanceEntries != null) {
int bal = 0; int bal = 0;
for (var element in balanceEntries) { for (final element in balanceEntries) {
bal = bal + element.value.fullBalance; bal = bal + element.value.fullBalance;
} }
return Amount( return Amount(
@ -676,7 +734,7 @@ class WowneroWallet extends CryptonoteWallet with CwBasedInterface {
final transactions = final transactions =
CwBasedInterface.cwWalletBase!.transactionHistory!.transactions; CwBasedInterface.cwWalletBase!.transactionHistory!.transactions;
int transactionBalance = 0; int transactionBalance = 0;
for (var tx in transactions!.entries) { for (final tx in transactions!.entries) {
if (tx.value.direction == TransactionDirection.incoming) { if (tx.value.direction == TransactionDirection.incoming) {
transactionBalance += tx.value.amount!; transactionBalance += tx.value.amount!;
} else { } else {
@ -693,4 +751,12 @@ class WowneroWallet extends CryptonoteWallet with CwBasedInterface {
return info.cachedBalance.total; return info.cachedBalance.total;
} }
} }
// ============== Private ====================================================
StreamSubscription<TorConnectionStatusChangedEvent>? _torStatusListener;
StreamSubscription<TorPreferenceChangedEvent>? _torPreferenceListener;
final Mutex _torConnectingLock = Mutex();
bool _requireMutex = false;
} }

View file

@ -6,9 +6,6 @@ import FlutterMacOS
import Foundation import Foundation
import connectivity_plus import connectivity_plus
import cw_monero
import cw_shared_external
import cw_wownero
import desktop_drop import desktop_drop
import device_info_plus import device_info_plus
import devicelocale import devicelocale
@ -27,9 +24,6 @@ import window_size
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
ConnectivityPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlugin")) ConnectivityPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlugin"))
CwMoneroPlugin.register(with: registry.registrar(forPlugin: "CwMoneroPlugin"))
CwSharedExternalPlugin.register(with: registry.registrar(forPlugin: "CwSharedExternalPlugin"))
CwWowneroPlugin.register(with: registry.registrar(forPlugin: "CwWowneroPlugin"))
DesktopDropPlugin.register(with: registry.registrar(forPlugin: "DesktopDropPlugin")) DesktopDropPlugin.register(with: registry.registrar(forPlugin: "DesktopDropPlugin"))
DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin"))
DevicelocalePlugin.register(with: registry.registrar(forPlugin: "DevicelocalePlugin")) DevicelocalePlugin.register(with: registry.registrar(forPlugin: "DevicelocalePlugin"))

View file

@ -5,48 +5,6 @@ PODS:
- connectivity_plus (0.0.1): - connectivity_plus (0.0.1):
- FlutterMacOS - FlutterMacOS
- ReachabilitySwift - ReachabilitySwift
- cw_monero (0.0.1):
- cw_monero/Boost (= 0.0.1)
- cw_monero/Monero (= 0.0.1)
- cw_monero/OpenSSL (= 0.0.1)
- cw_monero/Sodium (= 0.0.1)
- cw_monero/Unbound (= 0.0.1)
- FlutterMacOS
- cw_monero/Boost (0.0.1):
- FlutterMacOS
- cw_monero/Monero (0.0.1):
- FlutterMacOS
- cw_monero/OpenSSL (0.0.1):
- FlutterMacOS
- cw_monero/Sodium (0.0.1):
- FlutterMacOS
- cw_monero/Unbound (0.0.1):
- FlutterMacOS
- cw_shared_external (0.0.1):
- cw_shared_external/Boost (= 0.0.1)
- cw_shared_external/OpenSSL (= 0.0.1)
- FlutterMacOS
- cw_shared_external/Boost (0.0.1):
- FlutterMacOS
- cw_shared_external/OpenSSL (0.0.1):
- FlutterMacOS
- cw_wownero (0.0.1):
- cw_wownero/Boost (= 0.0.1)
- cw_wownero/OpenSSL (= 0.0.1)
- cw_wownero/Sodium (= 0.0.1)
- cw_wownero/Unbound (= 0.0.1)
- cw_wownero/Wownero (= 0.0.1)
- FlutterMacOS
- cw_wownero/Boost (0.0.1):
- FlutterMacOS
- cw_wownero/OpenSSL (0.0.1):
- FlutterMacOS
- cw_wownero/Sodium (0.0.1):
- FlutterMacOS
- cw_wownero/Unbound (0.0.1):
- FlutterMacOS
- cw_wownero/Wownero (0.0.1):
- FlutterMacOS
- desktop_drop (0.0.1): - desktop_drop (0.0.1):
- FlutterMacOS - FlutterMacOS
- device_info_plus (0.0.1): - device_info_plus (0.0.1):
@ -89,9 +47,6 @@ PODS:
DEPENDENCIES: DEPENDENCIES:
- coinlib_flutter (from `Flutter/ephemeral/.symlinks/plugins/coinlib_flutter/darwin`) - coinlib_flutter (from `Flutter/ephemeral/.symlinks/plugins/coinlib_flutter/darwin`)
- connectivity_plus (from `Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos`) - connectivity_plus (from `Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos`)
- cw_monero (from `Flutter/ephemeral/.symlinks/plugins/cw_monero/macos`)
- cw_shared_external (from `Flutter/ephemeral/.symlinks/plugins/cw_shared_external/macos`)
- cw_wownero (from `Flutter/ephemeral/.symlinks/plugins/cw_wownero/macos`)
- desktop_drop (from `Flutter/ephemeral/.symlinks/plugins/desktop_drop/macos`) - desktop_drop (from `Flutter/ephemeral/.symlinks/plugins/desktop_drop/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`)
@ -121,12 +76,6 @@ EXTERNAL SOURCES:
:path: Flutter/ephemeral/.symlinks/plugins/coinlib_flutter/darwin :path: Flutter/ephemeral/.symlinks/plugins/coinlib_flutter/darwin
connectivity_plus: connectivity_plus:
:path: Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos :path: Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos
cw_monero:
:path: Flutter/ephemeral/.symlinks/plugins/cw_monero/macos
cw_shared_external:
:path: Flutter/ephemeral/.symlinks/plugins/cw_shared_external/macos
cw_wownero:
:path: Flutter/ephemeral/.symlinks/plugins/cw_wownero/macos
desktop_drop: desktop_drop:
:path: Flutter/ephemeral/.symlinks/plugins/desktop_drop/macos :path: Flutter/ephemeral/.symlinks/plugins/desktop_drop/macos
device_info_plus: device_info_plus:
@ -169,9 +118,6 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS: SPEC CHECKSUMS:
coinlib_flutter: 6abec900d67762a6e7ccfd567a3cd3ae00bbee35 coinlib_flutter: 6abec900d67762a6e7ccfd567a3cd3ae00bbee35
connectivity_plus: 18d3c32514c886e046de60e9c13895109866c747 connectivity_plus: 18d3c32514c886e046de60e9c13895109866c747
cw_monero: 7acce7238d217e3993ecac6ec2dec07be728769a
cw_shared_external: c6adfd29c9be4d64f84e1fa9c541ccbcbdb6b457
cw_wownero: bcd7f2ad6c0a3e8e2a51756fb14f0579b6f8b4ff
desktop_drop: 69eeff437544aa619c8db7f4481b3a65f7696898 desktop_drop: 69eeff437544aa619c8db7f4481b3a65f7696898
device_info_plus: 5401765fde0b8d062a2f8eb65510fb17e77cf07f device_info_plus: 5401765fde0b8d062a2f8eb65510fb17e77cf07f
devicelocale: 9f0f36ac651cabae2c33f32dcff4f32b61c38225 devicelocale: 9f0f36ac651cabae2c33f32dcff4f32b61c38225

View file

@ -388,13 +388,6 @@ packages:
relative: true relative: true
source: path source: path
version: "0.0.1" version: "0.0.1"
cw_shared_external:
dependency: transitive
description:
path: "crypto_plugins/flutter_libmonero/cw_shared_external"
relative: true
source: path
version: "0.0.1"
cw_wownero: cw_wownero:
dependency: "direct main" dependency: "direct main"
description: description:
@ -1200,6 +1193,15 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.2.0" version: "0.2.0"
monero:
dependency: transitive
description:
path: "."
ref: "6a17a405a1a260fa228b2f4fc94044088a4335ac"
resolved-ref: "6a17a405a1a260fa228b2f4fc94044088a4335ac"
url: "https://git.mrcyjanek.net/mrcyjanek/monero.dart"
source: git
version: "0.0.0"
mutex: mutex:
dependency: "direct main" dependency: "direct main"
description: description:
@ -1740,8 +1742,8 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
path: "." path: "."
ref: "13fa937ea9a9fc34caf047e068df9535f65c27ad" ref: f31f8f857665d85338824ae171aba4c629c3ba6f
resolved-ref: "13fa937ea9a9fc34caf047e068df9535f65c27ad" resolved-ref: f31f8f857665d85338824ae171aba4c629c3ba6f
url: "https://github.com/cypherstack/tezart.git" url: "https://github.com/cypherstack/tezart.git"
source: git source: git
version: "2.0.5" version: "2.0.5"

View file

@ -12,11 +12,11 @@ mkdir -p build
PLUGINS_DIR=../../crypto_plugins PLUGINS_DIR=../../crypto_plugins
(cd "${PLUGINS_DIR}"/flutter_liblelantus/scripts/android && ./build_all.sh ) & (cd "${PLUGINS_DIR}"/flutter_liblelantus/scripts/android && ./build_all.sh )
(cd "${PLUGINS_DIR}"/flutter_libepiccash/scripts/android && ./build_all.sh ) & (cd "${PLUGINS_DIR}"/flutter_libepiccash/scripts/android && ./build_all.sh )
(cd "${PLUGINS_DIR}"/flutter_libmonero/scripts/android/ && ./build_all.sh ) && (cd "${PLUGINS_DIR}"/flutter_libmonero/scripts/android/ && ./build_all.sh )
set_rust_to_1720 && set_rust_to_1720
(cd "${PLUGINS_DIR}"/frostdart/scripts/android && ./build_all.sh ) & (cd "${PLUGINS_DIR}"/frostdart/scripts/android && ./build_all.sh )
wait wait
echo "Done building" echo "Done building"

View file

@ -45,7 +45,12 @@ android {
lintOptions { lintOptions {
disable 'InvalidPackage' disable 'InvalidPackage'
} }
packagingOptions {
pickFirst 'lib/x86/libc++_shared.so'
pickFirst 'lib/x86_64/libc++_shared.so'
pickFirst 'lib/armeabi-v7a/libc++_shared.so'
pickFirst 'lib/arm64-v8a/libc++_shared.so'
}
defaultConfig { defaultConfig {
applicationId "com.place.holder" applicationId "com.place.holder"
minSdkVersion 23 minSdkVersion 23

View file

@ -23,7 +23,8 @@
android:requestLegacyExternalStorage="true" android:requestLegacyExternalStorage="true"
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
android:allowBackup="false" android:allowBackup="false"
android:fullBackupContent="false"> android:fullBackupContent="false"
android:extractNativeLibs="true">
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:screenOrientation="portrait" android:screenOrientation="portrait"

View file

@ -134,10 +134,10 @@ install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}
install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
COMPONENT Runtime) COMPONENT Runtime)
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../crypto_plugins/flutter_libmonero/scripts/linux/build/libcw_monero.so" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../crypto_plugins/flutter_libmonero/scripts/monero_c/release/monero/x86_64-linux-gnu_libwallet2_api_c.so" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" RENAME "monero_libwallet2_api_c.so"
COMPONENT Runtime) COMPONENT Runtime)
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../crypto_plugins/flutter_libmonero/scripts/linux/build/libcw_wownero.so" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../crypto_plugins/flutter_libmonero/scripts/monero_c/release/wownero/x86_64-linux-gnu_libwallet2_api_c.so" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" RENAME "wownero_libwallet2_api_c.so"
COMPONENT Runtime) COMPONENT Runtime)
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../crypto_plugins/flutter_libepiccash/scripts/linux/build/rust/target/x86_64-unknown-linux-gnu/release/libepic_cash_wallet.so" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../crypto_plugins/flutter_libepiccash/scripts/linux/build/rust/target/x86_64-unknown-linux-gnu/release/libepic_cash_wallet.so" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"

View file

@ -31,6 +31,8 @@
B98151822A67402A009D013C /* mobileliblelantus.framework in Bundle Framework */ = {isa = PBXBuildFile; fileRef = B98151802A674022009D013C /* mobileliblelantus.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; B98151822A67402A009D013C /* mobileliblelantus.framework in Bundle Framework */ = {isa = PBXBuildFile; fileRef = B98151802A674022009D013C /* mobileliblelantus.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
B98151842A674143009D013C /* libsqlite3.0.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B98151832A674143009D013C /* libsqlite3.0.tbd */; }; B98151842A674143009D013C /* libsqlite3.0.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B98151832A674143009D013C /* libsqlite3.0.tbd */; };
BFD0376C00E1FFD46376BB9D /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9206484E84CB0AD93E3E68CA /* Pods_RunnerTests.framework */; }; BFD0376C00E1FFD46376BB9D /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9206484E84CB0AD93E3E68CA /* Pods_RunnerTests.framework */; };
CEA2021D2BDD4D7100FE1D27 /* wownero_libwallet2_api_c.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = CEA2021C2BDD4D7100FE1D27 /* wownero_libwallet2_api_c.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
CEA202202BDD4F0B00FE1D27 /* monero_libwallet2_api_c.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = CEA2021F2BDD4F0B00FE1D27 /* monero_libwallet2_api_c.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
F1FA2C4E2BA4B49F00BDA1BB /* frostdart.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F1FA2C4D2BA4B49F00BDA1BB /* frostdart.dylib */; settings = {ATTRIBUTES = (Weak, ); }; }; F1FA2C4E2BA4B49F00BDA1BB /* frostdart.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F1FA2C4D2BA4B49F00BDA1BB /* frostdart.dylib */; settings = {ATTRIBUTES = (Weak, ); }; };
F1FA2C502BA4B4CA00BDA1BB /* frostdart.dylib in Resources */ = {isa = PBXBuildFile; fileRef = F1FA2C4F2BA4B4CA00BDA1BB /* frostdart.dylib */; }; F1FA2C502BA4B4CA00BDA1BB /* frostdart.dylib in Resources */ = {isa = PBXBuildFile; fileRef = F1FA2C4F2BA4B4CA00BDA1BB /* frostdart.dylib */; };
F1FA2C512BA4B51E00BDA1BB /* frostdart.dylib in Bundle Framework */ = {isa = PBXBuildFile; fileRef = F1FA2C4D2BA4B49F00BDA1BB /* frostdart.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; F1FA2C512BA4B51E00BDA1BB /* frostdart.dylib in Bundle Framework */ = {isa = PBXBuildFile; fileRef = F1FA2C4D2BA4B49F00BDA1BB /* frostdart.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
@ -67,6 +69,17 @@
name = "Bundle Framework"; name = "Bundle Framework";
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
CEA202192BDD4C3500FE1D27 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 12;
dstPath = "";
dstSubfolderSpec = 10;
files = (
CEA202202BDD4F0B00FE1D27 /* monero_libwallet2_api_c.dylib in CopyFiles */,
CEA2021D2BDD4D7100FE1D27 /* wownero_libwallet2_api_c.dylib in CopyFiles */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */ /* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
@ -97,6 +110,8 @@
B98151802A674022009D013C /* mobileliblelantus.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = mobileliblelantus.framework; path = ../crypto_plugins/flutter_liblelantus/scripts/macos/mobileliblelantus/mobileliblelantus.framework; sourceTree = "<group>"; }; B98151802A674022009D013C /* mobileliblelantus.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = mobileliblelantus.framework; path = ../crypto_plugins/flutter_liblelantus/scripts/macos/mobileliblelantus/mobileliblelantus.framework; sourceTree = "<group>"; };
B98151832A674143009D013C /* libsqlite3.0.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.0.tbd; path = usr/lib/libsqlite3.0.tbd; sourceTree = SDKROOT; }; B98151832A674143009D013C /* libsqlite3.0.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.0.tbd; path = usr/lib/libsqlite3.0.tbd; sourceTree = SDKROOT; };
BF5E76865ACB46314AC27D8F /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = "<group>"; }; BF5E76865ACB46314AC27D8F /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = "<group>"; };
CEA2021C2BDD4D7100FE1D27 /* wownero_libwallet2_api_c.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = wownero_libwallet2_api_c.dylib; sourceTree = "<group>"; };
CEA2021F2BDD4F0B00FE1D27 /* monero_libwallet2_api_c.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = monero_libwallet2_api_c.dylib; sourceTree = "<group>"; };
E6036BF01BF05EA773C76D22 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; E6036BF01BF05EA773C76D22 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
F1FA2C4D2BA4B49F00BDA1BB /* frostdart.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = frostdart.dylib; path = ../crypto_plugins/frostdart/macos/frostdart.dylib; sourceTree = "<group>"; }; F1FA2C4D2BA4B49F00BDA1BB /* frostdart.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = frostdart.dylib; path = ../crypto_plugins/frostdart/macos/frostdart.dylib; sourceTree = "<group>"; };
F1FA2C4F2BA4B4CA00BDA1BB /* frostdart.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = frostdart.dylib; path = ../crypto_plugins/frostdart/macos/frostdart.dylib; sourceTree = "<group>"; }; F1FA2C4F2BA4B4CA00BDA1BB /* frostdart.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = frostdart.dylib; path = ../crypto_plugins/frostdart/macos/frostdart.dylib; sourceTree = "<group>"; };
@ -147,6 +162,8 @@
33CC10E42044A3C60003C045 = { 33CC10E42044A3C60003C045 = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
CEA2021F2BDD4F0B00FE1D27 /* monero_libwallet2_api_c.dylib */,
CEA2021C2BDD4D7100FE1D27 /* wownero_libwallet2_api_c.dylib */,
F1FA2C4F2BA4B4CA00BDA1BB /* frostdart.dylib */, F1FA2C4F2BA4B4CA00BDA1BB /* frostdart.dylib */,
33FAB671232836740065AC1E /* Runner */, 33FAB671232836740065AC1E /* Runner */,
33CEB47122A05771004F2AC0 /* Flutter */, 33CEB47122A05771004F2AC0 /* Flutter */,
@ -259,6 +276,7 @@
33CC110E2044A8840003C045 /* Bundle Framework */, 33CC110E2044A8840003C045 /* Bundle Framework */,
3399D490228B24CF009A79C7 /* ShellScript */, 3399D490228B24CF009A79C7 /* ShellScript */,
529691D83C3BADE14E2EAC03 /* [CP] Embed Pods Frameworks */, 529691D83C3BADE14E2EAC03 /* [CP] Embed Pods Frameworks */,
CEA202192BDD4C3500FE1D27 /* CopyFiles */,
); );
buildRules = ( buildRules = (
); );
@ -277,7 +295,7 @@
isa = PBXProject; isa = PBXProject;
attributes = { attributes = {
LastSwiftUpdateCheck = 0920; LastSwiftUpdateCheck = 0920;
LastUpgradeCheck = 1510; LastUpgradeCheck = 1430;
ORGANIZATIONNAME = ""; ORGANIZATIONNAME = "";
TargetAttributes = { TargetAttributes = {
331C80D4294CF70F00263BE5 = { 331C80D4294CF70F00263BE5 = {

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Scheme <Scheme
LastUpgradeVersion = "1510" LastUpgradeVersion = "1430"
version = "1.3"> version = "1.3">
<BuildAction <BuildAction
parallelizeBuildables = "YES" parallelizeBuildables = "YES"

View file

@ -86,6 +86,27 @@ install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../crypto_plugins/flutter_libepiccash
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../crypto_plugins/flutter_liblelantus/scripts/windows/build/libmobileliblelantus.dll" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../crypto_plugins/flutter_liblelantus/scripts/windows/build/libmobileliblelantus.dll" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
COMPONENT Runtime) COMPONENT Runtime)
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../crypto_plugins/flutter_libmonero/scripts/monero_c/release/monero/x86_64-w64-mingw32_libwallet2_api_c.dll" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" RENAME "monero_libwallet2_api_c.dll"
COMPONENT Runtime)
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../crypto_plugins/flutter_libmonero/scripts/monero_c/release/wownero/x86_64-w64-mingw32_libwallet2_api_c.dll" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" RENAME "wownero_libwallet2_api_c.dll"
COMPONENT Runtime)
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../crypto_plugins/flutter_libmonero/scripts/monero_c/release/wownero/x86_64-w64-mingw32_libgcc_s_seh-1.dll" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" RENAME "libgcc_s_seh-1.dll"
COMPONENT Runtime)
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../crypto_plugins/flutter_libmonero/scripts/monero_c/release/wownero/x86_64-w64-mingw32_libpolyseed.dll" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" RENAME "libpolyseed.dll"
COMPONENT Runtime)
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../crypto_plugins/flutter_libmonero/scripts/monero_c/release/wownero/x86_64-w64-mingw32_libssp-0.dll" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" RENAME "libssp-0.dll"
COMPONENT Runtime)
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../crypto_plugins/flutter_libmonero/scripts/monero_c/release/wownero/x86_64-w64-mingw32_libstdc++-6.dll" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" RENAME "libstdc++-6.dll"
COMPONENT Runtime)
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../crypto_plugins/flutter_libmonero/scripts/monero_c/release/wownero/x86_64-w64-mingw32_libwinpthread-1.dll" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" RENAME "libwinpthread-1.dll"
COMPONENT Runtime)
if(PLUGIN_BUNDLED_LIBRARIES) if(PLUGIN_BUNDLED_LIBRARIES)
install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" install(FILES "${PLUGIN_BUNDLED_LIBRARIES}"
DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"

View file

@ -11,12 +11,12 @@ set_rust_to_1671
# flutter-elinux pub get # flutter-elinux pub get
# flutter-elinux build linux --dart-define="IS_ARM=true" # flutter-elinux build linux --dart-define="IS_ARM=true"
mkdir -p build mkdir -p build
./build_secure_storage_deps.sh & ./build_secure_storage_deps.sh
(cd ../../crypto_plugins/flutter_liblelantus/scripts/linux && ./build_all.sh ) & (cd ../../crypto_plugins/flutter_liblelantus/scripts/linux && ./build_all.sh )
(cd ../../crypto_plugins/flutter_libepiccash/scripts/linux && ./build_all.sh ) & (cd ../../crypto_plugins/flutter_libepiccash/scripts/linux && ./build_all.sh )
(cd ../../crypto_plugins/flutter_libmonero/scripts/linux && ./build_monero_all.sh && ./build_sharedfile.sh ) (cd ../../crypto_plugins/flutter_libmonero/scripts/linux && ./build_all.sh )
set_rust_to_1720 set_rust_to_1720
(cd ../../crypto_plugins/frostdart/scripts/linux && ./build_all.sh ) & (cd ../../crypto_plugins/frostdart/scripts/linux && ./build_all.sh )
./build_secp256k1.sh ./build_secp256k1.sh

View file

@ -6,11 +6,11 @@ set -x -e
source ../rust_version.sh source ../rust_version.sh
set_rust_to_1671 set_rust_to_1671
(cd ../../crypto_plugins/flutter_liblelantus/scripts/macos && ./build_all.sh ) & (cd ../../crypto_plugins/flutter_liblelantus/scripts/macos && ./build_all.sh )
(cd ../../crypto_plugins/flutter_libepiccash/scripts/macos && ./build_all.sh ) & (cd ../../crypto_plugins/flutter_libepiccash/scripts/macos && ./build_all.sh )
(cd ../../crypto_plugins/flutter_libmonero/scripts/macos/ && ./build_all.sh ) && (cd ../../crypto_plugins/flutter_libmonero/scripts/macos/ && ./build_all.sh )
set_rust_to_1720 && set_rust_to_1720
(cd ../../crypto_plugins/frostdart/scripts/macos && ./build_all.sh ) & (cd ../../crypto_plugins/frostdart/scripts/macos && ./build_all.sh )
wait wait
echo "Done building" echo "Done building"

View file

@ -7,11 +7,11 @@ source ../rust_version.sh
set_rust_to_1671 set_rust_to_1671
mkdir -p build mkdir -p build
(cd ../../crypto_plugins/flutter_libepiccash/scripts/windows && ./build_all.sh ) & (cd ../../crypto_plugins/flutter_libepiccash/scripts/windows && ./build_all.sh )
(cd ../../crypto_plugins/flutter_liblelantus/scripts/windows && ./build_all.sh ) & (cd ../../crypto_plugins/flutter_liblelantus/scripts/windows && ./build_all.sh )
(cd ../../crypto_plugins/flutter_libmonero/scripts/windows && ./build_all.sh) (cd ../../crypto_plugins/flutter_libmonero/scripts/windows && ./build_all.sh)
set_rust_to_1720 set_rust_to_1720
(cd ../../crypto_plugins/frostdart/scripts/windows && ./build_all.sh ) & (cd ../../crypto_plugins/frostdart/scripts/windows && ./build_all.sh )
./build_secp256k1_wsl.sh ./build_secp256k1_wsl.sh

View file

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
(cd ../../crypto_plugins/flutter_libepiccash/scripts/windows && ./deps.sh ) & (cd ../../crypto_plugins/flutter_libepiccash/scripts/windows && ./deps.sh )
(cd ../../crypto_plugins/flutter_liblelantus/scripts/windows && ./mxedeps.sh ) & (cd ../../crypto_plugins/flutter_liblelantus/scripts/windows && ./mxedeps.sh )
# (cd ../../crypto_plugins/flutter_libmonero/scripts/windows && ./monerodeps.sh && ./mxedeps.sh) & # (cd ../../crypto_plugins/flutter_libmonero/scripts/windows && ./monerodeps.sh && ./mxedeps.sh) &
wait wait