Merge remote-tracking branch 'origin_SW/staging' into themes

This commit is contained in:
julian 2023-05-12 11:16:32 -06:00
commit fe0155edc7
3 changed files with 31 additions and 46 deletions

View file

@ -8,10 +8,13 @@ jobs:
- name: Prepare repository
uses: actions/checkout@v3
with:
flutter-version: '3.3.4'
flutter-version: '3.7.10'
channel: 'stable'
- name: Install Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: '3.7.10'
channel: 'stable'
- name: Setup | Rust
uses: ATiltedTree/setup-rust@v1
with:

@ -1 +1 @@
Subproject commit 398077d745bfb8e27c6fcb3fae971908566b2222
Subproject commit 594ab89bc665a15a810ba7476ed2ad255fa8b5ac

View file

@ -1,5 +1,6 @@
import 'dart:async';
import 'dart:convert';
import 'dart:ffi';
import 'dart:io';
import 'dart:isolate';
@ -56,6 +57,10 @@ class BadEpicHttpAddressException implements Exception {
}
}
abstract class ListenerManager {
static Pointer<Void>? pointer;
}
// isolate
Map<ReceivePort, Isolate> isolates = {};
@ -178,18 +183,8 @@ Future<void> executeNative(Map<String, dynamic> arguments) async {
sendPort.send(result);
return;
}
} else if (function == "listenForSlates") {
final wallet = arguments['wallet'] as String?;
final epicboxConfig = arguments['epicboxConfig'] as String?;
Map<String, dynamic> result = {};
if (!(wallet == null || epicboxConfig == null)) {
var res = await epicboxListen(wallet, epicboxConfig);
result['result'] = res;
sendPort.send(result);
return;
}
}
Logging.instance.log(
"Error Arguments for $function not formatted correctly",
level: LogLevel.Fatal);
@ -714,8 +709,6 @@ class EpicCashWallet extends CoinServiceAPI
await _prefs.init();
await updateNode(false);
await _refreshBalance();
//Open Epicbox listener in the background
await listenForSlates();
// TODO: is there anything else that should be set up here whenever this wallet is first loaded again?
}
@ -810,9 +803,6 @@ class EpicCashWallet extends CoinServiceAPI
epicUpdateChangeIndex(0),
]);
//Open Epicbox listener in the background
await listenForSlates();
final initialReceivingAddress = await _getReceivingAddressForIndex(0);
await db.putAddress(initialReceivingAddress);
@ -1162,6 +1152,14 @@ class EpicCashWallet extends CoinServiceAPI
Future<bool> startScans() async {
try {
if (ListenerManager.pointer != null) {
Logging.instance
.log("LISTENER HANDLER IS NOT NULL ....", level: LogLevel.Info);
Logging.instance
.log("STOPPING ANY WALLET LISTENER ....", level: LogLevel.Info);
epicboxListenerStop(ListenerManager.pointer!);
}
final wallet = await _secureStore.read(key: '${_walletId}_wallet');
var restoreHeight = epicGetRestoreHeight();
@ -1203,6 +1201,7 @@ class EpicCashWallet extends CoinServiceAPI
await getSyncPercent;
}
Logging.instance.log("successfully at the tip", level: LogLevel.Info);
await listenToEpicbox();
return true;
} catch (e, s) {
Logging.instance.log("$e, $s", level: LogLevel.Warning);
@ -1277,9 +1276,6 @@ class EpicCashWallet extends CoinServiceAPI
//Store Epic box address info
await storeEpicboxInfo();
//Open Epicbox listener in the background
await listenForSlates();
} catch (e, s) {
Logging.instance
.log("Error recovering wallet $e\n$s", level: LogLevel.Error);
@ -1287,6 +1283,15 @@ class EpicCashWallet extends CoinServiceAPI
}
}
Future<void> listenToEpicbox() async {
Logging.instance.log("STARTING WALLET LISTENER ....", level: LogLevel.Info);
final wallet = await _secureStore.read(key: '${_walletId}_wallet');
EpicBoxConfigModel epicboxConfig = await getEpicBoxConfig();
ListenerManager.pointer =
epicboxListenerStart(wallet!, epicboxConfig.toString());
}
Future<int> getRestoreHeight() async {
return epicGetRestoreHeight() ?? epicGetCreationHeight()!;
}
@ -1451,29 +1456,6 @@ class EpicCashWallet extends CoinServiceAPI
}
}
Future<void> listenForSlates() async {
final wallet = await _secureStore.read(key: '${_walletId}_wallet');
EpicBoxConfigModel epicboxConfig = await getEpicBoxConfig();
await m.protect(() async {
Logging.instance.log("CALLING LISTEN FOR SLATES", level: LogLevel.Info);
ReceivePort receivePort = await getIsolate({
"function": "listenForSlates",
"wallet": wallet,
"epicboxConfig": epicboxConfig.toString(),
}, name: walletName);
var result = await receivePort.first;
if (result is String) {
Logging.instance
.log("this is a message $result", level: LogLevel.Error);
stop(receivePort);
throw Exception("subscribeRequest isolate failed");
}
stop(receivePort);
});
}
/// Refreshes display data for the wallet
@override
Future<void> refresh() async {