Skip to content

Commit edc19aa

Browse files
Merge pull request #1259 from cypherstack/feat/epicbox
custom epic box settings
2 parents 287afee + aa20a54 commit edc19aa

File tree

18 files changed

+2006
-144
lines changed

18 files changed

+2006
-144
lines changed

lib/db/hive/db.dart

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@
1111
import 'dart:isolate';
1212

1313
import 'package:compat/compat.dart' as lib_monero_compat;
14-
import 'package:hive_ce/src/hive_impl.dart';
1514
import 'package:hive_ce/hive.dart' show Box;
15+
import 'package:hive_ce/src/hive_impl.dart';
1616
import 'package:mutex/mutex.dart';
1717

1818
import '../../app_config.dart';
19+
import '../../models/epicbox_server_model.dart';
1920
import '../../models/exchange/response_objects/trade.dart';
2021
import '../../models/node_model.dart';
2122
import '../../models/notification_model.dart';
@@ -52,6 +53,8 @@ class DB {
5253
static const String boxNameDBInfo = "dbInfo";
5354
static const String boxNamePrefs = "prefs";
5455
static const String boxNameOneTimeDialogsShown = "oneTimeDialogsShown";
56+
static const String boxNameEpicBoxModels = "epicBoxModels";
57+
static const String boxNamePrimaryEpicBox = "primaryEpicBox";
5558

5659
String _boxNameTxCache({required CryptoCurrency currency}) =>
5760
"${currency.identifier}_txCache";
@@ -75,6 +78,8 @@ class DB {
7578
Box<dynamic>? _boxPrefs;
7679
Box<TradeWalletLookup>? _boxTradeLookup;
7780
Box<dynamic>? _boxDBInfo;
81+
late final Box<EpicBoxServerModel> _boxEpicBoxModels;
82+
late final Box<EpicBoxServerModel> _boxPrimaryEpicBoxes;
7883
// Box<String>? _boxDesktopData;
7984

8085
final Map<String, Box<dynamic>> _walletBoxes = {};
@@ -115,6 +120,24 @@ class DB {
115120
}
116121
await hive.openBox<String>(boxNameWalletsToDeleteOnStart);
117122

123+
if (hive.isBoxOpen(boxNameEpicBoxModels)) {
124+
_boxEpicBoxModels = hive.box<EpicBoxServerModel>(boxNameEpicBoxModels);
125+
} else {
126+
_boxEpicBoxModels = await hive.openBox<EpicBoxServerModel>(
127+
boxNameEpicBoxModels,
128+
);
129+
}
130+
131+
if (hive.isBoxOpen(boxNamePrimaryEpicBox)) {
132+
_boxPrimaryEpicBoxes = hive.box<EpicBoxServerModel>(
133+
boxNamePrimaryEpicBox,
134+
);
135+
} else {
136+
_boxPrimaryEpicBoxes = await hive.openBox<EpicBoxServerModel>(
137+
boxNamePrimaryEpicBox,
138+
);
139+
}
140+
118141
if (hive.isBoxOpen(boxNamePrefs)) {
119142
_boxPrefs = hive.box<dynamic>(boxNamePrefs);
120143
} else {

lib/main.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import 'db/hive/db.dart';
3333
import 'db/isar/main_db.dart';
3434
import 'db/special_migrations.dart';
3535
import 'db/sqlite/firo_cache.dart';
36+
import 'models/epicbox_server_model.dart';
3637
import 'models/exchange/change_now/exchange_transaction.dart';
3738
import 'models/exchange/change_now/exchange_transaction_status.dart';
3839
import 'models/exchange/response_objects/trade.dart';
@@ -155,6 +156,9 @@ void main(List<String> args) async {
155156
// node model adapter
156157
DB.instance.hive.registerAdapter(NodeModelAdapter());
157158

159+
// epicbox server model adapter
160+
DB.instance.hive.registerAdapter(EpicBoxServerModelAdapter());
161+
158162
if (!DB.instance.hive.isAdapterRegistered(
159163
lib_monero_compat.WalletInfoAdapter().typeId,
160164
)) {
@@ -390,6 +394,7 @@ class _MaterialAppWithThemeState extends ConsumerState<MaterialAppWithTheme>
390394
unawaited(ref.read(baseCurrenciesProvider).update());
391395

392396
await _nodeService.updateDefaults();
397+
await _nodeService.updateDefaultEpicBoxes();
393398
await _notificationsService.init(
394399
nodeService: _nodeService,
395400
tradesService: _tradesService,

lib/models/isar/models/blockchain_data/v2/transaction_v2.dart

Lines changed: 8 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,8 @@ class TransactionV2 {
277277
if (isConfirmed(currentChainHeight, minConfirms, minCoinbaseConfirms)) {
278278
return "Received";
279279
} else {
280-
if (numberOfMessages == 1) {
280+
if ((onChainNote == null && numberOfMessages == 1) |
281+
(onChainNote != null && numberOfMessages == 2)) {
281282
return "Receiving (waiting for sender)";
282283
} else if ((numberOfMessages ?? 0) > 1) {
283284
return "Receiving (waiting for confirmations)"; // TODO test if the sender still has to open again after the receiver has 2 messages present, ie. sender->receiver->sender->node (yes) vs. sender->receiver->node (no)
@@ -289,7 +290,8 @@ class TransactionV2 {
289290
if (isConfirmed(currentChainHeight, minConfirms, minCoinbaseConfirms)) {
290291
return "Sent (confirmed)";
291292
} else {
292-
if (numberOfMessages == 1) {
293+
if ((onChainNote == null && numberOfMessages == 1) |
294+
(onChainNote != null && numberOfMessages == 2)) {
293295
return "Sending (waiting for receiver)";
294296
} else if ((numberOfMessages ?? 0) > 1) {
295297
return "Sending (waiting for confirmations)";
@@ -311,7 +313,8 @@ class TransactionV2 {
311313
if (isConfirmed(currentChainHeight, minConfirms, minCoinbaseConfirms)) {
312314
return "Received";
313315
} else {
314-
if (numberOfMessages == 1) {
316+
if ((onChainNote == null && numberOfMessages == 1) |
317+
(onChainNote != null && numberOfMessages == 2)) {
315318
return "Receiving (waiting for sender)";
316319
} else if ((numberOfMessages ?? 0) > 1) {
317320
return "Receiving (waiting for confirmations)"; // TODO test if the sender still has to open again after the receiver has 2 messages present, ie. sender->receiver->sender->node (yes) vs. sender->receiver->node (no)
@@ -323,41 +326,8 @@ class TransactionV2 {
323326
if (isConfirmed(currentChainHeight, minConfirms, minCoinbaseConfirms)) {
324327
return "Sent (confirmed)";
325328
} else {
326-
if (numberOfMessages == 1) {
327-
return "Sending (waiting for receiver)";
328-
} else if ((numberOfMessages ?? 0) > 1) {
329-
return "Sending (waiting for confirmations)";
330-
} else {
331-
return "Sending ${prettyConfirms()}";
332-
}
333-
}
334-
}
335-
}
336-
337-
if (isMimblewimblecoinTransaction) {
338-
if (slateId == null) {
339-
return "Restored Funds";
340-
}
341-
342-
if (isCancelled) {
343-
return "Cancelled";
344-
} else if (type == TransactionType.incoming) {
345-
if (isConfirmed(currentChainHeight, minConfirms, minCoinbaseConfirms)) {
346-
return "Received";
347-
} else {
348-
if (numberOfMessages == 1) {
349-
return "Receiving (waiting for sender)";
350-
} else if ((numberOfMessages ?? 0) > 1) {
351-
return "Receiving (waiting for confirmations)"; // TODO test if the sender still has to open again after the receiver has 2 messages present, ie. sender->receiver->sender->node (yes) vs. sender->receiver->node (no)
352-
} else {
353-
return "Receiving ${prettyConfirms()}";
354-
}
355-
}
356-
} else if (type == TransactionType.outgoing) {
357-
if (isConfirmed(currentChainHeight, minConfirms, minCoinbaseConfirms)) {
358-
return "Sent (confirmed)";
359-
} else {
360-
if (numberOfMessages == 1) {
329+
if ((onChainNote == null && numberOfMessages == 1) |
330+
(onChainNote != null && numberOfMessages == 2)) {
361331
return "Sending (waiting for receiver)";
362332
} else if ((numberOfMessages ?? 0) > 1) {
363333
return "Sending (waiting for confirmations)";

lib/networking/http.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,12 @@ class HTTP {
2626
required Uri url,
2727
Map<String, String>? headers,
2828
required ({InternetAddress host, int port})? proxyInfo,
29+
Duration? connectionTimeout,
2930
}) async {
3031
final httpClient = HttpClient();
32+
if (connectionTimeout != null) {
33+
httpClient.connectionTimeout = connectionTimeout;
34+
}
3135
try {
3236
if (proxyInfo != null) {
3337
SocksTCPClient.assignToHttpClient(httpClient, [

lib/pages/send_view/confirm_transaction_view.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1181,7 +1181,7 @@ class _ConfirmTransactionViewState
11811181
children: [
11821182
if (coin is Epiccash || coin is Mimblewimblecoin)
11831183
Text(
1184-
"On chain Note (optional)",
1184+
"On chain Note",
11851185
style: STextStyles.smallMed12(context),
11861186
textAlign: TextAlign.left,
11871187
),

lib/pages/send_view/send_view.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2353,7 +2353,7 @@ class _SendViewState extends ConsumerState<SendView> {
23532353
const SizedBox(height: 12),
23542354
if (coin is Epiccash)
23552355
Text(
2356-
"On chain Note (optional)",
2356+
"On chain Note",
23572357
style: STextStyles.smallMed12(context),
23582358
textAlign: TextAlign.left,
23592359
),

0 commit comments

Comments
 (0)