mirror of
https://github.com/cypherstack/stack_wallet.git
synced 2025-04-17 19:51:58 +00:00
Merge branch 'xelis' into xelis
This commit is contained in:
commit
302ceaaf1f
3 changed files with 77 additions and 73 deletions
crypto_plugins
lib/wallets/wallet
|
@ -1 +1 @@
|
|||
Subproject commit 0bb1b1ced6e0d3c66e383698f89825754c692986
|
||||
Subproject commit 8830be2ba661828d743be12df6f33d560448ed6a
|
|
@ -4,9 +4,9 @@ import 'dart:math';
|
|||
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:mutex/mutex.dart';
|
||||
import 'package:stack_wallet_backup/generate_password.dart';
|
||||
import 'package:xelis_dart_sdk/xelis_dart_sdk.dart' as xelis_sdk;
|
||||
import 'package:xelis_flutter/src/api/wallet.dart' as x_wallet;
|
||||
import 'package:stack_wallet_backup/generate_password.dart';
|
||||
|
||||
import '../../../models/balance.dart';
|
||||
import '../../../models/isar/models/blockchain_data/address.dart';
|
||||
|
@ -181,11 +181,12 @@ class XelisWallet extends LibXelisWallet {
|
|||
|
||||
try {
|
||||
await open();
|
||||
} catch (_) {
|
||||
// Logging.instance.log(
|
||||
// "Exception rethrown from recoverFromMnemonic(): $e\n$s",
|
||||
// level: LogLevel.Error,
|
||||
// );
|
||||
} catch (e, s) {
|
||||
Logging.instance.e(
|
||||
"Error rethrown from $runtimeType recover(isRescan: $isRescan)",
|
||||
error: e,
|
||||
stackTrace: s,
|
||||
);
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
|
@ -255,11 +256,12 @@ class XelisWallet extends LibXelisWallet {
|
|||
);
|
||||
await info.updateBalance(newBalance: balance, isar: mainDB.isar);
|
||||
}
|
||||
} catch (_) {
|
||||
// Logging.instance.log(
|
||||
// "Error in updateBalance(): $e\n$s",
|
||||
// level: LogLevel.Warning,
|
||||
// );
|
||||
} catch (e, s) {
|
||||
Logging.instance.e(
|
||||
"Error in $runtimeType updateBalance()",
|
||||
error: e,
|
||||
stackTrace: s,
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -282,28 +284,29 @@ class XelisWallet extends LibXelisWallet {
|
|||
newHeight: height.toInt(),
|
||||
isar: mainDB.isar,
|
||||
);
|
||||
} catch (_) {
|
||||
// Logging.instance.log(
|
||||
// "Error in updateChainHeight(): $e\n$s",
|
||||
// level: LogLevel.Warning,
|
||||
// );
|
||||
} catch (e, s) {
|
||||
Logging.instance.e(
|
||||
"Error in $runtimeType updateChainHeight()",
|
||||
error: e,
|
||||
stackTrace: s,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> updateNode() async {
|
||||
try {
|
||||
final node = getCurrentNode();
|
||||
final bool online = await libXelisWallet!.isOnline();
|
||||
if (online == true) {
|
||||
await libXelisWallet!.offlineMode();
|
||||
}
|
||||
await super.connect();
|
||||
} catch (_) {
|
||||
// Logging.instance.log(
|
||||
// "Error updating node: $e\n$s",
|
||||
// level: LogLevel.Error,
|
||||
// );
|
||||
} catch (e, s) {
|
||||
Logging.instance.e(
|
||||
"Error rethrown from $runtimeType updateNode()",
|
||||
error: e,
|
||||
stackTrace: s,
|
||||
);
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
|
@ -510,7 +513,7 @@ class XelisWallet extends LibXelisWallet {
|
|||
|
||||
otherData['asset_${transfer.asset}_amount'] =
|
||||
transfer.amount.toString();
|
||||
otherData['asset_${transfer.asset}_fee'] = fee.toString();
|
||||
otherData['asset_${transfer.asset}_fee'] = fee.raw.toString();
|
||||
if (transfer.extraData != null) {
|
||||
otherData['extraData_${transfer.asset}'] =
|
||||
transfer.extraData!.toJson();
|
||||
|
@ -518,6 +521,7 @@ class XelisWallet extends LibXelisWallet {
|
|||
}
|
||||
} else {
|
||||
// Skip unknown entry types
|
||||
continue;
|
||||
}
|
||||
|
||||
final txn = TransactionV2(
|
||||
|
@ -546,11 +550,12 @@ class XelisWallet extends LibXelisWallet {
|
|||
// );
|
||||
|
||||
txns.add(txn);
|
||||
} catch (_) {
|
||||
// Logging.instance.log(
|
||||
// "Error handling tx $jsonString: $e\n$s",
|
||||
// level: LogLevel.Warning,
|
||||
// );
|
||||
} catch (e, s) {
|
||||
Logging.instance.w(
|
||||
"Error in $runtimeType handling transaction: $jsonString",
|
||||
error: e,
|
||||
stackTrace: s,
|
||||
);
|
||||
}
|
||||
}
|
||||
await updateBalance();
|
||||
|
@ -599,7 +604,9 @@ class XelisWallet extends LibXelisWallet {
|
|||
final recipients =
|
||||
txData.recipients?.isNotEmpty == true
|
||||
? txData.recipients!
|
||||
: throw ArgumentError('Address cannot be empty.'); // in the future, support for multiple recipients will work.
|
||||
: throw ArgumentError(
|
||||
'Address cannot be empty.',
|
||||
); // in the future, support for multiple recipients will work.
|
||||
|
||||
final asset = assetId ?? xelis_sdk.xelisAsset;
|
||||
|
||||
|
@ -831,11 +838,12 @@ class XelisWallet extends LibXelisWallet {
|
|||
case HistorySynced(:final topoheight):
|
||||
await handleHistorySynced(topoheight);
|
||||
}
|
||||
} catch (_) {
|
||||
// Logging.instance.log(
|
||||
// "Error handling wallet event: $e\n$s",
|
||||
// level: LogLevel.Error,
|
||||
// );
|
||||
} catch (e, s) {
|
||||
Logging.instance.e(
|
||||
"Error in $runtimeType handleEvent($event)",
|
||||
error: e,
|
||||
stackTrace: s,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -859,11 +867,12 @@ class XelisWallet extends LibXelisWallet {
|
|||
// "New transaction processed: ${newTxIds.first}",
|
||||
// level: LogLevel.Info,
|
||||
// );
|
||||
} catch (_) {
|
||||
// Logging.instance.log(
|
||||
// "Error handling new transaction: $e\n$s",
|
||||
// level: LogLevel.Warning,
|
||||
// );
|
||||
} catch (e, s) {
|
||||
Logging.instance.e(
|
||||
"Error in $runtimeType handleNewTransaction($tx)",
|
||||
error: e,
|
||||
stackTrace: s,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -876,11 +885,12 @@ class XelisWallet extends LibXelisWallet {
|
|||
}
|
||||
|
||||
// TODO: Update asset balances if needed
|
||||
} catch (_) {
|
||||
// Logging.instance.log(
|
||||
// "Error handling balance change: $e\n$s",
|
||||
// level: LogLevel.Warning,
|
||||
// );
|
||||
} catch (e, s) {
|
||||
Logging.instance.e(
|
||||
"Error in $runtimeType handleBalanceChanged($event)",
|
||||
error: e,
|
||||
stackTrace: s,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -937,10 +947,7 @@ class XelisWallet extends LibXelisWallet {
|
|||
Future<void> handleNewAsset(xelis_sdk.AssetData asset) async {
|
||||
// TODO: Store asset information if needed
|
||||
// TODO: Update UI/state for new asset
|
||||
// Logging.instance.log(
|
||||
// "New asset detected: ${asset}",
|
||||
// level: LogLevel.Info,
|
||||
// );
|
||||
Logging.instance.d("New xelis asset detected: $asset");
|
||||
}
|
||||
|
||||
@override
|
||||
|
@ -961,11 +968,12 @@ class XelisWallet extends LibXelisWallet {
|
|||
),
|
||||
);
|
||||
}
|
||||
} catch (_) {
|
||||
// Logging.instance.log(
|
||||
// "Error in refresh(): $e\n$s",
|
||||
// level: LogLevel.Warning,
|
||||
// );
|
||||
} catch (e, s) {
|
||||
Logging.instance.e(
|
||||
"Error in $runtimeType refresh()",
|
||||
error: e,
|
||||
stackTrace: s,
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -32,10 +32,7 @@ enum XelisTableSize {
|
|||
}
|
||||
}
|
||||
|
||||
enum XelisWalletOpenType {
|
||||
create,
|
||||
restore
|
||||
}
|
||||
enum XelisWalletOpenType { create, restore }
|
||||
|
||||
class XelisTableState {
|
||||
final bool isGenerating;
|
||||
|
@ -263,11 +260,12 @@ abstract class LibXelisWallet<T extends ElectrumCurrency>
|
|||
case xelis_sdk.WalletEvent.historySynced:
|
||||
yield HistorySynced(json['data']['topoheight'] as int);
|
||||
}
|
||||
} catch (_) {
|
||||
// Logging.instance.log(
|
||||
// "Error processing wallet event: $e\n$s",
|
||||
// level: LogLevel.Error,
|
||||
// );
|
||||
} catch (e, s) {
|
||||
Logging.instance.e(
|
||||
"Error processing xelis wallet event: $rawData",
|
||||
error: e,
|
||||
stackTrace: s,
|
||||
);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
@ -287,23 +285,21 @@ abstract class LibXelisWallet<T extends ElectrumCurrency>
|
|||
Future<void> refresh({int? topoheight});
|
||||
|
||||
Future<void> connect() async {
|
||||
final node = getCurrentNode();
|
||||
try {
|
||||
_eventSubscription = convertRawEvents().listen(handleEvent);
|
||||
|
||||
final node = getCurrentNode();
|
||||
// Logging.instance.log(
|
||||
// "Connecting to node: ${node.host}:${node.port}",
|
||||
// level: LogLevel.Info,
|
||||
// );
|
||||
Logging.instance.i("Connecting to node: ${node.host}:${node.port}");
|
||||
await libXelisWallet!.onlineMode(
|
||||
daemonAddress: "${node.host}:${node.port}",
|
||||
);
|
||||
await super.refresh();
|
||||
} catch (_) {
|
||||
// Logging.instance.log(
|
||||
// "Error connecting to node: $e\n$s",
|
||||
// level: LogLevel.Error,
|
||||
// );
|
||||
} catch (e, s) {
|
||||
Logging.instance.e(
|
||||
"rethrowing error connecting to node: $node",
|
||||
error: e,
|
||||
stackTrace: s,
|
||||
);
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue