Skip to content

Commit f7de742

Browse files
committed
implement optional import of xelis ffi package
1 parent 5f12db2 commit f7de742

8 files changed

Lines changed: 855 additions & 394 deletions

File tree

lib/main.dart

Lines changed: 4 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,6 @@ import 'package:keyboard_dismisser/keyboard_dismisser.dart';
2525
import 'package:logger/logger.dart';
2626
import 'package:path_provider/path_provider.dart';
2727
import 'package:window_size/window_size.dart';
28-
import 'package:xelis_flutter/src/api/api.dart' as xelis_api;
29-
import 'package:xelis_flutter/src/api/logger.dart' as xelis_logging;
30-
import 'package:xelis_flutter/src/frb_generated.dart' as xelis_rust;
3128

3229
import 'app_config.dart';
3330
import 'db/db_version_migration.dart';
@@ -79,45 +76,18 @@ import 'wallets/isar/providers/all_wallets_info_provider.dart';
7976
import 'wallets/wallet/wallet_mixin_interfaces/spark_interface.dart';
8077
import 'widgets/crypto_notifications.dart';
8178
import 'wl_gen/interfaces/cs_monero_interface.dart';
79+
import 'wl_gen/interfaces/lib_xelis_interface.dart';
8280

8381
final openedFromSWBFileStringStateProvider = StateProvider<String?>(
8482
(ref) => null,
8583
);
8684

