Skip to content

Commit e31c81c

Browse files
authored
Adjust tx load limit (MixinNetwork#310)
* bump mixin sdk to latest * adjust tx loadlimit * enable publish
1 parent 5705be8 commit e31c81c

File tree

10 files changed

+100
-98
lines changed

10 files changed

+100
-98
lines changed

.github/workflows/main.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,11 @@ jobs:
6060
- name: Build APP
6161
run: flutter build web --web-renderer html --release --base-href /mixin-wallet/
6262

63+
- name: Deploy
64+
uses: peaceiris/actions-gh-pages@v3
65+
if: ${{ github.ref == 'refs/heads/main' }}
66+
with:
67+
github_token: ${{ secrets.GITHUB_TOKEN }}
68+
publish_dir: ./build/web/
69+
force_orphan: true
70+

lib/db/dao/asset_dao.dart

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,22 @@ AssetResults$orderBy defaultOrderBy = (asset, _, c, __, f) {
2121
]);
2222
};
2323

24+
extension on sdk.Token {
25+
AssetsCompanion get asAssetsCompanion => AssetsCompanion(
26+
assetId: Value(assetId),
27+
symbol: Value(symbol),
28+
name: Value(name),
29+
iconUrl: Value(iconUrl),
30+
assetKey: Value(assetKey),
31+
priceBtc: Value(priceBtc),
32+
priceUsd: Value(priceUsd),
33+
chainId: Value(chainId),
34+
changeUsd: Value(changeUsd),
35+
changeBtc: Value(changeBtc),
36+
confirmations: Value(confirmations),
37+
);
38+
}
39+
2440
extension AssetConverter on sdk.Asset {
2541
AssetsCompanion get asAssetsCompanion => AssetsCompanion.insert(
2642
assetId: assetId,
@@ -72,11 +88,11 @@ class AssetDao extends DatabaseAccessor<MixinDatabase> with _$AssetDaoMixin {
7288
Future<void> deleteAsset(Asset asset) => delete(db.assets).delete(asset);
7389

7490
Future<void> insertAllOnConflictUpdateWithoutBalance(
75-
List<sdk.Asset> assets) async {
91+
List<sdk.Token> assets) async {
7692
await db.batch((batch) {
7793
batch.insertAllOnConflictUpdate(
7894
db.assets,
79-
assets.map((asset) => asset.asAssetsCompanionWithoutBalance).toList(),
95+
assets.map((asset) => asset.asAssetsCompanion).toList(),
8096
);
8197
});
8298
}

lib/service/app_services.dart

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class AppServices extends ChangeNotifier with EquatableMixin {
3535
client = sdk.Client(
3636
userId: credential.mixinId,
3737
sessionId: credential.sessionId,
38-
privateKey: credential.privateKey,
38+
sessionPrivateKey: sdk.Key.fromBase64(credential.privateKey),
3939
interceptors: interceptors,
4040
httpLogLevel: null,
4141
);
@@ -112,7 +112,7 @@ class AppServices extends ChangeNotifier with EquatableMixin {
112112
final client = sdk.Client(
113113
userId: data.mixinId,
114114
sessionId: data.sessionId,
115-
privateKey: data.privateKey,
115+
sessionPrivateKey: sdk.Key.fromBase64(data.privateKey),
116116
interceptors: interceptors,
117117
);
118118

@@ -542,12 +542,13 @@ class AppServices extends ChangeNotifier with EquatableMixin {
542542
Future<void> searchAndUpdateAsset(String keyword) async {
543543
if (keyword.isEmpty) return;
544544
final mixinResponse = await client.assetApi.queryAsset(keyword);
545-
final fixedAssets = <sdk.Asset>[];
546-
for (final a in mixinResponse.data) {
545+
final fixedAssets = <sdk.Token>[];
546+
for (var a in mixinResponse.data) {
547547
if (a.assetId == '47b13785-25e2-3c5c-ac6b-3713e9c31c22') {
548-
a.name = 'BitTorrent Old';
549-
// ignore: cascade_invocations
550-
a.symbol = 'BTTOLD';
548+
final json = a.toJson();
549+
json['symbol'] = 'BTTOLD';
550+
json['name'] = 'BitTorrent Old';
551+
a = sdk.Token.fromJson(json);
551552
}
552553
fixedAssets.add(a);
553554
}

lib/service/profile/profile_manager.dart

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import 'dart:async';
2+
import 'dart:convert';
23

34
import 'package:flutter/cupertino.dart';
45
import 'package:hive_flutter/hive_flutter.dart';
@@ -64,10 +65,9 @@ set lastSelectedAddress(String? value) =>
6465
class _AuthAdapter extends TypeAdapter<Auth?> {
6566
@override
6667
Auth? read(BinaryReader reader) {
67-
final map = reader.readMap();
68+
final json = reader.readString();
6869
try {
69-
return Auth.fromJson(map.map(
70-
(key, value) => MapEntry<String, dynamic>(key as String, value)));
70+
return Auth.fromJson(jsonDecode(json) as Map<String, dynamic>);
7171
} catch (error, stacktrace) {
7272
e('_AuthAdapter: read auth error: $error, $stacktrace');
7373
return null;
@@ -79,6 +79,10 @@ class _AuthAdapter extends TypeAdapter<Auth?> {
7979

8080
@override
8181
void write(BinaryWriter writer, Auth? obj) {
82-
writer.writeMap(obj?.toJson() ?? {});
82+
if (obj == null) {
83+
writer.writeString('');
84+
} else {
85+
writer.writeString(jsonEncode(obj));
86+
}
8387
}
8488
}

lib/ui/page/asset_detail.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ class _AssetSymbolSearch extends HookWidget {
5353
final response =
5454
await context.appServices.client.assetApi.queryAsset(symbol);
5555
await context.mixinDatabase.assetDao
56-
.insertAllOnConflictUpdate(response.data);
56+
.insertAllOnConflictUpdateWithoutBalance(response.data);
5757
return response.data.firstOrNull?.assetId;
5858
}, keys: [symbol]);
5959

lib/ui/page/swap.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,7 @@ class _Body extends HookWidget {
295295
final memo = buildMixSwapMemo(destAsset.value.assetId);
296296

297297
if (context.read<AuthProvider>().isLoginByCredential) {
298+
// ignore: deprecated_member_use
298299
final api = context.appServices.client.transferApi;
299300
final pinCode = await showPinVerifyDialog(context);
300301
if (pinCode == null) {

lib/ui/widget/dialog/transfer_bottom_sheet.dart

Lines changed: 17 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
import 'package:decimal/decimal.dart';
2-
import 'package:dio/dio.dart';
32
import 'package:flutter/material.dart';
4-
import 'package:mixin_bot_sdk_dart/mixin_bot_sdk_dart.dart' as sdk;
5-
import 'package:uuid/uuid.dart';
63

74
import '../../../db/mixin_database.dart';
8-
import '../../../service/profile/pin_session.dart';
95
import '../../../util/constants.dart';
106
import '../../../util/extension/extension.dart';
117
import '../../../util/pay/external_transfer_uri_parser.dart';
@@ -19,51 +15,23 @@ Future<bool> showTransferToAddressBottomSheet(
1915
required AssetResult feeAsset,
2016
required String amount,
2117
String? memo,
22-
}) async {
23-
final traceId = const Uuid().v4();
24-
25-
return _showTransferBottomSheet(
26-
context,
27-
_TransferVerifyBottomSheetBody(
28-
displayAddress: address.displayAddress(),
29-
asset: asset,
30-
amount: amount,
31-
description: _FeeText(
32-
address: address,
18+
}) async =>
19+
_showTransferBottomSheet(
20+
context,
21+
_TransferVerifyBottomSheetBody(
22+
displayAddress: address.displayAddress(),
3323
asset: asset,
34-
feeAsset: feeAsset,
35-
),
36-
addressLabel: address.label,
37-
verification: (context, pin) async {
38-
try {
39-
final api = context.appServices.client.transferApi;
40-
final response = await api.withdrawal(
41-
sdk.WithdrawalRequest(
42-
addressId: address.addressId,
43-
amount: amount,
44-
pin: encryptPin(context, pin)!,
45-
traceId: traceId,
46-
memo: memo,
47-
fee: address.fee,
48-
),
49-
);
50-
await context.appServices.mixinDatabase.snapshotDao
51-
.insertAll([response.data]);
52-
Navigator.of(context).pop(true);
53-
} on DioException catch (error) {
54-
final mixinError = error.optionMixinError;
55-
if (mixinError?.code == sdk.insufficientTransactionFee) {
56-
final message = context.l10n
57-
.errorInsufficientTransactionFeeWithAmount(
58-
'${address.fee} ${feeAsset.symbol}');
59-
throw ErrorWithFormattedMessage(message);
60-
} else {
61-
rethrow;
62-
}
63-
}
64-
},
65-
));
66-
}
24+
amount: amount,
25+
description: _FeeText(
26+
address: address,
27+
asset: asset,
28+
feeAsset: feeAsset,
29+
),
30+
addressLabel: address.label,
31+
verification: (context, pin) async {
32+
throw UnimplementedError();
33+
},
34+
));
6735

6836
Future<bool> showTransferToExternalUrlBottomSheet({
6937
required BuildContext context,
@@ -80,34 +48,7 @@ Future<bool> showTransferToExternalUrlBottomSheet({
8048
asset: asset,
8149
showWithdrawalWithPinTip: false,
8250
verification: (context, pin) async {
83-
try {
84-
final api = context.appServices.client.transferApi;
85-
final response = await api.withdrawal(
86-
sdk.WithdrawalRequest(
87-
assetId: asset.assetId,
88-
amount: transfer.amount,
89-
pin: encryptPin(context, pin)!,
90-
traceId: traceId,
91-
memo: transfer.memo,
92-
fee: fee,
93-
destination: transfer.destination,
94-
tag: null,
95-
),
96-
);
97-
await context.appServices.mixinDatabase.snapshotDao
98-
.insertAll([response.data]);
99-
Navigator.of(context).pop(true);
100-
} on DioException catch (error) {
101-
final mixinError = error.optionMixinError;
102-
if (mixinError?.code == sdk.insufficientTransactionFee) {
103-
final message = context.l10n
104-
.errorInsufficientTransactionFeeWithAmount(
105-
'$fee ${asset.chainSymbol}');
106-
throw ErrorWithFormattedMessage(message);
107-
} else {
108-
rethrow;
109-
}
110-
}
51+
throw UnimplementedError();
11152
},
11253
description: Text('${context.l10n.fee} $fee ${asset.chainSymbol}'),
11354
displayAddress: transfer.destination,

lib/ui/widget/transactions/transaction_list_controller.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import '../../../db/mixin_database.dart';
77
import '../../../util/logger.dart';
88
import 'transaction_list.dart';
99

10-
const _kLoadLimit = 5;
10+
const _kLoadLimit = 200;
1111

1212
class TransactionListController {
1313
TransactionListController(
@@ -37,7 +37,7 @@ class TransactionListController {
3737

3838
var _disposed = false;
3939

40-
Future<void> loadMoreItem() => _loadMoreItem(_pageSize);
40+
Future<void> loadMoreItem() => _loadMoreItem(200);
4141

4242
Future<void> _loadMoreItem(int limit) async {
4343
if (_loading) {
@@ -103,16 +103,16 @@ class TransactionListController {
103103
return;
104104
}
105105

106-
final moreNeedLoad = pageSize - _snapshotItems.length;
106+
final moreNeedLoad = pageSize > _snapshotItems.length;
107107
_pageSize = pageSize;
108108

109-
if (moreNeedLoad <= 0) {
109+
if (!moreNeedLoad) {
110110
return;
111111
}
112112
_autoFillTask?.cancel();
113113
_autoFillTask = Timer(const Duration(milliseconds: 800), () {
114114
_autoFillTask = null;
115-
_loadMoreItem(moreNeedLoad);
115+
loadMoreItem();
116116
});
117117
}
118118

pubspec.lock

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,14 @@ packages:
6262
url: "https://pub.dev"
6363
source: hosted
6464
version: "2.11.0"
65+
base_x:
66+
dependency: transitive
67+
description:
68+
name: base_x
69+
sha256: "519abcdafd637d4b6bd7e72fabd8f9264935f804b9b9f6c5d8411c7d52cbf8fd"
70+
url: "https://pub.dev"
71+
source: hosted
72+
version: "2.0.1"
6573
boolean_selector:
6674
dependency: transitive
6775
description:
@@ -295,6 +303,15 @@ packages:
295303
url: "https://pub.dev"
296304
source: hosted
297305
version: "0.3.1"
306+
edwards25519:
307+
dependency: "direct overridden"
308+
description:
309+
path: "."
310+
ref: "11aea6ee033099e5634f3b21558bf6e34cd3bec6"
311+
resolved-ref: "11aea6ee033099e5634f3b21558bf6e34cd3bec6"
312+
url: "https://github.com/boyan01/edwards25519.git"
313+
source: git
314+
version: "1.0.4"
298315
enum_to_string:
299316
dependency: transitive
300317
description:
@@ -599,10 +616,10 @@ packages:
599616
dependency: "direct main"
600617
description:
601618
name: mixin_bot_sdk_dart
602-
sha256: "86ea58291c4a0c408de1c3fcec9fa69f9b055d807ccd66d338f0169340f5c6fb"
619+
sha256: "639885724c4f9545590e3175b7237b8a50f0f747cb401847c3a7f746116eded4"
603620
url: "https://pub.dev"
604621
source: hosted
605-
version: "0.4.3"
622+
version: "1.2.6"
606623
mixswap_sdk_dart:
607624
dependency: "direct main"
608625
description:
@@ -952,6 +969,14 @@ packages:
952969
url: "https://pub.dev"
953970
source: hosted
954971
version: "0.7.2"
972+
thirds:
973+
dependency: transitive
974+
description:
975+
name: thirds
976+
sha256: c4b90a4e7f2deac52ebcf22dc7ebbc702578a063a739b3c31e4259a884abb951
977+
url: "https://pub.dev"
978+
source: hosted
979+
version: "0.2.0-alpha.1"
955980
timing:
956981
dependency: transitive
957982
description:

pubspec.yaml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ dependencies:
3333
flutter_localizations:
3434
sdk: flutter
3535

36-
mixin_bot_sdk_dart: ^0.4.3
36+
mixin_bot_sdk_dart: ^1.2.6
3737
very_good_analysis: ^6.0.0
3838
intl: ^0.19.0
3939
json_annotation: ^4.8.1
@@ -88,6 +88,12 @@ dev_dependencies:
8888
hive_generator: ^2.0.0
8989
envied_generator: ^0.5.2
9090

91+
dependency_overrides:
92+
edwards25519:
93+
git:
94+
url: https://github.com/boyan01/edwards25519.git
95+
ref: 11aea6ee033099e5634f3b21558bf6e34cd3bec6
96+
9197
# For information on the generic Dart part of this file, see the
9298
# following page: https://dart.dev/tools/pub/pubspec
9399

0 commit comments

Comments
 (0)