call sync call in isolate to make it async

generate framework for iOS as well
fix UR issues
This commit is contained in:
Czarek Nakamoto 2024-11-11 08:30:32 -05:00
parent f22ab329c4
commit bea81d2c67
No known key found for this signature in database
GPG key ID: 04FB77CB56AB1DF4
6 changed files with 52 additions and 8 deletions

View file

@ -44,4 +44,9 @@ class PendingZanoTransaction with PendingTransaction {
await zanoWallet.transfer(destinations, fee, comment);
zanoWallet.fetchTransactions();
}
@override
Future<String?> commitUR() {
throw UnimplementedError();
}
}

View file

@ -1,4 +1,5 @@
import 'dart:convert' as convert;
import 'dart:isolate';
import 'package:cw_core/transaction_priority.dart';
import 'package:cw_zano/api/consts.dart';
@ -21,6 +22,7 @@ import 'package:cw_zano/zano_wallet_exceptions.dart';
import 'package:flutter/foundation.dart';
import 'package:json_bigint/json_bigint.dart';
import 'package:monero/zano.dart' as zano;
import 'package:monero/src/generated_bindings_zano.g.dart' as zanoapi;
mixin ZanoWalletApi {
static const _defaultNodeUri = '195.201.107.230:33336';
@ -83,12 +85,31 @@ mixin ZanoWalletApi {
}
Future<String> invokeMethod(String methodName, Object params) async {
var invokeResult =
zano.PlainWallet_syncCall('invoke', hWallet, jsonEncode(
{
"method": "$methodName",
"params": params,
}));
// var invokeResult = zano.PlainWallet_syncCall(
// 'invoke',
// hWallet,
// jsonEncode(
// {
// "method": "$methodName",
// "params": params,
// },
// ),
// );
final request = jsonEncode({
"method": methodName,
"params": params,
});
print("zano: >>> $request");
var invokeResult = await Isolate.run(() {
final ret = zano.PlainWallet_syncCall(
'invoke',
hWallet,
request,
);
return ret;
});
print("zano: <<< ${invokeResult}");
Map<String, dynamic> map;
try {
map = jsonDecode(invokeResult) as Map<String, dynamic>;

4
ios/.gitignore vendored
View file

@ -31,4 +31,6 @@ Runner/GeneratedPluginRegistrant.*
!default.pbxuser
!default.perspectivev3
Mwebd.xcframework
Mwebd.xcframework
ZanoWallet
zano_libwallet2_api_c.dylib

Binary file not shown.

View file

@ -204,7 +204,7 @@ Future<void> initializeAppConfigs() async {
transactionDescriptions: transactionDescriptions,
secureStorage: secureStorage,
anonpayInvoiceInfo: anonpayInvoiceInfo,
initialMigrationVersion: 43,
initialMigrationVersion: 44,
);
}

View file

@ -29,3 +29,19 @@ cd $FRWK_DIR # go to iOS framework dir
lipo -create $DYLIB_LINK_PATH -output WowneroWallet
echo "Generated ${FRWK_DIR}"
# also generate for zano
IOS_DIR="$(pwd)/../../ios"
DYLIB_NAME="zano_libwallet2_api_c.dylib"
DYLIB_LINK_PATH="${IOS_DIR}/${DYLIB_NAME}"
FRWK_DIR="${IOS_DIR}/ZanoWallet.framework"
if [ ! -f $DYLIB_LINK_PATH ]; then
echo "Dylib is not found by the link: ${DYLIB_LINK_PATH}"
exit 0
fi
cd $FRWK_DIR # go to iOS framework dir
lipo -create $DYLIB_LINK_PATH -output ZanoWallet
echo "Generated ${FRWK_DIR}"