87-
void startListeningToRustLogs() {
88-
xelis_api.createLogStream().listen(
89-
(logEntry) {
90-
final Level level;
91-
switch (logEntry.level) {
92-
case xelis_logging.Level.error:
93-
level = Level.error;
94-
case xelis_logging.Level.warn:
95-
level = Level.warning;
96-
case xelis_logging.Level.info:
97-
level = Level.info;
98-
case xelis_logging.Level.debug:
99-
level = Level.debug;
100-
case xelis_logging.Level.trace:
101-
level = Level.trace;
102-
}
103-
104-
Logging.instance.log(
105-
level,
106-
"[Xelis Rust Log] ${logEntry.tag}: ${logEntry.msg}",
107-
);
108-
},
109-
onError: (dynamic e) {
110-
Logging.instance.e("Error receiving Xelis Rust logs: $e");
111-
},
112-
);
113-
}
114-
11585
// main() is the entry point to the app. It initializes Hive (local database),
11686
// runs the MyApp widget and checks for new users, caching the value in the
11787
// miscellaneous box for later use
11888
void main(List<String> args) async {
11989
// talker.info('initializing Rust lib ...');
120-
await xelis_rust.RustLib.init();
90+
await libXelis.initRustLib();
12191
WidgetsFlutterBinding.ensureInitialized();
12292

12393
if (Util.isDesktop && args.length == 2 && args.first == "-d") {
@@ -205,8 +175,8 @@ void main(List<String> args) async {
205175
debugConsoleLevel: kDebugMode ? Level.trace : null,
206176
);
207177

208-
await xelis_api.setUpRustLogger();
209-
startListeningToRustLogs();
178+
await libXelis.setupRustLogger();
179+
libXelis.startListeningToRustLogs();
210180

211181
// setup lib spark logging
212182
initSparkLogging(Prefs.instance.logLevel);

lib/pages/add_wallet_views/restore_wallet_view/restore_wallet_view.dart

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import 'package:flutter/services.dart';
2121
import 'package:flutter_riverpod/flutter_riverpod.dart';
2222
import 'package:flutter_svg/flutter_svg.dart';
2323
import 'package:wakelock_plus/wakelock_plus.dart';
24-
import 'package:xelis_flutter/src/api/seed_search_engine.dart' as x_seed;
2524

2625
import '../../../notifications/show_flush_bar.dart';
2726
import '../../../pages_desktop_specific/desktop_home_view.dart';
@@ -62,6 +61,7 @@ import '../../../widgets/table_view/table_view.dart';
6261
import '../../../widgets/table_view/table_view_cell.dart';
6362
import '../../../widgets/table_view/table_view_row.dart';
6463
import '../../../wl_gen/interfaces/cs_monero_interface.dart';
64+
import '../../../wl_gen/interfaces/lib_xelis_interface.dart';
6565
import '../../home_view/home_view.dart';
6666
import '../add_token_view/edit_wallet_tokens_view.dart';
6767
import '../select_wallet_for_token_view.dart';
@@ -101,7 +101,6 @@ class _RestoreWalletViewState extends ConsumerState<RestoreWalletView> {
101101
late final int _seedWordCount;
102102
late final bool isDesktop;
103103

104-
x_seed.SearchEngine? _xelisSeedSearch;
105104
final HashSet<String> _wordListHashSet = HashSet.from(bip39wordlist.WORDLIST);
106105
final ScrollController controller = ScrollController();
107106

@@ -163,12 +162,6 @@ class _RestoreWalletViewState extends ConsumerState<RestoreWalletView> {
163162
// _focusNodes.add(FocusNode());
164163
}
165164

166-
if (widget.coin is Xelis) {
167-
_xelisSeedSearch = x_seed.SearchEngine.init(
168-
languageIndex: BigInt.from(0),
169-
);
170-
}
171-
172165
super.initState();
173166
}
174167

@@ -203,7 +196,7 @@ class _RestoreWalletViewState extends ConsumerState<RestoreWalletView> {
203196
return wowneroWordList.contains(word);
204197
}
205198
if (widget.coin is Xelis) {
206-
return _xelisSeedSearch!.search(query: word).length > 0;
199+
return libXelis.validateSeedWord(word);
207200
}
208201
return _wordListHashSet.contains(word);
209202
}

lib/providers/progress_report/xelis_table_progress_provider.dart

Lines changed: 4 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
import 'package:xelis_flutter/src/api/api.dart' as xelis_api;
21
import 'package:flutter_riverpod/flutter_riverpod.dart';
32

4-
import 'package:flutter/foundation.dart';
5-
import 'dart:math' as math;
3+
import '../../wl_gen/interfaces/lib_xelis_interface.dart';
64

75
enum XelisTableGenerationStep {
86
t1PointsGeneration,
@@ -47,32 +45,6 @@ class XelisTableProgressState {
4745
}
4846
}
4947

50-
final xelisTableProgressProvider = StreamProvider<XelisTableProgressState>((ref) {
51-
double lastPrintedProgress = 0.0;
52-
return xelis_api.createProgressReportStream().map((report) {
53-
return report.when(
54-
tableGeneration: (progress, step, _) {
55-
final currentStep = XelisTableGenerationStep.fromString(step);
56-
final stepIndex = switch(currentStep) {
57-
XelisTableGenerationStep.t1PointsGeneration => 0,
58-
XelisTableGenerationStep.t1CuckooSetup => 1,
59-
XelisTableGenerationStep.t2Table => 2,
60-
XelisTableGenerationStep.unknown => 0,
61-
};
62-
63-
if ((progress - lastPrintedProgress).abs() >= 0.05 ||
64-
currentStep != XelisTableGenerationStep.fromString(step) ||
65-
progress >= 0.99) {
66-
debugPrint("Xelis Table Generation: $step - ${progress*100.0}%");
67-
lastPrintedProgress = progress;
68-
}
69-
70-
return XelisTableProgressState(
71-
tableProgress: progress,
72-
currentStep: currentStep,
73-
);
74-
},
75-
misc: (_) => const XelisTableProgressState(),
76-
);
77-
});
78-
});
48+
final xelisTableProgressProvider = StreamProvider<XelisTableProgressState>(
49+
(ref) => libXelis.createProgressReportStream(),
50+
);

lib/wallets/crypto_currency/coins/xelis.dart

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
import 'package:xelis_flutter/src/api/utils.dart' as x_utils;
2-
31
import '../../../models/isar/models/blockchain_data/address.dart';
42
import '../../../models/node_model.dart';
53
import '../../../utilities/default_nodes.dart';
64
import '../../../utilities/enums/derive_path_type_enum.dart';
5+
import '../../../wl_gen/interfaces/lib_xelis_interface.dart';
76
import '../crypto_currency.dart';
87
import '../intermediate/electrum_currency.dart';
98

@@ -94,7 +93,7 @@ class Xelis extends ElectrumCurrency {
9493
@override
9594
bool validateAddress(String address) {
9695
try {
97-
return x_utils.isAddressValid(strAddress: address);
96+
return libXelis.isAddressValid(address: address);
9897
} catch (_) {
9998
return false;
10099
}

0 commit comments

Comments
 (0)