@@ -28,11 +28,11 @@ class BridgeValidator {
2828 required CoinsRepo coinsRepository,
2929 required DexRepository dexRepository,
3030 required KomodoDefiSdk sdk,
31- }) : _bloc = bloc,
32- _coinsRepo = coinsRepository,
33- _dexRepo = dexRepository,
34- _sdk = sdk,
35- _add = bloc.add;
31+ }) : _bloc = bloc,
32+ _coinsRepo = coinsRepository,
33+ _dexRepo = dexRepository,
34+ _sdk = sdk,
35+ _add = bloc.add;
3636
3737 final BridgeBloc _bloc;
3838 final CoinsRepo _coinsRepo;
@@ -71,32 +71,32 @@ class BridgeValidator {
7171 }
7272
7373 DexFormError ? _parsePreimageError (
74- DataFromService <TradePreimage , BaseError > preimageData) {
74+ DataFromService <TradePreimage , BaseError > preimageData,
75+ ) {
7576 final BaseError ? error = preimageData.error;
7677
7778 if (error is TradePreimageNotSufficientBalanceError ) {
7879 return _insufficientBalanceError (
79- Rational .parse (error.required ), error.coin);
80+ Rational .parse (error.required ),
81+ error.coin,
82+ );
8083 } else if (error is TradePreimageNotSufficientBaseCoinBalanceError ) {
8184 return _insufficientBalanceError (
82- Rational .parse (error.required ), error.coin);
83- } else if (error is TradePreimageTransportError ) {
84- return DexFormError (
85- error: LocaleKeys .notEnoughBalanceForGasError.tr (),
85+ Rational .parse (error.required ),
86+ error.coin,
8687 );
88+ } else if (error is TradePreimageTransportError ) {
89+ return DexFormError (error: LocaleKeys .notEnoughBalanceForGasError.tr ());
8790 } else if (error is TradePreimageVolumeTooLowError ) {
8891 return DexFormError (
89- error: LocaleKeys .lowTradeVolumeError
90- .tr (args: [formatAmt (double .parse (error.threshold)), error.coin]),
92+ error: LocaleKeys .lowTradeVolumeError.tr (
93+ args: [formatAmt (double .parse (error.threshold)), error.coin],
94+ ),
9195 );
9296 } else if (error != null ) {
93- return DexFormError (
94- error: error.message,
95- );
97+ return DexFormError (error: error.message);
9698 } else if (preimageData.data == null ) {
97- return DexFormError (
98- error: LocaleKeys .somethingWrong.tr (),
99- );
99+ return DexFormError (error: LocaleKeys .somethingWrong.tr ());
100100 }
101101
102102 return null ;
@@ -128,10 +128,15 @@ class BridgeValidator {
128128 _state.sellAmount,
129129 );
130130 } catch (e, s) {
131- log (e.toString (),
132- trace: s, path: 'bridge_validator::_getPreimageData' , isError: true );
131+ log (
132+ e.toString (),
133+ trace: s,
134+ path: 'bridge_validator::_getPreimageData' ,
135+ isError: true ,
136+ );
133137 return DataFromService (
134- error: TextError (error: 'Failed to request trade preimage' ));
138+ error: TextError (error: 'Failed to request trade preimage' ),
139+ );
135140 }
136141 }
137142
@@ -187,17 +192,17 @@ class BridgeValidator {
187192 if (availableBalance < maxOrderVolume && sellAmount > availableBalance) {
188193 final Rational minAmount = maxRational ([
189194 _state.minSellAmount ?? Rational .zero,
190- _state.bestOrder! .minVolume
195+ _state.bestOrder! .minVolume,
191196 ])! ;
192197
193198 if (availableBalance < minAmount) {
194- _add (BridgeSetError (
195- _insufficientBalanceError (minAmount, _state.sellCoin! .abbr),
196- ));
199+ _add (
200+ BridgeSetError (
201+ _insufficientBalanceError (minAmount, _state.sellCoin! .abbr),
202+ ),
203+ );
197204 } else {
198- _add (BridgeSetError (
199- _setMaxError (availableBalance),
200- ));
205+ _add (BridgeSetError (_setMaxError (availableBalance)));
201206 }
202207
203208 return false ;
@@ -218,9 +223,11 @@ class BridgeValidator {
218223 if (sellAmount < minAmount) {
219224 final Rational available = _state.maxSellAmount ?? Rational .zero;
220225 if (available < minAmount) {
221- _add (BridgeSetError (
222- _insufficientBalanceError (minAmount, _state.sellCoin! .abbr),
223- ));
226+ _add (
227+ BridgeSetError (
228+ _insufficientBalanceError (minAmount, _state.sellCoin! .abbr),
229+ ),
230+ );
224231 } else {
225232 _add (BridgeSetError (_setMinError (minAmount)));
226233 }
@@ -233,22 +240,17 @@ class BridgeValidator {
233240
234241 Future <bool > _validateCoinAndParent (String abbr) async {
235242 final coin = _sdk.getSdkAsset (abbr);
236- final enabledAssets = await _sdk.assets.getActivatedAssets ();
237- final isAssetEnabled = enabledAssets.contains (coin);
243+ final activatedAssetIds = await _coinsRepo.getActivatedAssetIds ();
238244 final parentId = coin.id.parentId;
239- final parent = _sdk.assets.available[parentId];
240245
241- if (! isAssetEnabled ) {
246+ if (! activatedAssetIds. contains (coin.id) ) {
242247 _add (BridgeSetError (_coinNotActiveError (coin.id.id)));
243248 return false ;
244249 }
245250
246- if (parent != null ) {
247- final isParentEnabled = enabledAssets.contains (parent);
248- if (! isParentEnabled) {
249- _add (BridgeSetError (_coinNotActiveError (parent.id.id)));
250- return false ;
251- }
251+ if (parentId != null && ! activatedAssetIds.contains (parentId)) {
252+ _add (BridgeSetError (_coinNotActiveError (parentId.id)));
253+ return false ;
252254 }
253255
254256 return true ;
@@ -262,7 +264,8 @@ class BridgeValidator {
262264
263265 final selectedOrderAddress = selectedOrder.address;
264266 final asset = _sdk.getSdkAsset (selectedOrder.coin);
265- final ownPubkeys = await _sdk.pubkeys.getPubkeys (asset);
267+ final cached = _sdk.pubkeys.lastKnown (asset.id);
268+ final ownPubkeys = cached ?? await _sdk.pubkeys.getPubkeys (asset);
266269 final ownAddresses = ownPubkeys.keys
267270 .where ((pubkeyInfo) => pubkeyInfo.isActiveForSwap)
268271 .map ((e) => e.address)
@@ -304,8 +307,9 @@ class BridgeValidator {
304307
305308 DexFormError _setOrderMaxError (Rational maxAmount) {
306309 return DexFormError (
307- error: LocaleKeys .dexMaxOrderVolume
308- .tr (args: [formatDexAmt (maxAmount), _state.sellCoin! .abbr]),
310+ error: LocaleKeys .dexMaxOrderVolume.tr (
311+ args: [formatDexAmt (maxAmount), _state.sellCoin! .abbr],
312+ ),
309313 type: DexFormErrorType .largerMaxSellVolume,
310314 action: DexFormErrorAction (
311315 text: LocaleKeys .setMax.tr (),
@@ -318,8 +322,9 @@ class BridgeValidator {
318322
319323 DexFormError _insufficientBalanceError (Rational required , String abbr) {
320324 return DexFormError (
321- error: LocaleKeys .dexBalanceNotSufficientError
322- .tr (args: [abbr, formatDexAmt (required ), abbr]),
325+ error: LocaleKeys .dexBalanceNotSufficientError.tr (
326+ args: [abbr, formatDexAmt (required ), abbr],
327+ ),
323328 );
324329 }
325330
@@ -341,20 +346,20 @@ class BridgeValidator {
341346 DexFormError _setMinError (Rational minAmount) {
342347 return DexFormError (
343348 type: DexFormErrorType .lessMinVolume,
344- error: LocaleKeys .dexMinSellAmountError
345- .tr (args: [formatDexAmt (minAmount), _state.sellCoin! .abbr]),
349+ error: LocaleKeys .dexMinSellAmountError.tr (
350+ args: [formatDexAmt (minAmount), _state.sellCoin! .abbr],
351+ ),
346352 action: DexFormErrorAction (
347- text: LocaleKeys .setMin.tr (),
348- callback: () async {
349- _add (BridgeSetSellAmount (minAmount));
350- }),
353+ text: LocaleKeys .setMin.tr (),
354+ callback: () async {
355+ _add (BridgeSetSellAmount (minAmount));
356+ },
357+ ),
351358 );
352359 }
353360
354361 DexFormError _tradingWithSelfError () {
355- return DexFormError (
356- error: LocaleKeys .dexTradingWithSelfError.tr (),
357- );
362+ return DexFormError (error: LocaleKeys .dexTradingWithSelfError.tr ());
358363 }
359364
360365 bool get _isSellCoinSelected => _state.sellCoin != null ;
0 commit comments