diff --git a/lib/db/db_version_migration.dart b/lib/db/db_version_migration.dart index ab2b8bcde1..ce35c6b4d2 100644 --- a/lib/db/db_version_migration.dart +++ b/lib/db/db_version_migration.dart @@ -170,12 +170,11 @@ class DbVersionMigrator with WalletDB { final count = await MainDB.instance.isar.addresses.count(); // add change/receiving tags to address labels for (var i = 0; i < count; i += 50) { - final addresses = - await MainDB.instance.isar.addresses - .where() - .offset(i) - .limit(50) - .findAll(); + final addresses = await MainDB.instance.isar.addresses + .where() + .offset(i) + .limit(50) + .findAll(); final List labels = []; for (final address in addresses) { @@ -203,14 +202,13 @@ class DbVersionMigrator with WalletDB { // update/create label if tags is not empty if (tags != null) { - isar_models.AddressLabel? label = - await MainDB.instance.isar.addressLabels - .where() - .addressStringWalletIdEqualTo( - address.value, - address.walletId, - ) - .findFirst(); + isar_models.AddressLabel? label = await MainDB + .instance + .isar + .addressLabels + .where() + .addressStringWalletIdEqualTo(address.value, address.walletId) + .findFirst(); if (label == null) { label = isar_models.AddressLabel( walletId: address.walletId, @@ -268,13 +266,12 @@ class DbVersionMigrator with WalletDB { Bitcoincash(CryptoCurrencyNetwork.main).identifier || info.coinIdentifier == Bitcoincash(CryptoCurrencyNetwork.test).identifier) { - final ids = - await MainDB.instance - .getAddresses(walletId) - .filter() - .typeEqualTo(isar_models.AddressType.p2sh) - .idProperty() - .findAll(); + final ids = await MainDB.instance + .getAddresses(walletId) + .filter() + .typeEqualTo(isar_models.AddressType.p2sh) + .idProperty() + .findAll(); await MainDB.instance.isar.writeTxn(() async { await MainDB.instance.isar.addresses.deleteAll(ids); @@ -421,17 +418,15 @@ class DbVersionMigrator with WalletDB { walletId: walletId, txid: tx.txid, timestamp: tx.timestamp, - type: - isIncoming - ? isar_models.TransactionType.incoming - : isar_models.TransactionType.outgoing, + type: isIncoming + ? isar_models.TransactionType.incoming + : isar_models.TransactionType.outgoing, subType: isar_models.TransactionSubType.none, amount: tx.amount, - amountString: - Amount( - rawValue: BigInt.from(tx.amount), - fractionDigits: epic.fractionDigits, - ).toJsonString(), + amountString: Amount( + rawValue: BigInt.from(tx.amount), + fractionDigits: epic.fractionDigits, + ).toJsonString(), fee: tx.fees, height: tx.height, isCancelled: tx.isCancelled, @@ -453,14 +448,12 @@ class DbVersionMigrator with WalletDB { publicKey: [], derivationIndex: isIncoming ? rcvIndex : -1, derivationPath: null, - type: - isIncoming - ? isar_models.AddressType.mimbleWimble - : isar_models.AddressType.unknown, - subType: - isIncoming - ? isar_models.AddressSubType.receiving - : isar_models.AddressSubType.unknown, + type: isIncoming + ? isar_models.AddressType.mimbleWimble + : isar_models.AddressType.unknown, + subType: isIncoming + ? isar_models.AddressSubType.receiving + : isar_models.AddressSubType.unknown, ); transactionsData.add(Tuple2(iTx, address)); } @@ -518,28 +511,25 @@ class DbVersionMigrator with WalletDB { final crypto = AppConfig.getCryptoCurrencyFor(info.coinIdentifier)!; for (var i = 0; i < count; i += 50) { - final txns = - await MainDB.instance - .getTransactions(walletId) - .offset(i) - .limit(50) - .findAll(); + final txns = await MainDB.instance + .getTransactions(walletId) + .offset(i) + .limit(50) + .findAll(); // migrate amount to serialized amount string - final txnsData = - txns - .map( - (tx) => Tuple2( - tx - ..amountString = - Amount( - rawValue: BigInt.from(tx.amount), - fractionDigits: crypto.fractionDigits, - ).toJsonString(), - tx.address.value, - ), - ) - .toList(); + final txnsData = txns + .map( + (tx) => Tuple2( + tx + ..amountString = Amount( + rawValue: BigInt.from(tx.amount), + fractionDigits: crypto.fractionDigits, + ).toJsonString(), + tx.address.value, + ), + ) + .toList(); // update db records await MainDB.instance.addNewTransactionData(txnsData, walletId); diff --git a/lib/electrumx_rpc/cached_electrumx_client.dart b/lib/electrumx_rpc/cached_electrumx_client.dart index 7c23af4010..cd027d844e 100644 --- a/lib/electrumx_rpc/cached_electrumx_client.dart +++ b/lib/electrumx_rpc/cached_electrumx_client.dart @@ -26,15 +26,13 @@ class CachedElectrumXClient { required ElectrumXClient electrumXClient, }) => CachedElectrumXClient(electrumXClient: electrumXClient); - String base64ToHex(String source) => - base64Decode( - LineSplitter.split(source).join(), - ).map((e) => e.toRadixString(16).padLeft(2, '0')).join(); + String base64ToHex(String source) => base64Decode( + LineSplitter.split(source).join(), + ).map((e) => e.toRadixString(16).padLeft(2, '0')).join(); - String base64ToReverseHex(String source) => - base64Decode( - LineSplitter.split(source).join(), - ).reversed.map((e) => e.toRadixString(16).padLeft(2, '0')).join(); + String base64ToReverseHex(String source) => base64Decode( + LineSplitter.split(source).join(), + ).reversed.map((e) => e.toRadixString(16).padLeft(2, '0')).join(); /// Call electrumx getTransaction on a per coin basis, storing the result in local db if not already there. /// diff --git a/lib/models/balance.dart b/lib/models/balance.dart index 9680412549..ef114ac9e0 100644 --- a/lib/models/balance.dart +++ b/lib/models/balance.dart @@ -41,11 +41,11 @@ class Balance { } String toJsonIgnoreCoin() => jsonEncode({ - "total": total.toJsonString(), - "spendable": spendable.toJsonString(), - "blockedTotal": blockedTotal.toJsonString(), - "pendingSpendable": pendingSpendable.toJsonString(), - }); + "total": total.toJsonString(), + "spendable": spendable.toJsonString(), + "blockedTotal": blockedTotal.toJsonString(), + "pendingSpendable": pendingSpendable.toJsonString(), + }); // need to fall back to parsing from int due to cached balances being previously // stored as int values instead of Amounts @@ -82,11 +82,11 @@ class Balance { } Map toMap() => { - "total": total, - "spendable": spendable, - "blockedTotal": blockedTotal, - "pendingSpendable": pendingSpendable, - }; + "total": total, + "spendable": spendable, + "blockedTotal": blockedTotal, + "pendingSpendable": pendingSpendable, + }; @override String toString() { diff --git a/lib/models/isar/models/blockchain_data/transaction.dart b/lib/models/isar/models/blockchain_data/transaction.dart index 3e43ffb219..f78a0f0970 100644 --- a/lib/models/isar/models/blockchain_data/transaction.dart +++ b/lib/models/isar/models/blockchain_data/transaction.dart @@ -218,14 +218,12 @@ class Transaction { slateId: json["slateId"] as String?, otherData: json["otherData"] as String?, nonce: json["nonce"] as int?, - inputs: - List.from( - json["inputs"] as List, - ).map((e) => Input.fromJsonString(e)).toList(), - outputs: - List.from( - json["outputs"] as List, - ).map((e) => Output.fromJsonString(e)).toList(), + inputs: List.from( + json["inputs"] as List, + ).map((e) => Input.fromJsonString(e)).toList(), + outputs: List.from( + json["outputs"] as List, + ).map((e) => Output.fromJsonString(e)).toList(), numberOfMessages: json["numberOfMessages"] as int, ); if (json["address"] == null) { diff --git a/lib/models/isar/models/ethereum/eth_contract.dart b/lib/models/isar/models/ethereum/eth_contract.dart index adaec31226..65536ea901 100644 --- a/lib/models/isar/models/ethereum/eth_contract.dart +++ b/lib/models/isar/models/ethereum/eth_contract.dart @@ -50,21 +50,16 @@ class EthContract extends Contract { List? walletIds, String? abi, String? otherData, - }) => - EthContract( - address: address ?? this.address, - name: name ?? this.name, - symbol: symbol ?? this.symbol, - decimals: decimals ?? this.decimals, - type: type ?? this.type, - abi: abi ?? this.abi, - )..id = id ?? this.id; + }) => EthContract( + address: address ?? this.address, + name: name ?? this.name, + symbol: symbol ?? this.symbol, + decimals: decimals ?? this.decimals, + type: type ?? this.type, + abi: abi ?? this.abi, + )..id = id ?? this.id; } // Used in Isar db and stored there as int indexes so adding/removing values // in this definition should be done extremely carefully in production -enum EthContractType { - unknown, - erc20, - erc721; -} +enum EthContractType { unknown, erc20, erc721 } diff --git a/lib/models/keys/view_only_wallet_data.dart b/lib/models/keys/view_only_wallet_data.dart index 92c23b082d..58ecc4d18e 100644 --- a/lib/models/keys/view_only_wallet_data.dart +++ b/lib/models/keys/view_only_wallet_data.dart @@ -4,11 +4,7 @@ import '../../wallets/wallet/wallet_mixin_interfaces/extended_keys_interface.dar import 'key_data_interface.dart'; // do not remove or change the order of these enum values -enum ViewOnlyWalletType { - cryptonote, - addressOnly, - xPub; -} +enum ViewOnlyWalletType { cryptonote, addressOnly, xPub } sealed class ViewOnlyWalletData with KeyDataInterface { @override @@ -16,9 +12,7 @@ sealed class ViewOnlyWalletData with KeyDataInterface { ViewOnlyWalletType get type; - ViewOnlyWalletData({ - required this.walletId, - }); + ViewOnlyWalletData({required this.walletId}); static ViewOnlyWalletData fromJsonEncodedString( String jsonEncodedString, { @@ -81,10 +75,10 @@ class CryptonoteViewOnlyWalletData extends ViewOnlyWalletData { @override String toJsonEncodedString() => jsonEncode({ - "type": type.index, - "address": address, - "privateViewKey": privateViewKey, - }); + "type": type.index, + "address": address, + "privateViewKey": privateViewKey, + }); } class AddressViewOnlyWalletData extends ViewOnlyWalletData { @@ -93,10 +87,7 @@ class AddressViewOnlyWalletData extends ViewOnlyWalletData { final String address; - AddressViewOnlyWalletData({ - required super.walletId, - required this.address, - }); + AddressViewOnlyWalletData({required super.walletId, required this.address}); static AddressViewOnlyWalletData fromJsonEncodedString( String jsonEncodedString, { @@ -112,10 +103,8 @@ class AddressViewOnlyWalletData extends ViewOnlyWalletData { } @override - String toJsonEncodedString() => jsonEncode({ - "type": type.index, - "address": address, - }); + String toJsonEncodedString() => + jsonEncode({"type": type.index, "address": address}); } class ExtendedKeysViewOnlyWalletData extends ViewOnlyWalletData { @@ -151,14 +140,9 @@ class ExtendedKeysViewOnlyWalletData extends ViewOnlyWalletData { @override String toJsonEncodedString() => jsonEncode({ - "type": type.index, - "xPubs": [ - ...xPubs.map( - (e) => { - "path": e.path, - "encoded": e.encoded, - }, - ), - ], - }); + "type": type.index, + "xPubs": [ + ...xPubs.map((e) => {"path": e.path, "encoded": e.encoded}), + ], + }); } diff --git a/lib/models/paynym/paynym_account.dart b/lib/models/paynym/paynym_account.dart index 4d44d43fc5..9982aeb3b9 100644 --- a/lib/models/paynym/paynym_account.dart +++ b/lib/models/paynym/paynym_account.dart @@ -37,24 +37,24 @@ class PaynymAccount { ); PaynymAccount.fromMap(Map map) - : nymID = map["nymID"] as String, - nymName = map["nymName"] as String, - segwit = map["segwit"] as bool, - codes = (map["codes"] as List) - .map((e) => PaynymCode.fromMap(Map.from(e as Map))) - .toList(), - followers = (map["followers"] as List) - .map( - (e) => PaynymAccountLite.fromMap( - Map.from(e as Map)), - ) - .toList(), - following = (map["following"] as List) - .map( - (e) => PaynymAccountLite.fromMap( - Map.from(e as Map)), - ) - .toList(); + : nymID = map["nymID"] as String, + nymName = map["nymName"] as String, + segwit = map["segwit"] as bool, + codes = (map["codes"] as List) + .map((e) => PaynymCode.fromMap(Map.from(e as Map))) + .toList(), + followers = (map["followers"] as List) + .map( + (e) => + PaynymAccountLite.fromMap(Map.from(e as Map)), + ) + .toList(), + following = (map["following"] as List) + .map( + (e) => + PaynymAccountLite.fromMap(Map.from(e as Map)), + ) + .toList(); PaynymAccount copyWith({ String? nymID, @@ -75,13 +75,13 @@ class PaynymAccount { } Map toMap() => { - "nymID": nymID, - "nymName": nymName, - "segwit": segwit, - "codes": codes.map((e) => e.toMap()), - "followers": followers.map((e) => e.toMap()), - "following": followers.map((e) => e.toMap()), - }; + "nymID": nymID, + "nymName": nymName, + "segwit": segwit, + "codes": codes.map((e) => e.toMap()), + "followers": followers.map((e) => e.toMap()), + "following": followers.map((e) => e.toMap()), + }; @override String toString() { diff --git a/lib/models/paynym/paynym_account_lite.dart b/lib/models/paynym/paynym_account_lite.dart index 694efb7788..e0d604243f 100644 --- a/lib/models/paynym/paynym_account_lite.dart +++ b/lib/models/paynym/paynym_account_lite.dart @@ -14,25 +14,20 @@ class PaynymAccountLite { final String code; final bool segwit; - PaynymAccountLite( - this.nymId, - this.nymName, - this.code, - this.segwit, - ); + PaynymAccountLite(this.nymId, this.nymName, this.code, this.segwit); PaynymAccountLite.fromMap(Map map) - : nymId = map["nymId"] as String, - nymName = map["nymName"] as String, - code = map["code"] as String, - segwit = map["segwit"] as bool; + : nymId = map["nymId"] as String, + nymName = map["nymName"] as String, + code = map["code"] as String, + segwit = map["segwit"] as bool; Map toMap() => { - "nymId": nymId, - "nymName": nymName, - "code": code, - "segwit": segwit, - }; + "nymId": nymId, + "nymName": nymName, + "code": code, + "segwit": segwit, + }; @override String toString() { diff --git a/lib/models/paynym/paynym_claim.dart b/lib/models/paynym/paynym_claim.dart index 0f1e66373a..0f67774195 100644 --- a/lib/models/paynym/paynym_claim.dart +++ b/lib/models/paynym/paynym_claim.dart @@ -15,13 +15,10 @@ class PaynymClaim { PaynymClaim(this.claimed, this.token); PaynymClaim.fromMap(Map map) - : claimed = map["claimed"] as String, - token = map["token"] as String; + : claimed = map["claimed"] as String, + token = map["token"] as String; - Map toMap() => { - "claimed": claimed, - "token": token, - }; + Map toMap() => {"claimed": claimed, "token": token}; @override String toString() { diff --git a/lib/networking/http.dart b/lib/networking/http.dart index 80ea57c370..d4381273d3 100644 --- a/lib/networking/http.dart +++ b/lib/networking/http.dart @@ -23,24 +23,16 @@ class HTTP { Future get({ required Uri url, Map? headers, - required ({ - InternetAddress host, - int port, - })? proxyInfo, + required ({InternetAddress host, int port})? proxyInfo, }) async { final httpClient = HttpClient(); try { if (proxyInfo != null) { SocksTCPClient.assignToHttpClient(httpClient, [ - ProxySettings( - proxyInfo.host, - proxyInfo.port, - ), + ProxySettings(proxyInfo.host, proxyInfo.port), ]); } - final HttpClientRequest request = await httpClient.getUrl( - url, - ); + final HttpClientRequest request = await httpClient.getUrl(url); if (headers != null) { headers.forEach((key, value) => request.headers.add(key, value)); @@ -48,10 +40,7 @@ class HTTP { final response = await request.close(); - return Response( - await _bodyBytes(response), - response.statusCode, - ); + return Response(await _bodyBytes(response), response.statusCode); } catch (e, s) { Logging.instance.w("HTTP.get() rethrew: ", error: e, stackTrace: s); rethrow; @@ -65,24 +54,16 @@ class HTTP { Map? headers, Object? body, Encoding? encoding, - required ({ - InternetAddress host, - int port, - })? proxyInfo, + required ({InternetAddress host, int port})? proxyInfo, }) async { final httpClient = HttpClient(); try { if (proxyInfo != null) { SocksTCPClient.assignToHttpClient(httpClient, [ - ProxySettings( - proxyInfo.host, - proxyInfo.port, - ), + ProxySettings(proxyInfo.host, proxyInfo.port), ]); } - final HttpClientRequest request = await httpClient.postUrl( - url, - ); + final HttpClientRequest request = await httpClient.postUrl(url); if (headers != null) { headers.forEach((key, value) => request.headers.add(key, value)); @@ -91,10 +72,7 @@ class HTTP { request.write(body); final response = await request.close(); - return Response( - await _bodyBytes(response), - response.statusCode, - ); + return Response(await _bodyBytes(response), response.statusCode); } catch (e, s) { Logging.instance.w("HTTP.post() rethrew: ", error: e, stackTrace: s); rethrow; @@ -110,9 +88,7 @@ class HTTP { (data) { bytes.addAll(data); }, - onDone: () => completer.complete( - Uint8List.fromList(bytes), - ), + onDone: () => completer.complete(Uint8List.fromList(bytes)), onError: (Object err, StackTrace s) => Logging.instance.e( "Http wrapper layer listen", error: err, diff --git a/lib/notifications/show_flush_bar.dart b/lib/notifications/show_flush_bar.dart index b955a41ec2..afe0330ccb 100644 --- a/lib/notifications/show_flush_bar.dart +++ b/lib/notifications/show_flush_bar.dart @@ -49,12 +49,7 @@ Future showFloatingFlushBar({ onTap?.call(); }, icon: iconAsset != null - ? SvgPicture.asset( - iconAsset, - height: 16, - width: 16, - color: fg, - ) + ? SvgPicture.asset(iconAsset, height: 16, width: 16, color: fg) : null, message: message, messageColor: fg, @@ -62,9 +57,7 @@ Future showFloatingFlushBar({ backgroundColor: bg, duration: duration, flushbarStyle: FlushbarStyle.FLOATING, - borderRadius: BorderRadius.circular( - Constants.size.circularBorderRadius, - ), + borderRadius: BorderRadius.circular(Constants.size.circularBorderRadius), margin: const EdgeInsets.all(20), maxWidth: 550, ); diff --git a/lib/pages/add_wallet_views/add_token_view/edit_wallet_tokens_view.dart b/lib/pages/add_wallet_views/add_token_view/edit_wallet_tokens_view.dart index b1f07cec75..c07b1bc6b2 100644 --- a/lib/pages/add_wallet_views/add_token_view/edit_wallet_tokens_view.dart +++ b/lib/pages/add_wallet_views/add_token_view/edit_wallet_tokens_view.dart @@ -96,11 +96,10 @@ class _EditWalletTokensViewState extends ConsumerState { } Future onNextPressed() async { - final selectedTokens = - tokenEntities - .where((e) => e.selected) - .map((e) => e.token.address) - .toList(); + final selectedTokens = tokenEntities + .where((e) => e.selected) + .map((e) => e.token.address) + .toList(); final ethWallet = ref.read(pWallets).getWallet(widget.walletId) as EthereumWallet; @@ -138,12 +137,11 @@ class _EditWalletTokensViewState extends ConsumerState { if (isDesktop) { contract = await showDialog( context: context, - builder: - (context) => const DesktopDialog( - maxWidth: 580, - maxHeight: 500, - child: AddCustomTokenView(), - ), + builder: (context) => const DesktopDialog( + maxWidth: 580, + maxHeight: 500, + child: AddCustomTokenView(), + ), ); } else { final result = await Navigator.of( @@ -175,8 +173,10 @@ class _EditWalletTokensViewState extends ConsumerState { _searchFieldController = TextEditingController(); _searchFocusNode = FocusNode(); - final contracts = - MainDB.instance.getEthContracts().sortByName().findAllSync(); + final contracts = MainDB.instance + .getEthContracts() + .sortByName() + .findAllSync(); if (contracts.isEmpty) { contracts.addAll(DefaultTokens.list); @@ -218,135 +218,129 @@ class _EditWalletTokensViewState extends ConsumerState { if (isDesktop) { return ConditionalParent( condition: !widget.isDesktopPopup, - builder: - (child) => DesktopScaffold( - appBar: DesktopAppBar( - isCompactHeight: false, - useSpacers: false, - leading: const AppBarBackButton(), - overlayCenter: Text( - walletName, - style: STextStyles.desktopSubtitleH2(context), - ), - trailing: - widget.contractsToMarkSelected == null - ? Padding( - padding: const EdgeInsets.only(right: 24), - child: SizedBox( - height: 56, - child: TextButton( - style: Theme.of(context) - .extension()! - .getSmallSecondaryEnabledButtonStyle(context), - onPressed: _addToken, - child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 30, - ), - child: Text( - "Add custom token", - style: - STextStyles.desktopButtonSmallSecondaryEnabled( - context, - ), + builder: (child) => DesktopScaffold( + appBar: DesktopAppBar( + isCompactHeight: false, + useSpacers: false, + leading: const AppBarBackButton(), + overlayCenter: Text( + walletName, + style: STextStyles.desktopSubtitleH2(context), + ), + trailing: widget.contractsToMarkSelected == null + ? Padding( + padding: const EdgeInsets.only(right: 24), + child: SizedBox( + height: 56, + child: TextButton( + style: Theme.of(context) + .extension()! + .getSmallSecondaryEnabledButtonStyle(context), + onPressed: _addToken, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 30), + child: Text( + "Add custom token", + style: + STextStyles.desktopButtonSmallSecondaryEnabled( + context, ), - ), - ), ), - ) - : null, - ), - body: SizedBox( - width: 480, - child: Column( - children: [ - const AddTokenText(isDesktop: true), - const SizedBox(height: 16), - Expanded( - child: RoundedWhiteContainer( - radiusMultiplier: 2, - padding: const EdgeInsets.only( - left: 20, - top: 20, - right: 20, - bottom: 0, ), - child: child, ), ), - const SizedBox(height: 26), - SizedBox( - height: 70, - width: 480, - child: PrimaryButton( - label: - widget.contractsToMarkSelected != null - ? "Save" - : "Next", - onPressed: onNextPressed, - ), + ) + : null, + ), + body: SizedBox( + width: 480, + child: Column( + children: [ + const AddTokenText(isDesktop: true), + const SizedBox(height: 16), + Expanded( + child: RoundedWhiteContainer( + radiusMultiplier: 2, + padding: const EdgeInsets.only( + left: 20, + top: 20, + right: 20, + bottom: 0, ), - const SizedBox(height: 32), - ], + child: child, + ), ), - ), + const SizedBox(height: 26), + SizedBox( + height: 70, + width: 480, + child: PrimaryButton( + label: widget.contractsToMarkSelected != null + ? "Save" + : "Next", + onPressed: onNextPressed, + ), + ), + const SizedBox(height: 32), + ], ), + ), + ), child: ConditionalParent( condition: widget.isDesktopPopup, - builder: - (child) => DesktopDialog( - maxHeight: 670, - child: Column( - mainAxisSize: MainAxisSize.min, + builder: (child) => DesktopDialog( + maxHeight: 670, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Padding( - padding: const EdgeInsets.only(left: 32), - child: Text( - "Edit tokens", - style: STextStyles.desktopH3(context), - ), - ), - const DesktopDialogCloseButton(), - ], - ), - Expanded( - child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 32, - vertical: 16, - ), - child: child, - ), - ), Padding( - padding: const EdgeInsets.symmetric(horizontal: 32), - child: Row( - children: [ - Expanded( - child: SecondaryButton( - label: "Add custom token", - buttonHeight: ButtonHeight.l, - onPressed: _addToken, - ), - ), - const SizedBox(width: 16), - Expanded( - child: PrimaryButton( - label: "Done", - buttonHeight: ButtonHeight.l, - onPressed: onNextPressed, - ), - ), - ], + padding: const EdgeInsets.only(left: 32), + child: Text( + "Edit tokens", + style: STextStyles.desktopH3(context), ), ), - const SizedBox(height: 32), + const DesktopDialogCloseButton(), ], ), - ), + Expanded( + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 32, + vertical: 16, + ), + child: child, + ), + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 32), + child: Row( + children: [ + Expanded( + child: SecondaryButton( + label: "Add custom token", + buttonHeight: ButtonHeight.l, + onPressed: _addToken, + ), + ), + const SizedBox(width: 16), + Expanded( + child: PrimaryButton( + label: "Done", + buttonHeight: ButtonHeight.l, + onPressed: onNextPressed, + ), + ), + ], + ), + ), + const SizedBox(height: 32), + ], + ), + ), child: Column( children: [ ClipRRect( @@ -366,49 +360,53 @@ class _EditWalletTokensViewState extends ConsumerState { style: STextStyles.desktopTextMedium( context, ).copyWith(height: 2), - decoration: standardInputDecoration( - "Search", - _searchFocusNode, - context, - ).copyWith( - contentPadding: const EdgeInsets.symmetric(vertical: 10), - prefixIcon: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 16, - // vertical: 20, - ), - child: SvgPicture.asset( - Assets.svg.search, - width: 24, - height: 24, - color: - Theme.of(context) + decoration: + standardInputDecoration( + "Search", + _searchFocusNode, + context, + ).copyWith( + contentPadding: const EdgeInsets.symmetric( + vertical: 10, + ), + prefixIcon: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16, + // vertical: 20, + ), + child: SvgPicture.asset( + Assets.svg.search, + width: 24, + height: 24, + color: Theme.of(context) .extension()! .textFieldDefaultSearchIconLeft, - ), - ), - suffixIcon: - _searchFieldController.text.isNotEmpty + ), + ), + suffixIcon: _searchFieldController.text.isNotEmpty ? Padding( - padding: const EdgeInsets.only(right: 10), - child: UnconstrainedBox( - child: Row( - children: [ - TextFieldIconButton( - child: const XIcon(width: 24, height: 24), - onTap: () async { - setState(() { - _searchFieldController.text = ""; - _searchTerm = ""; - }); - }, - ), - ], + padding: const EdgeInsets.only(right: 10), + child: UnconstrainedBox( + child: Row( + children: [ + TextFieldIconButton( + child: const XIcon( + width: 24, + height: 24, + ), + onTap: () async { + setState(() { + _searchFieldController.text = ""; + _searchTerm = ""; + }); + }, + ), + ], + ), ), - ), - ) + ) : null, - ), + ), ), ), const SizedBox(height: 12), @@ -427,8 +425,9 @@ class _EditWalletTokensViewState extends ConsumerState { } else { return Background( child: Scaffold( - backgroundColor: - Theme.of(context).extension()!.background, + backgroundColor: Theme.of( + context, + ).extension()!.background, appBar: AppBar( leading: AppBarBackButton( onPressed: () { @@ -443,14 +442,14 @@ class _EditWalletTokensViewState extends ConsumerState { child: AppBarIconButton( size: 36, shadows: const [], - color: - Theme.of(context).extension()!.background, + color: Theme.of( + context, + ).extension()!.background, icon: SvgPicture.asset( Assets.svg.circlePlusFilled, - color: - Theme.of( - context, - ).extension()!.topNavIconPrimary, + color: Theme.of( + context, + ).extension()!.topNavIconPrimary, width: 20, height: 20, ), @@ -480,49 +479,49 @@ class _EditWalletTokensViewState extends ConsumerState { enableSuggestions: !isDesktop, controller: _searchFieldController, focusNode: _searchFocusNode, - onChanged: - (value) => setState(() => _searchTerm = value), + onChanged: (value) => + setState(() => _searchTerm = value), style: STextStyles.field(context), - decoration: standardInputDecoration( - "Search", - _searchFocusNode, - context, - desktopMed: isDesktop, - ).copyWith( - prefixIcon: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 10, - vertical: 16, - ), - child: SvgPicture.asset( - Assets.svg.search, - width: 16, - height: 16, - ), - ), - suffixIcon: - _searchFieldController.text.isNotEmpty + decoration: + standardInputDecoration( + "Search", + _searchFocusNode, + context, + desktopMed: isDesktop, + ).copyWith( + prefixIcon: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 10, + vertical: 16, + ), + child: SvgPicture.asset( + Assets.svg.search, + width: 16, + height: 16, + ), + ), + suffixIcon: _searchFieldController.text.isNotEmpty ? Padding( - padding: const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - children: [ - TextFieldIconButton( - child: const XIcon(), - onTap: () async { - setState(() { - _searchFieldController.text = - ""; - _searchTerm = ""; - }); - }, - ), - ], + padding: const EdgeInsets.only(right: 0), + child: UnconstrainedBox( + child: Row( + children: [ + TextFieldIconButton( + child: const XIcon(), + onTap: () async { + setState(() { + _searchFieldController.text = + ""; + _searchTerm = ""; + }); + }, + ), + ], + ), ), - ), - ) + ) : null, - ), + ), ), ), const SizedBox(height: 10), @@ -535,10 +534,9 @@ class _EditWalletTokensViewState extends ConsumerState { ), const SizedBox(height: 16), PrimaryButton( - label: - widget.contractsToMarkSelected != null - ? "Save" - : "Next", + label: widget.contractsToMarkSelected != null + ? "Save" + : "Next", onPressed: onNextPressed, ), ], diff --git a/lib/pages/add_wallet_views/add_token_view/sub_widgets/add_token_list.dart b/lib/pages/add_wallet_views/add_token_view/sub_widgets/add_token_list.dart index 23bfb36c2d..eeb09404d4 100644 --- a/lib/pages/add_wallet_views/add_token_view/sub_widgets/add_token_list.dart +++ b/lib/pages/add_wallet_views/add_token_view/sub_widgets/add_token_list.dart @@ -38,16 +38,12 @@ class AddTokenList extends StatelessWidget { mainAxisSize: MainAxisSize.min, children: [ child, - AddCustomTokenSelector( - addFunction: addFunction!, - ), + AddCustomTokenSelector(addFunction: addFunction!), ], ), child: Padding( padding: const EdgeInsets.symmetric(vertical: 4), - child: AddTokenListElement( - data: items[index], - ), + child: AddTokenListElement(data: items[index]), ), ); }, diff --git a/lib/pages/add_wallet_views/add_token_view/sub_widgets/add_token_list_element.dart b/lib/pages/add_wallet_views/add_token_view/sub_widgets/add_token_list_element.dart index a477c57691..9323f23efc 100644 --- a/lib/pages/add_wallet_views/add_token_view/sub_widgets/add_token_list_element.dart +++ b/lib/pages/add_wallet_views/add_token_view/sub_widgets/add_token_list_element.dart @@ -53,18 +53,14 @@ class _AddTokenListElementState extends ConsumerState { super.initState(); ExchangeDataLoadingService.instance.isar.then((isar) async { - final currency = - await isar.currencies - .where() - .exchangeNameEqualTo(ChangeNowExchange.exchangeName) - .filter() - .tokenContractEqualTo( - widget.data.token.address, - caseSensitive: false, - ) - .and() - .imageIsNotEmpty() - .findFirst(); + final currency = await isar.currencies + .where() + .exchangeNameEqualTo(ChangeNowExchange.exchangeName) + .filter() + .tokenContractEqualTo(widget.data.token.address, caseSensitive: false) + .and() + .imageIsNotEmpty() + .findFirst(); if (mounted) { WidgetsBinding.instance.addPostFrameCallback((_) { @@ -85,10 +81,9 @@ class _AddTokenListElementState extends ConsumerState { return RoundedWhiteContainer( padding: EdgeInsets.all(isDesktop ? 16 : 12), - borderColor: - isDesktop - ? Theme.of(context).extension()!.backgroundAppBar - : null, + borderColor: isDesktop + ? Theme.of(context).extension()!.backgroundAppBar + : null, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ @@ -96,45 +91,41 @@ class _AddTokenListElementState extends ConsumerState { children: [ currency != null ? SvgPicture.network( - currency!.image, - width: iconSize, - height: iconSize, - placeholderBuilder: - (_) => AppIcon(width: iconSize, height: iconSize), - ) + currency!.image, + width: iconSize, + height: iconSize, + placeholderBuilder: (_) => + AppIcon(width: iconSize, height: iconSize), + ) : SvgPicture.asset( - widget.data.token.symbol == "BNB" - ? Assets.svg.bnbIcon - : Assets.svg.ethereum, - width: iconSize, - height: iconSize, - ), + widget.data.token.symbol == "BNB" + ? Assets.svg.bnbIcon + : Assets.svg.ethereum, + width: iconSize, + height: iconSize, + ), const SizedBox(width: 12), ConditionalParent( condition: isDesktop, - builder: - (child) => Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - child, - const SizedBox(height: 2), - Text( - widget.data.token.symbol, - style: STextStyles.desktopTextExtraExtraSmall( - context, - ), - overflow: TextOverflow.ellipsis, - ), - ], + builder: (child) => Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + child, + const SizedBox(height: 2), + Text( + widget.data.token.symbol, + style: STextStyles.desktopTextExtraExtraSmall(context), + overflow: TextOverflow.ellipsis, ), + ], + ), child: Text( isDesktop ? mainLabel : "$mainLabel (${widget.data.token.symbol})", - style: - isDesktop - ? STextStyles.desktopTextSmall(context) - : STextStyles.w600_14(context), + style: isDesktop + ? STextStyles.desktopTextSmall(context) + : STextStyles.w600_14(context), overflow: TextOverflow.ellipsis, ), ), @@ -143,21 +134,20 @@ class _AddTokenListElementState extends ConsumerState { const SizedBox(width: 4), isDesktop ? Checkbox( - value: widget.data.selected, - onChanged: - (newValue) => - setState(() => widget.data.selected = newValue!), - ) + value: widget.data.selected, + onChanged: (newValue) => + setState(() => widget.data.selected = newValue!), + ) : SizedBox( - height: 20, - width: 40, - child: DraggableSwitchButton( - isOn: widget.data.selected, - onValueChanged: (newValue) { - widget.data.selected = newValue; - }, + height: 20, + width: 40, + child: DraggableSwitchButton( + isOn: widget.data.selected, + onValueChanged: (newValue) { + widget.data.selected = newValue; + }, + ), ), - ), ], ), ); diff --git a/lib/pages/add_wallet_views/add_wallet_view/add_wallet_view.dart b/lib/pages/add_wallet_views/add_wallet_view/add_wallet_view.dart index 4d289a4662..7e591ed2bb 100644 --- a/lib/pages/add_wallet_views/add_wallet_view/add_wallet_view.dart +++ b/lib/pages/add_wallet_views/add_wallet_view/add_wallet_view.dart @@ -96,12 +96,11 @@ class _AddWalletViewState extends ConsumerState { if (isDesktop) { contract = await showDialog( context: context, - builder: - (context) => const DesktopDialog( - maxWidth: 580, - maxHeight: 500, - child: AddCustomTokenView(), - ), + builder: (context) => const DesktopDialog( + maxWidth: 580, + maxHeight: 500, + child: AddCustomTokenView(), + ), ); } else { contract = await Navigator.of( @@ -137,8 +136,10 @@ class _AddWalletViewState extends ConsumerState { } if (AppConfig.coins.whereType().isNotEmpty) { - final contracts = - MainDB.instance.getEthContracts().sortByName().findAllSync(); + final contracts = MainDB.instance + .getEthContracts() + .sortByName() + .findAllSync(); if (contracts.isEmpty) { contracts.addAll(DefaultTokens.list); @@ -219,57 +220,58 @@ class _AddWalletViewState extends ConsumerState { style: STextStyles.desktopTextMedium( context, ).copyWith(height: 2), - decoration: standardInputDecoration( - "Search", - _searchFocusNode, - context, - ).copyWith( - contentPadding: const EdgeInsets.symmetric( - vertical: 10, - ), - prefixIcon: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 16, - // vertical: 20, - ), - child: SvgPicture.asset( - Assets.svg.search, - width: 24, - height: 24, - color: - Theme.of(context) + decoration: + standardInputDecoration( + "Search", + _searchFocusNode, + context, + ).copyWith( + contentPadding: const EdgeInsets.symmetric( + vertical: 10, + ), + prefixIcon: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16, + // vertical: 20, + ), + child: SvgPicture.asset( + Assets.svg.search, + width: 24, + height: 24, + color: Theme.of(context) .extension()! .textFieldDefaultSearchIconLeft, - ), - ), - suffixIcon: - _searchFieldController.text.isNotEmpty + ), + ), + suffixIcon: + _searchFieldController.text.isNotEmpty ? Padding( - padding: const EdgeInsets.only( - right: 10, - ), - child: UnconstrainedBox( - child: Row( - children: [ - TextFieldIconButton( - child: const XIcon( - width: 24, - height: 24, + padding: const EdgeInsets.only( + right: 10, + ), + child: UnconstrainedBox( + child: Row( + children: [ + TextFieldIconButton( + child: const XIcon( + width: 24, + height: 24, + ), + onTap: () async { + setState(() { + _searchFieldController + .text = + ""; + _searchTerm = ""; + }); + }, ), - onTap: () async { - setState(() { - _searchFieldController - .text = ""; - _searchTerm = ""; - }); - }, - ), - ], + ], + ), ), - ), - ) + ) : null, - ), + ), ), ), ), @@ -327,8 +329,9 @@ class _AddWalletViewState extends ConsumerState { } else { return Background( child: Scaffold( - backgroundColor: - Theme.of(context).extension()!.background, + backgroundColor: Theme.of( + context, + ).extension()!.background, appBar: AppBar( leading: AppBarBackButton( onPressed: () { @@ -360,49 +363,53 @@ class _AddWalletViewState extends ConsumerState { enableSuggestions: !isDesktop, controller: _searchFieldController, focusNode: _searchFocusNode, - onChanged: - (value) => setState(() => _searchTerm = value), + onChanged: (value) => + setState(() => _searchTerm = value), style: STextStyles.field(context), - decoration: standardInputDecoration( - "Search", - _searchFocusNode, - context, - desktopMed: isDesktop, - ).copyWith( - prefixIcon: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 10, - vertical: 16, - ), - child: SvgPicture.asset( - Assets.svg.search, - width: 16, - height: 16, - ), - ), - suffixIcon: - _searchFieldController.text.isNotEmpty + decoration: + standardInputDecoration( + "Search", + _searchFocusNode, + context, + desktopMed: isDesktop, + ).copyWith( + prefixIcon: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 10, + vertical: 16, + ), + child: SvgPicture.asset( + Assets.svg.search, + width: 16, + height: 16, + ), + ), + suffixIcon: + _searchFieldController.text.isNotEmpty ? Padding( - padding: const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - children: [ - TextFieldIconButton( - child: const XIcon(), - onTap: () async { - setState(() { - _searchFieldController.text = - ""; - _searchTerm = ""; - }); - }, - ), - ], + padding: const EdgeInsets.only( + right: 0, ), - ), - ) + child: UnconstrainedBox( + child: Row( + children: [ + TextFieldIconButton( + child: const XIcon(), + onTap: () async { + setState(() { + _searchFieldController + .text = + ""; + _searchTerm = ""; + }); + }, + ), + ], + ), + ), + ) : null, - ), + ), ), ), ), diff --git a/lib/pages/add_wallet_views/add_wallet_view/sub_widgets/coin_select_item.dart b/lib/pages/add_wallet_views/add_wallet_view/sub_widgets/coin_select_item.dart index 72adf390bb..48d094a599 100644 --- a/lib/pages/add_wallet_views/add_wallet_view/sub_widgets/coin_select_item.dart +++ b/lib/pages/add_wallet_views/add_wallet_view/sub_widgets/coin_select_item.dart @@ -46,18 +46,17 @@ class _CoinSelectItemState extends ConsumerState { if (widget.entity is EthTokenEntity) { ExchangeDataLoadingService.instance.isar.then((isar) async { - final currency = - await isar.currencies - .where() - .exchangeNameEqualTo(ChangeNowExchange.exchangeName) - .filter() - .tokenContractEqualTo( - (widget.entity as EthTokenEntity).token.address, - caseSensitive: false, - ) - .and() - .imageIsNotEmpty() - .findFirst(); + final currency = await isar.currencies + .where() + .exchangeNameEqualTo(ChangeNowExchange.exchangeName) + .filter() + .tokenContractEqualTo( + (widget.entity as EthTokenEntity).token.address, + caseSensitive: false, + ) + .and() + .imageIsNotEmpty() + .findFirst(); if (mounted) { WidgetsBinding.instance.addPostFrameCallback((_) { @@ -81,10 +80,9 @@ class _CoinSelectItemState extends ConsumerState { return Container( decoration: BoxDecoration( - color: - selectedEntity == widget.entity - ? Theme.of(context).extension()!.textFieldActiveBG - : Theme.of(context).extension()!.popupBG, + color: selectedEntity == widget.entity + ? Theme.of(context).extension()!.textFieldActiveBG + : Theme.of(context).extension()!.popupBG, borderRadius: BorderRadius.circular( Constants.size.circularBorderRadius, ), @@ -93,10 +91,9 @@ class _CoinSelectItemState extends ConsumerState { key: Key( "coinSelectItemButtonKey_${widget.entity.name}${widget.entity.ticker}", ), - padding: - isDesktop - ? const EdgeInsets.only(left: 24) - : const EdgeInsets.all(12), + padding: isDesktop + ? const EdgeInsets.only(left: 24) + : const EdgeInsets.all(12), materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular( @@ -110,21 +107,20 @@ class _CoinSelectItemState extends ConsumerState { tokenImageUri != null ? SvgPicture.network(tokenImageUri!, width: 26, height: 26) : SvgPicture.file( - File( - ref.watch(coinIconProvider(widget.entity.cryptoCurrency)), + File( + ref.watch( + coinIconProvider(widget.entity.cryptoCurrency), + ), + ), + width: 26, + height: 26, ), - width: 26, - height: 26, - ), SizedBox(width: isDesktop ? 12 : 10), Text( "${widget.entity.name} (${widget.entity.ticker})", - style: - isDesktop - ? STextStyles.desktopTextMedium(context) - : STextStyles.subtitle600( - context, - ).copyWith(fontSize: 14), + style: isDesktop + ? STextStyles.desktopTextMedium(context) + : STextStyles.subtitle600(context).copyWith(fontSize: 14), ), if (isDesktop && selectedEntity == widget.entity) const Spacer(), if (isDesktop && selectedEntity == widget.entity) @@ -135,10 +131,9 @@ class _CoinSelectItemState extends ConsumerState { height: 24, child: SvgPicture.asset( Assets.svg.check, - color: - Theme.of( - context, - ).extension()!.accentColorDark, + color: Theme.of( + context, + ).extension()!.accentColorDark, ), ), ), diff --git a/lib/pages/add_wallet_views/add_wallet_view/sub_widgets/next_button.dart b/lib/pages/add_wallet_views/add_wallet_view/sub_widgets/next_button.dart index 4447cc7a9f..cf18fd23c2 100644 --- a/lib/pages/add_wallet_views/add_wallet_view/sub_widgets/next_button.dart +++ b/lib/pages/add_wallet_views/add_wallet_view/sub_widgets/next_button.dart @@ -18,18 +18,16 @@ import '../../../../themes/stack_colors.dart'; import '../../../../utilities/text_styles.dart'; class AddWalletNextButton extends ConsumerWidget { - const AddWalletNextButton({ - super.key, - required this.isDesktop, - }); + const AddWalletNextButton({super.key, required this.isDesktop}); final bool isDesktop; @override Widget build(BuildContext context, WidgetRef ref) { debugPrint("BUILD: NextButton"); - final selectedCoin = - ref.watch(addWalletSelectedEntityStateProvider.state).state; + final selectedCoin = ref + .watch(addWalletSelectedEntityStateProvider.state) + .state; final enabled = selectedCoin != null; @@ -50,18 +48,18 @@ class AddWalletNextButton extends ConsumerWidget { } }, style: enabled - ? Theme.of(context) - .extension()! - .getPrimaryEnabledButtonStyle(context) - : Theme.of(context) - .extension()! - .getPrimaryDisabledButtonStyle(context), + ? Theme.of( + context, + ).extension()!.getPrimaryEnabledButtonStyle(context) + : Theme.of( + context, + ).extension()!.getPrimaryDisabledButtonStyle(context), child: Text( "Next", style: isDesktop ? enabled - ? STextStyles.desktopButtonEnabled(context) - : STextStyles.desktopButtonDisabled(context) + ? STextStyles.desktopButtonEnabled(context) + : STextStyles.desktopButtonDisabled(context) : STextStyles.button(context), ), ); diff --git a/lib/pages/add_wallet_views/new_wallet_options/new_wallet_options_view.dart b/lib/pages/add_wallet_views/new_wallet_options/new_wallet_options_view.dart index bfe41c3feb..53e4797984 100644 --- a/lib/pages/add_wallet_views/new_wallet_options/new_wallet_options_view.dart +++ b/lib/pages/add_wallet_views/new_wallet_options/new_wallet_options_view.dart @@ -27,19 +27,16 @@ import '../new_wallet_recovery_phrase_warning_view/new_wallet_recovery_phrase_wa import '../restore_wallet_view/restore_options_view/sub_widgets/mobile_mnemonic_length_selector.dart'; import '../restore_wallet_view/sub_widgets/mnemonic_word_count_select_sheet.dart'; -final pNewWalletOptions = StateProvider< - ({ - String mnemonicPassphrase, - int mnemonicWordsCount, - bool convertToViewOnly, - })?>( - (ref) => null, -); +final pNewWalletOptions = + StateProvider< + ({ + String mnemonicPassphrase, + int mnemonicWordsCount, + bool convertToViewOnly, + })? + >((ref) => null); -enum NewWalletOptions { - Default, - Advanced; -} +enum NewWalletOptions { Default, Advanced } class NewWalletOptionsView extends ConsumerStatefulWidget { const NewWalletOptionsView({ @@ -94,17 +91,15 @@ class _NewWalletOptionsViewState extends ConsumerState { leading: AppBarBackButton(), trailing: ExitToMyStackButton(), ), - body: SizedBox( - width: 480, - child: child, - ), + body: SizedBox(width: 480, child: child), ), child: ConditionalParent( condition: !Util.isDesktop, builder: (child) => Background( child: Scaffold( - backgroundColor: - Theme.of(context).extension()!.background, + backgroundColor: Theme.of( + context, + ).extension()!.background, appBar: AppBar( leading: const AppBarBackButton(), title: Text( @@ -135,20 +130,10 @@ class _NewWalletOptionsViewState extends ConsumerState { ), child: Column( children: [ - if (Util.isDesktop) - const Spacer( - flex: 10, - ), + if (Util.isDesktop) const Spacer(flex: 10), + if (!Util.isDesktop) const SizedBox(height: 16), if (!Util.isDesktop) - const SizedBox( - height: 16, - ), - if (!Util.isDesktop) - CoinImage( - coin: widget.coin, - height: 100, - width: 100, - ), + CoinImage(coin: widget.coin, height: 100, width: 100), if (Util.isDesktop) Text( "Wallet options", @@ -157,9 +142,7 @@ class _NewWalletOptionsViewState extends ConsumerState { ? STextStyles.desktopH2(context) : STextStyles.pageTitleH1(context), ), - SizedBox( - height: Util.isDesktop ? 32 : 16, - ), + SizedBox(height: Util.isDesktop ? 32 : 16), DropdownButtonHideUnderline( child: DropdownButton2( value: _selectedOptions, @@ -187,34 +170,29 @@ class _NewWalletOptionsViewState extends ConsumerState { Assets.svg.chevronDown, width: 12, height: 6, - color: Theme.of(context) - .extension()! - .textFieldActiveSearchIconRight, + color: Theme.of( + context, + ).extension()!.textFieldActiveSearchIconRight, ), ), dropdownStyleData: DropdownStyleData( offset: const Offset(0, -10), elevation: 0, decoration: BoxDecoration( - color: Theme.of(context) - .extension()! - .textFieldDefaultBG, + color: Theme.of( + context, + ).extension()!.textFieldDefaultBG, borderRadius: BorderRadius.circular( Constants.size.circularBorderRadius, ), ), ), menuItemStyleData: const MenuItemStyleData( - padding: EdgeInsets.symmetric( - horizontal: 16, - vertical: 8, - ), + padding: EdgeInsets.symmetric(horizontal: 16, vertical: 8), ), ), ), - const SizedBox( - height: 24, - ), + const SizedBox(height: 24), if (_selectedOptions == NewWalletOptions.Advanced) Column( children: [ @@ -238,8 +216,9 @@ class _NewWalletOptionsViewState extends ConsumerState { onChanged: (value) { if (value is int) { ref - .read(mnemonicWordCountStateProvider.state) - .state = value; + .read(mnemonicWordCountStateProvider.state) + .state = + value; } }, isExpanded: true, @@ -257,9 +236,9 @@ class _NewWalletOptionsViewState extends ConsumerState { offset: const Offset(0, -10), elevation: 0, decoration: BoxDecoration( - color: Theme.of(context) - .extension()! - .textFieldDefaultBG, + color: Theme.of( + context, + ).extension()!.textFieldDefaultBG, borderRadius: BorderRadius.circular( Constants.size.circularBorderRadius, ), @@ -293,9 +272,7 @@ class _NewWalletOptionsViewState extends ConsumerState { }, ), if (widget.coin.hasMnemonicPassphraseSupport) - const SizedBox( - height: 24, - ), + const SizedBox(height: 24), if (widget.coin.hasMnemonicPassphraseSupport) RoundedWhiteContainer( child: Center( @@ -303,20 +280,19 @@ class _NewWalletOptionsViewState extends ConsumerState { "You may add a BIP39 passphrase. This is optional. " "You will need BOTH your seed and your passphrase to recover the wallet.", style: Util.isDesktop - ? STextStyles.desktopTextExtraSmall(context) - .copyWith( - color: Theme.of(context) - .extension()! - .textSubtitle1, + ? STextStyles.desktopTextExtraSmall( + context, + ).copyWith( + color: Theme.of( + context, + ).extension()!.textSubtitle1, ) : STextStyles.itemSubtitle(context), ), ), ), if (widget.coin.hasMnemonicPassphraseSupport) - const SizedBox( - height: 8, - ), + const SizedBox(height: 8), if (widget.coin.hasMnemonicPassphraseSupport) ClipRRect( borderRadius: BorderRadius.circular( @@ -327,67 +303,61 @@ class _NewWalletOptionsViewState extends ConsumerState { focusNode: passwordFocusNode, controller: passwordController, style: Util.isDesktop - ? STextStyles.desktopTextMedium(context).copyWith( - height: 2, - ) + ? STextStyles.desktopTextMedium( + context, + ).copyWith(height: 2) : STextStyles.field(context), obscureText: hidePassword, enableSuggestions: false, autocorrect: false, - decoration: standardInputDecoration( - "BIP39 passphrase", - passwordFocusNode, - context, - ).copyWith( - suffixIcon: UnconstrainedBox( - child: ConditionalParent( - condition: Util.isDesktop, - builder: (child) => SizedBox( - height: 70, - child: child, - ), - child: Row( - children: [ - SizedBox( - width: Util.isDesktop ? 24 : 16, - ), - GestureDetector( - key: const Key( - "mnemonicPassphraseFieldShowPasswordButtonKey", - ), - onTap: () async { - setState(() { - hidePassword = !hidePassword; - }); - }, - child: SvgPicture.asset( - hidePassword - ? Assets.svg.eye - : Assets.svg.eyeSlash, - color: Theme.of(context) - .extension()! - .textDark3, - width: Util.isDesktop ? 24 : 16, - height: Util.isDesktop ? 24 : 16, - ), - ), - const SizedBox( - width: 12, + decoration: + standardInputDecoration( + "BIP39 passphrase", + passwordFocusNode, + context, + ).copyWith( + suffixIcon: UnconstrainedBox( + child: ConditionalParent( + condition: Util.isDesktop, + builder: (child) => + SizedBox(height: 70, child: child), + child: Row( + children: [ + SizedBox(width: Util.isDesktop ? 24 : 16), + GestureDetector( + key: const Key( + "mnemonicPassphraseFieldShowPasswordButtonKey", + ), + onTap: () async { + setState(() { + hidePassword = !hidePassword; + }); + }, + child: SvgPicture.asset( + hidePassword + ? Assets.svg.eye + : Assets.svg.eyeSlash, + color: Theme.of( + context, + ).extension()!.textDark3, + width: Util.isDesktop ? 24 : 16, + height: Util.isDesktop ? 24 : 16, + ), + ), + const SizedBox(width: 12), + ], ), - ], + ), ), ), - ), - ), ), ), if (widget.coin is ViewOnlyOptionCurrencyInterface) - const SizedBox( - height: 24, - ), + const SizedBox(height: 24), if (widget.coin is ViewOnlyOptionCurrencyInterface) CheckboxTextButton( - label: "Convert to view only wallet. " + label: + "Convert to view only wallet. " "You will only be shown the seed phrase once. " "Save it somewhere. " "If you lose it you will lose access to any funds in this wallet.", @@ -398,16 +368,15 @@ class _NewWalletOptionsViewState extends ConsumerState { ], ), if (!Util.isDesktop) const Spacer(), - SizedBox( - height: Util.isDesktop ? 32 : 16, - ), + SizedBox(height: Util.isDesktop ? 32 : 16), PrimaryButton( label: "Continue", onPressed: () { if (_selectedOptions == NewWalletOptions.Advanced) { ref.read(pNewWalletOptions.notifier).state = ( - mnemonicWordsCount: - ref.read(mnemonicWordCountStateProvider.state).state, + mnemonicWordsCount: ref + .read(mnemonicWordCountStateProvider.state) + .state, mnemonicPassphrase: passwordController.text, convertToViewOnly: _convertToViewOnly, ); @@ -417,21 +386,12 @@ class _NewWalletOptionsViewState extends ConsumerState { Navigator.of(context).pushNamed( NewWalletRecoveryPhraseWarningView.routeName, - arguments: Tuple2( - widget.walletName, - widget.coin, - ), + arguments: Tuple2(widget.walletName, widget.coin), ); }, ), - if (!Util.isDesktop) - const SizedBox( - height: 16, - ), - if (Util.isDesktop) - const Spacer( - flex: 15, - ), + if (!Util.isDesktop) const SizedBox(height: 16), + if (Util.isDesktop) const Spacer(flex: 15), ], ), ), diff --git a/lib/pages/add_wallet_views/new_wallet_recovery_phrase_warning_view/new_wallet_recovery_phrase_warning_view.dart b/lib/pages/add_wallet_views/new_wallet_recovery_phrase_warning_view/new_wallet_recovery_phrase_warning_view.dart index 7e3f57d320..8bcb1ac9c1 100644 --- a/lib/pages/add_wallet_views/new_wallet_recovery_phrase_warning_view/new_wallet_recovery_phrase_warning_view.dart +++ b/lib/pages/add_wallet_views/new_wallet_recovery_phrase_warning_view/new_wallet_recovery_phrase_warning_view.dart @@ -81,12 +81,11 @@ class _NewWalletRecoveryPhraseWarningViewState if (mounted) { await showDialog( context: context, - builder: - (_) => StackOkDialog( - title: "Create Wallet Error", - message: ex?.toString() ?? "Unknown error", - maxWidth: 600, - ), + builder: (_) => StackOkDialog( + title: "Create Wallet Error", + message: ex?.toString() ?? "Unknown error", + maxWidth: 600, + ), ); } return; @@ -195,8 +194,10 @@ class _NewWalletRecoveryPhraseWarningViewState } else if (wordCount > 0) { if (ref.read(pNewWalletOptions.state).state != null) { if (coin.hasMnemonicPassphraseSupport) { - mnemonicPassphrase = - ref.read(pNewWalletOptions.state).state!.mnemonicPassphrase; + mnemonicPassphrase = ref + .read(pNewWalletOptions.state) + .state! + .mnemonicPassphrase; } else { // this may not be epiccash and sol specific? if (coin is Epiccash || coin is Solana) { @@ -204,8 +205,10 @@ class _NewWalletRecoveryPhraseWarningViewState } } - wordCount = - ref.read(pNewWalletOptions.state).state!.mnemonicWordsCount; + wordCount = ref + .read(pNewWalletOptions.state) + .state! + .mnemonicWordsCount; } else { mnemonicPassphrase = ""; } @@ -241,8 +244,8 @@ class _NewWalletRecoveryPhraseWarningViewState // set checkbox back to unchecked to annoy users to agree again :P ref.read(checkBoxStateProvider.state).state = false; - final fetchedMnemonic = - await (wallet as MnemonicInterface).getMnemonicAsWords(); + final fetchedMnemonic = await (wallet as MnemonicInterface) + .getMnemonicAsWords(); return (wallet, fetchedMnemonic); } catch (e, s) { @@ -269,46 +272,43 @@ class _NewWalletRecoveryPhraseWarningViewState return MasterScaffold( isDesktop: isDesktop, - appBar: - isDesktop - ? const DesktopAppBar( - isCompactHeight: false, - leading: AppBarBackButton(), - trailing: ExitToMyStackButton(), - ) - : AppBar( - leading: const AppBarBackButton(), - actions: [ - Padding( - padding: const EdgeInsets.only( - top: 10, - bottom: 10, - right: 10, - ), - child: AppBarIconButton( - semanticsLabel: - "Question Button. Opens A Dialog For Recovery Phrase Explanation.", - icon: SvgPicture.asset( - Assets.svg.circleQuestion, - width: 20, - height: 20, - color: - Theme.of( - context, - ).extension()!.accentColorDark, - ), - onPressed: () async { - await showDialog( - context: context, - builder: - (context) => - const RecoveryPhraseExplanationDialog(), - ); - }, + appBar: isDesktop + ? const DesktopAppBar( + isCompactHeight: false, + leading: AppBarBackButton(), + trailing: ExitToMyStackButton(), + ) + : AppBar( + leading: const AppBarBackButton(), + actions: [ + Padding( + padding: const EdgeInsets.only( + top: 10, + bottom: 10, + right: 10, + ), + child: AppBarIconButton( + semanticsLabel: + "Question Button. Opens A Dialog For Recovery Phrase Explanation.", + icon: SvgPicture.asset( + Assets.svg.circleQuestion, + width: 20, + height: 20, + color: Theme.of( + context, + ).extension()!.accentColorDark, ), + onPressed: () async { + await showDialog( + context: context, + builder: (context) => + const RecoveryPhraseExplanationDialog(), + ); + }, ), - ], - ), + ), + ], + ), body: SingleChildScrollView( child: ConstrainedBox( constraints: BoxConstraints( @@ -319,10 +319,9 @@ class _NewWalletRecoveryPhraseWarningViewState padding: const EdgeInsets.all(16), child: Center( child: Column( - crossAxisAlignment: - isDesktop - ? CrossAxisAlignment.center - : CrossAxisAlignment.stretch, + crossAxisAlignment: isDesktop + ? CrossAxisAlignment.center + : CrossAxisAlignment.stretch, children: [ /*if (isDesktop) const Spacer( @@ -341,233 +340,206 @@ class _NewWalletRecoveryPhraseWarningViewState Text( "Recovery Phrase", textAlign: TextAlign.center, - style: - isDesktop - ? STextStyles.desktopH2(context) - : STextStyles.pageTitleH1(context), + style: isDesktop + ? STextStyles.desktopH2(context) + : STextStyles.pageTitleH1(context), ), SizedBox(height: isDesktop ? 32 : 16), RoundedWhiteContainer( padding: const EdgeInsets.all(32), width: isDesktop ? 480 : null, - child: - isDesktop - ? Text( - "On the next screen you will see " - "$seedCount " - "words that make up your recovery phrase.\n\nPlease " - "write it down. Keep it safe and never share it with " - "anyone. Your recovery phrase is the only way you can" - " access your funds if you forget your PIN, lose your" - " phone, etc.\n\n${AppConfig.appName} does not keep nor is " - "able to restore your recover phrase. Only you have " - "access to your wallet.", - style: - isDesktop - ? STextStyles.desktopTextMediumRegular( - context, - ) - : STextStyles.subtitle( - context, - ).copyWith(fontSize: 12), - ) - : Column( - children: [ - Text( - "Important", + child: isDesktop + ? Text( + "On the next screen you will see " + "$seedCount " + "words that make up your recovery phrase.\n\nPlease " + "write it down. Keep it safe and never share it with " + "anyone. Your recovery phrase is the only way you can" + " access your funds if you forget your PIN, lose your" + " phone, etc.\n\n${AppConfig.appName} does not keep nor is " + "able to restore your recover phrase. Only you have " + "access to your wallet.", + style: isDesktop + ? STextStyles.desktopTextMediumRegular( + context, + ) + : STextStyles.subtitle( + context, + ).copyWith(fontSize: 12), + ) + : Column( + children: [ + Text( + "Important", + style: STextStyles.desktopH3(context) + .copyWith( + color: Theme.of(context) + .extension()! + .accentColorBlue, + ), + ), + const SizedBox(height: 24), + RichText( + textAlign: TextAlign.center, + text: TextSpan( style: STextStyles.desktopH3( context, - ).copyWith( - color: - Theme.of(context) - .extension()! - .accentColorBlue, - ), + ).copyWith(fontSize: 18), + children: [ + TextSpan( + text: + "On the next screen you will be given ", + style: STextStyles.desktopH3(context) + .copyWith( + color: Theme.of(context) + .extension()! + .textDark, + fontSize: 18, + height: 1.3, + ), + ), + TextSpan( + text: "$seedCount words", + style: STextStyles.desktopH3(context) + .copyWith( + color: Theme.of(context) + .extension()! + .accentColorBlue, + fontSize: 18, + height: 1.3, + ), + ), + TextSpan( + text: ". They are your ", + style: STextStyles.desktopH3(context) + .copyWith( + color: Theme.of(context) + .extension()! + .textDark, + fontSize: 18, + height: 1.3, + ), + ), + TextSpan( + text: "recovery phrase", + style: STextStyles.desktopH3(context) + .copyWith( + color: Theme.of(context) + .extension()! + .accentColorBlue, + fontSize: 18, + height: 1.3, + ), + ), + TextSpan( + text: ".", + style: STextStyles.desktopH3(context) + .copyWith( + color: Theme.of(context) + .extension()! + .textDark, + fontSize: 18, + height: 1.3, + ), + ), + ], ), - const SizedBox(height: 24), - RichText( - textAlign: TextAlign.center, - text: TextSpan( - style: STextStyles.desktopH3( - context, - ).copyWith(fontSize: 18), + ), + const SizedBox(height: 40), + Column( + children: [ + Row( children: [ - TextSpan( - text: - "On the next screen you will be given ", - style: STextStyles.desktopH3( - context, - ).copyWith( - color: - Theme.of(context) - .extension()! - .textDark, - fontSize: 18, - height: 1.3, - ), - ), - TextSpan( - text: "$seedCount words", - style: STextStyles.desktopH3( - context, - ).copyWith( - color: - Theme.of(context) - .extension()! - .accentColorBlue, - fontSize: 18, - height: 1.3, + SizedBox( + width: 32, + height: 32, + child: RoundedContainer( + radiusMultiplier: 20, + padding: const EdgeInsets.all(9), + color: Theme.of(context) + .extension()! + .buttonBackSecondary, + child: SvgPicture.asset( + Assets.svg.pencil, + color: Theme.of(context) + .extension()! + .accentColorDark, + ), ), ), - TextSpan( - text: ". They are your ", - style: STextStyles.desktopH3( + const SizedBox(width: 20), + Text( + "Write them down.", + style: STextStyles.navBarTitle( context, - ).copyWith( - color: - Theme.of(context) - .extension()! - .textDark, - fontSize: 18, - height: 1.3, ), ), - TextSpan( - text: "recovery phrase", - style: STextStyles.desktopH3( - context, - ).copyWith( - color: - Theme.of(context) - .extension()! - .accentColorBlue, - fontSize: 18, - height: 1.3, + ], + ), + const SizedBox(height: 30), + Row( + children: [ + SizedBox( + width: 32, + height: 32, + child: RoundedContainer( + radiusMultiplier: 20, + padding: const EdgeInsets.all(8), + color: Theme.of(context) + .extension()! + .buttonBackSecondary, + child: SvgPicture.asset( + Assets.svg.lock, + color: Theme.of(context) + .extension()! + .accentColorDark, + ), ), ), - TextSpan( - text: ".", - style: STextStyles.desktopH3( + const SizedBox(width: 20), + Text( + "Keep them safe.", + style: STextStyles.navBarTitle( context, - ).copyWith( - color: - Theme.of(context) - .extension()! - .textDark, - fontSize: 18, - height: 1.3, ), ), ], ), - ), - const SizedBox(height: 40), - Column( - children: [ - Row( - children: [ - SizedBox( - width: 32, - height: 32, - child: RoundedContainer( - radiusMultiplier: 20, - padding: const EdgeInsets.all(9), - color: - Theme.of(context) - .extension()! - .buttonBackSecondary, - child: SvgPicture.asset( - Assets.svg.pencil, - color: - Theme.of(context) - .extension< - StackColors - >()! - .accentColorDark, - ), - ), - ), - const SizedBox(width: 20), - Text( - "Write them down.", - style: STextStyles.navBarTitle( - context, - ), - ), - ], - ), - const SizedBox(height: 30), - Row( - children: [ - SizedBox( - width: 32, - height: 32, - child: RoundedContainer( - radiusMultiplier: 20, - padding: const EdgeInsets.all(8), - color: - Theme.of(context) - .extension()! - .buttonBackSecondary, - child: SvgPicture.asset( - Assets.svg.lock, - color: - Theme.of(context) - .extension< - StackColors - >()! - .accentColorDark, - ), + const SizedBox(height: 30), + Row( + children: [ + SizedBox( + width: 32, + height: 32, + child: RoundedContainer( + radiusMultiplier: 20, + padding: const EdgeInsets.all(8), + color: Theme.of(context) + .extension()! + .buttonBackSecondary, + child: SvgPicture.asset( + Assets.svg.eyeSlash, + color: Theme.of(context) + .extension()! + .accentColorDark, ), ), - const SizedBox(width: 20), - Text( - "Keep them safe.", + ), + const SizedBox(width: 20), + Expanded( + child: Text( + "Do not show them to anyone.", style: STextStyles.navBarTitle( context, ), ), - ], - ), - const SizedBox(height: 30), - Row( - children: [ - SizedBox( - width: 32, - height: 32, - child: RoundedContainer( - radiusMultiplier: 20, - padding: const EdgeInsets.all(8), - color: - Theme.of(context) - .extension()! - .buttonBackSecondary, - child: SvgPicture.asset( - Assets.svg.eyeSlash, - color: - Theme.of(context) - .extension< - StackColors - >()! - .accentColorDark, - ), - ), - ), - const SizedBox(width: 20), - Expanded( - child: Text( - "Do not show them to anyone.", - style: STextStyles.navBarTitle( - context, - ), - ), - ), - ], - ), - ], - ), - ], - ), + ), + ], + ), + ], + ), + ], + ), ), if (!isDesktop) const Spacer(), if (!isDesktop) const SizedBox(height: 16), @@ -584,10 +556,9 @@ class _NewWalletRecoveryPhraseWarningViewState children: [ GestureDetector( onTap: () { - final value = - ref - .read(checkBoxStateProvider.state) - .state; + final value = ref + .read(checkBoxStateProvider.state) + .state; ref.read(checkBoxStateProvider.state).state = !value; }, @@ -603,18 +574,19 @@ class _NewWalletRecoveryPhraseWarningViewState child: Checkbox( materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - value: - ref - .watch( - checkBoxStateProvider.state, - ) - .state, + value: ref + .watch( + checkBoxStateProvider.state, + ) + .state, onChanged: (newValue) { ref - .read( - checkBoxStateProvider.state, - ) - .state = newValue!; + .read( + checkBoxStateProvider + .state, + ) + .state = + newValue!; }, ), ), @@ -622,14 +594,13 @@ class _NewWalletRecoveryPhraseWarningViewState Flexible( child: Text( "I understand that ${AppConfig.appName} does not keep and cannot restore my recovery phrase, and If I lose my recovery phrase, I will not be able to access my funds.", - style: - isDesktop - ? STextStyles.desktopTextMedium( - context, - ) - : STextStyles.baseXS( - context, - ).copyWith(height: 1.3), + style: isDesktop + ? STextStyles.desktopTextMedium( + context, + ) + : STextStyles.baseXS( + context, + ).copyWith(height: 1.3), ), ), ], @@ -644,41 +615,39 @@ class _NewWalletRecoveryPhraseWarningViewState child: TextButton( onPressed: ref - .read(checkBoxStateProvider.state) - .state - ? _initNewWallet - : null, + .read(checkBoxStateProvider.state) + .state + ? _initNewWallet + : null, style: ref - .read(checkBoxStateProvider.state) - .state - ? Theme.of(context) - .extension()! - .getPrimaryEnabledButtonStyle( - context, - ) - : Theme.of(context) - .extension()! - .getPrimaryDisabledButtonStyle( - context, - ), + .read(checkBoxStateProvider.state) + .state + ? Theme.of(context) + .extension()! + .getPrimaryEnabledButtonStyle( + context, + ) + : Theme.of(context) + .extension()! + .getPrimaryDisabledButtonStyle( + context, + ), child: Text( "View recovery phrase", - style: - isDesktop - ? ref - .read( - checkBoxStateProvider - .state, - ) - .state - ? STextStyles.desktopButtonEnabled( + style: isDesktop + ? ref + .read( + checkBoxStateProvider.state, + ) + .state + ? STextStyles.desktopButtonEnabled( context, ) - : STextStyles.desktopButtonDisabled( + : STextStyles.desktopButtonDisabled( context, ) - : STextStyles.button(context), + : STextStyles.button(context), ), ), ), diff --git a/lib/pages/add_wallet_views/restore_wallet_view/restore_view_only_wallet_view.dart b/lib/pages/add_wallet_views/restore_wallet_view/restore_view_only_wallet_view.dart index e0d3871c42..2f6f8fd9ed 100644 --- a/lib/pages/add_wallet_views/restore_wallet_view/restore_view_only_wallet_view.dart +++ b/lib/pages/add_wallet_views/restore_wallet_view/restore_view_only_wallet_view.dart @@ -109,10 +109,9 @@ class _RestoreViewOnlyWalletViewState final ViewOnlyWalletType viewOnlyWalletType; if (widget.coin is Bip39HDCurrency) { - viewOnlyWalletType = - _addressOnly - ? ViewOnlyWalletType.addressOnly - : ViewOnlyWalletType.xPub; + viewOnlyWalletType = _addressOnly + ? ViewOnlyWalletType.addressOnly + : ViewOnlyWalletType.xPub; } else if (widget.coin is CryptonoteCurrency) { viewOnlyWalletType = ViewOnlyWalletType.cryptonote; } else { @@ -220,7 +219,7 @@ class _RestoreViewOnlyWalletViewState case const (EpiccashWallet): await (wallet as EpiccashWallet).init(isRestore: true); break; - + case const (MimblewimblecoinWallet): await (wallet as MimblewimblecoinWallet).init(isRestore: true); break; @@ -316,10 +315,9 @@ class _RestoreViewOnlyWalletViewState viewKeyController = TextEditingController(); if (widget.coin is Bip39HDCurrency) { - _currentDropDownValue = - (widget.coin as Bip39HDCurrency) - .supportedHardenedDerivationPaths - .last; + _currentDropDownValue = (widget.coin as Bip39HDCurrency) + .supportedHardenedDerivationPaths + .last; } } @@ -338,28 +336,27 @@ class _RestoreViewOnlyWalletViewState return MasterScaffold( isDesktop: isDesktop, - appBar: - isDesktop - ? const DesktopAppBar( - isCompactHeight: false, - leading: AppBarBackButton(), - trailing: ExitToMyStackButton(), - ) - : AppBar( - leading: AppBarBackButton( - onPressed: () async { - if (FocusScope.of(context).hasFocus) { - FocusScope.of(context).unfocus(); - await Future.delayed( - const Duration(milliseconds: 50), - ); - } - if (context.mounted) { - Navigator.of(context).pop(); - } - }, - ), + appBar: isDesktop + ? const DesktopAppBar( + isCompactHeight: false, + leading: AppBarBackButton(), + trailing: ExitToMyStackButton(), + ) + : AppBar( + leading: AppBarBackButton( + onPressed: () async { + if (FocusScope.of(context).hasFocus) { + FocusScope.of(context).unfocus(); + await Future.delayed( + const Duration(milliseconds: 50), + ); + } + if (context.mounted) { + Navigator.of(context).pop(); + } + }, ), + ), body: Container( color: Theme.of(context).extension()!.background, child: LayoutBuilder( @@ -384,10 +381,9 @@ class _RestoreViewOnlyWalletViewState SizedBox(height: isDesktop ? 0 : 4), Text( "Enter view only details", - style: - isDesktop - ? STextStyles.desktopH2(context) - : STextStyles.pageTitleH1(context), + style: isDesktop + ? STextStyles.desktopH2(context) + : STextStyles.pageTitleH1(context), ), if (isElectrumX) SizedBox(height: isDesktop ? 24 : 16), if (isElectrumX) @@ -398,14 +394,12 @@ class _RestoreViewOnlyWalletViewState key: UniqueKey(), onText: "Extended pub key", offText: "Single address", - onColor: - Theme.of( - context, - ).extension()!.popupBG, - offColor: - Theme.of(context) - .extension()! - .textFieldDefaultBG, + onColor: Theme.of( + context, + ).extension()!.popupBG, + offColor: Theme.of( + context, + ).extension()!.textFieldDefaultBG, isOn: _addressOnly, onValueChanged: (value) { setState(() { @@ -469,10 +463,9 @@ class _RestoreViewOnlyWalletViewState isExpanded: true, buttonStyleData: ButtonStyleData( decoration: BoxDecoration( - color: - Theme.of(context) - .extension()! - .textFieldDefaultBG, + color: Theme.of(context) + .extension()! + .textFieldDefaultBG, borderRadius: BorderRadius.circular( Constants.size.circularBorderRadius, ), @@ -485,10 +478,9 @@ class _RestoreViewOnlyWalletViewState Assets.svg.chevronDown, width: 12, height: 6, - color: - Theme.of(context) - .extension()! - .textFieldActiveSearchIconRight, + color: Theme.of(context) + .extension()! + .textFieldActiveSearchIconRight, ), ), ), @@ -496,10 +488,9 @@ class _RestoreViewOnlyWalletViewState offset: const Offset(0, -10), elevation: 0, decoration: BoxDecoration( - color: - Theme.of(context) - .extension()! - .textFieldDefaultBG, + color: Theme.of(context) + .extension()! + .textFieldDefaultBG, borderRadius: BorderRadius.circular( Constants.size.circularBorderRadius, ), diff --git a/lib/pages/address_book_views/address_book_view.dart b/lib/pages/address_book_views/address_book_view.dart index 64af275075..d24df1cf9e 100644 --- a/lib/pages/address_book_views/address_book_view.dart +++ b/lib/pages/address_book_views/address_book_view.dart @@ -64,8 +64,9 @@ class _AddressBookViewState extends ConsumerState { final coins = [...AppConfig.coins]; coins.removeWhere((e) => e is Firo && e.network.isTestNet); - final bool showTestNet = - ref.read(prefsChangeNotifierProvider).showTestNetCoins; + final bool showTestNet = ref + .read(prefsChangeNotifierProvider) + .showTestNetCoins; if (showTestNet) { ref.read(addressBookFilterProvider).addAll(coins, false); @@ -137,8 +138,9 @@ class _AddressBookViewState extends ConsumerState { builder: (child) { return Background( child: Scaffold( - backgroundColor: - Theme.of(context).extension()!.background, + backgroundColor: Theme.of( + context, + ).extension()!.background, appBar: AppBar( leading: AppBarBackButton( onPressed: () { @@ -162,16 +164,14 @@ class _AddressBookViewState extends ConsumerState { key: const Key("addressBookFilterViewButton"), size: 36, shadows: const [], - color: - Theme.of( - context, - ).extension()!.background, + color: Theme.of( + context, + ).extension()!.background, icon: SvgPicture.asset( Assets.svg.filter, - color: - Theme.of( - context, - ).extension()!.accentColorDark, + color: Theme.of( + context, + ).extension()!.accentColorDark, width: 20, height: 20, ), @@ -195,16 +195,14 @@ class _AddressBookViewState extends ConsumerState { key: const Key("addressBookAddNewContactViewButton"), size: 36, shadows: const [], - color: - Theme.of( - context, - ).extension()!.background, + color: Theme.of( + context, + ).extension()!.background, icon: SvgPicture.asset( Assets.svg.plus, - color: - Theme.of( - context, - ).extension()!.accentColorDark, + color: Theme.of( + context, + ).extension()!.accentColorDark, width: 20, height: 20, ), @@ -260,38 +258,37 @@ class _AddressBookViewState extends ConsumerState { borderRadius: BorderRadius.circular( Constants.size.circularBorderRadius, ), - child: - !isDesktop - ? TextField( - autocorrect: Util.isDesktop ? false : true, - enableSuggestions: Util.isDesktop ? false : true, - controller: _searchController, - focusNode: _searchFocusNode, - onChanged: (value) { - setState(() { - _searchTerm = value; - }); - }, - style: STextStyles.field(context), - decoration: standardInputDecoration( - "Search", - _searchFocusNode, - context, - ).copyWith( - prefixIcon: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 10, - vertical: 16, - ), - child: SvgPicture.asset( - Assets.svg.search, - width: 16, - height: 16, + child: !isDesktop + ? TextField( + autocorrect: Util.isDesktop ? false : true, + enableSuggestions: Util.isDesktop ? false : true, + controller: _searchController, + focusNode: _searchFocusNode, + onChanged: (value) { + setState(() { + _searchTerm = value; + }); + }, + style: STextStyles.field(context), + decoration: + standardInputDecoration( + "Search", + _searchFocusNode, + context, + ).copyWith( + prefixIcon: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 10, + vertical: 16, + ), + child: SvgPicture.asset( + Assets.svg.search, + width: 16, + height: 16, + ), ), - ), - suffixIcon: - _searchController.text.isNotEmpty - ? Padding( + suffixIcon: _searchController.text.isNotEmpty + ? Padding( padding: const EdgeInsets.only(right: 0), child: UnconstrainedBox( child: Row( @@ -309,10 +306,10 @@ class _AddressBookViewState extends ConsumerState { ), ), ) - : null, - ), - ) - : null, + : null, + ), + ) + : null, ), if (!isDesktop) const SizedBox(height: 16), Text("Favorites", style: STextStyles.smallMed12(context)), @@ -324,16 +321,15 @@ class _AddressBookViewState extends ConsumerState { children: [ ...contacts .where( - (element) => - element.addressesSorted - .where( - (e) => ref.watch( - addressBookFilterProvider.select( - (value) => value.coins.contains(e.coin), - ), - ), - ) - .isNotEmpty, + (element) => element.addressesSorted + .where( + (e) => ref.watch( + addressBookFilterProvider.select( + (value) => value.coins.contains(e.coin), + ), + ), + ) + .isNotEmpty, ) .where( (e) => @@ -375,17 +371,15 @@ class _AddressBookViewState extends ConsumerState { children: [ ...contacts .where( - (element) => - element.addressesSorted - .where( - (e) => ref.watch( - addressBookFilterProvider.select( - (value) => - value.coins.contains(e.coin), - ), - ), - ) - .isNotEmpty, + (element) => element.addressesSorted + .where( + (e) => ref.watch( + addressBookFilterProvider.select( + (value) => value.coins.contains(e.coin), + ), + ), + ) + .isNotEmpty, ) .where( (e) => ref diff --git a/lib/pages/address_book_views/subviews/new_contact_address_entry_form.dart b/lib/pages/address_book_views/subviews/new_contact_address_entry_form.dart index b6dcd7bded..fdc6673b69 100644 --- a/lib/pages/address_book_views/subviews/new_contact_address_entry_form.dart +++ b/lib/pages/address_book_views/subviews/new_contact_address_entry_form.dart @@ -93,10 +93,11 @@ class _NewContactAddressEntryFormState addressLabelController.text = paymentData.label ?? addressLabelController.text; - ref.read(addressEntryDataProvider(widget.id)).addressLabel = - addressLabelController.text.isEmpty - ? null - : addressLabelController.text; + ref + .read(addressEntryDataProvider(widget.id)) + .addressLabel = addressLabelController.text.isEmpty + ? null + : addressLabelController.text; // now check for non standard encoded basic address } else if (ref.read(addressEntryDataProvider(widget.id)).coin != null) { @@ -140,13 +141,10 @@ class _NewContactAddressEntryFormState @override void initState() { - addressLabelController = - TextEditingController() - ..text = - ref.read(addressEntryDataProvider(widget.id)).addressLabel ?? ""; - addressController = - TextEditingController() - ..text = ref.read(addressEntryDataProvider(widget.id)).address ?? ""; + addressLabelController = TextEditingController() + ..text = ref.read(addressEntryDataProvider(widget.id)).addressLabel ?? ""; + addressController = TextEditingController() + ..text = ref.read(addressEntryDataProvider(widget.id)).address ?? ""; addressLabelFocusNode = FocusNode(); addressFocusNode = FocusNode(); coins = [...AppConfig.coins]; @@ -177,15 +175,15 @@ class _NewContactAddressEntryFormState coins = [...AppConfig.coins]; coins.removeWhere((e) => e is Firo && e.network.isTestNet); - final showTestNet = - ref.read(prefsChangeNotifierProvider).showTestNetCoins; + final showTestNet = ref + .read(prefsChangeNotifierProvider) + .showTestNetCoins; if (showTestNet) { coins = coins.toList(); } else { - coins = - coins - .where((e) => e.network != CryptoCurrencyNetwork.test) - .toList(); + coins = coins + .where((e) => e.network != CryptoCurrencyNetwork.test) + .toList(); } } @@ -202,10 +200,9 @@ class _NewContactAddressEntryFormState offset: const Offset(0, -10), elevation: 0, decoration: BoxDecoration( - color: - Theme.of( - context, - ).extension()!.textFieldDefaultBG, + color: Theme.of( + context, + ).extension()!.textFieldDefaultBG, borderRadius: BorderRadius.circular( Constants.size.circularBorderRadius, ), @@ -249,14 +246,14 @@ class _NewContactAddressEntryFormState const SizedBox(width: 12), Text( coin.prettyName, - style: STextStyles.desktopTextExtraExtraSmall( - context, - ).copyWith( - color: - Theme.of( + style: + STextStyles.desktopTextExtraExtraSmall( + context, + ).copyWith( + color: Theme.of( context, ).extension()!.textDark, - ), + ), ), ], ), @@ -279,8 +276,9 @@ class _NewContactAddressEntryFormState child: Padding( padding: const EdgeInsets.symmetric(horizontal: 12), child: RawMaterialButton( - splashColor: - Theme.of(context).extension()!.highlight, + splashColor: Theme.of( + context, + ).extension()!.highlight, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular( Constants.size.circularBorderRadius, @@ -308,48 +306,47 @@ class _NewContactAddressEntryFormState ) == null ? Text( - "Select cryptocurrency", - style: STextStyles.fieldLabel(context), - ) + "Select cryptocurrency", + style: STextStyles.fieldLabel(context), + ) : Row( - children: [ - SvgPicture.file( - File( - ref.watch( - coinIconProvider( - ref.watch( + children: [ + SvgPicture.file( + File( + ref.watch( + coinIconProvider( + ref.watch( + addressEntryDataProvider( + widget.id, + ).select((value) => value.coin), + )!, + ), + ), + ), + height: 20, + width: 20, + ), + const SizedBox(width: 12), + Text( + ref + .watch( addressEntryDataProvider( widget.id, ).select((value) => value.coin), - )!, - ), - ), + )! + .prettyName, + style: STextStyles.itemSubtitle12(context), ), - height: 20, - width: 20, - ), - const SizedBox(width: 12), - Text( - ref - .watch( - addressEntryDataProvider( - widget.id, - ).select((value) => value.coin), - )! - .prettyName, - style: STextStyles.itemSubtitle12(context), - ), - ], - ), + ], + ), if (!isDesktop) SvgPicture.asset( Assets.svg.chevronDown, width: 8, height: 4, - color: - Theme.of( - context, - ).extension()!.textSubtitle2, + color: Theme.of( + context, + ).extension()!.textSubtitle2, ), ], ), @@ -369,33 +366,35 @@ class _NewContactAddressEntryFormState focusNode: addressLabelFocusNode, controller: addressLabelController, style: STextStyles.field(context), - decoration: standardInputDecoration( - "Enter address label", - addressLabelFocusNode, - context, - ).copyWith( - labelStyle: isDesktop ? STextStyles.fieldLabel(context) : null, - suffixIcon: - addressLabelController.text.isNotEmpty + decoration: + standardInputDecoration( + "Enter address label", + addressLabelFocusNode, + context, + ).copyWith( + labelStyle: isDesktop + ? STextStyles.fieldLabel(context) + : null, + suffixIcon: addressLabelController.text.isNotEmpty ? Padding( - padding: const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - children: [ - TextFieldIconButton( - child: const XIcon(), - onTap: () async { - setState(() { - addressLabelController.text = ""; - }); - }, - ), - ], + padding: const EdgeInsets.only(right: 0), + child: UnconstrainedBox( + child: Row( + children: [ + TextFieldIconButton( + child: const XIcon(), + onTap: () async { + setState(() { + addressLabelController.text = ""; + }); + }, + ), + ], + ), ), - ), - ) + ) : null, - ), + ), onChanged: (newValue) { ref.read(addressEntryDataProvider(widget.id)).addressLabel = newValue; @@ -413,76 +412,87 @@ class _NewContactAddressEntryFormState focusNode: addressFocusNode, controller: addressController, style: STextStyles.field(context), - decoration: standardInputDecoration( - "Paste address", - addressFocusNode, - context, - ).copyWith( - labelStyle: isDesktop ? STextStyles.fieldLabel(context) : null, - suffixIcon: UnconstrainedBox( - child: Row( - children: [ - if (ref.watch( - addressEntryDataProvider( - widget.id, - ).select((value) => value.address), - ) != - null) - TextFieldIconButton( - key: const Key("addAddressBookClearAddressButtonKey"), - onTap: () async { - addressController.text = ""; - ref - .read(addressEntryDataProvider(widget.id)) - .address = null; - }, - child: const XIcon(), - ), - if (ref.watch( - addressEntryDataProvider( - widget.id, - ).select((value) => value.address), - ) == - null) - TextFieldIconButton( - key: const Key("addAddressPasteAddressButtonKey"), - onTap: () async { - final ClipboardData? data = await widget.clipboard - .getData(Clipboard.kTextPlain); - - if (data?.text != null && data!.text!.isNotEmpty) { - String content = data.text!.trim(); - if (content.contains("\n")) { - content = content.substring( - 0, - content.indexOf("\n"), - ); - } - addressController.text = content; - ref - .read(addressEntryDataProvider(widget.id)) - .address = content.isEmpty ? null : content; - } - }, - child: const ClipboardIcon(), - ), - if (!Util.isDesktop && - ref.watch( + decoration: + standardInputDecoration( + "Paste address", + addressFocusNode, + context, + ).copyWith( + labelStyle: isDesktop + ? STextStyles.fieldLabel(context) + : null, + suffixIcon: UnconstrainedBox( + child: Row( + children: [ + if (ref.watch( + addressEntryDataProvider( + widget.id, + ).select((value) => value.address), + ) != + null) + TextFieldIconButton( + key: const Key( + "addAddressBookClearAddressButtonKey", + ), + onTap: () async { + addressController.text = ""; + ref + .read(addressEntryDataProvider(widget.id)) + .address = + null; + }, + child: const XIcon(), + ), + if (ref.watch( addressEntryDataProvider( widget.id, ).select((value) => value.address), ) == null) - TextFieldIconButton( - key: const Key("addAddressBookEntryScanQrButtonKey"), - onTap: _onQrTapped, - child: const QrCodeIcon(), - ), - const SizedBox(width: 8), - ], + TextFieldIconButton( + key: const Key("addAddressPasteAddressButtonKey"), + onTap: () async { + final ClipboardData? data = await widget.clipboard + .getData(Clipboard.kTextPlain); + + if (data?.text != null && + data!.text!.isNotEmpty) { + String content = data.text!.trim(); + if (content.contains("\n")) { + content = content.substring( + 0, + content.indexOf("\n"), + ); + } + addressController.text = content; + ref + .read(addressEntryDataProvider(widget.id)) + .address = content.isEmpty + ? null + : content; + } + }, + child: const ClipboardIcon(), + ), + if (!Util.isDesktop && + ref.watch( + addressEntryDataProvider( + widget.id, + ).select((value) => value.address), + ) == + null) + TextFieldIconButton( + key: const Key( + "addAddressBookEntryScanQrButtonKey", + ), + onTap: _onQrTapped, + child: const QrCodeIcon(), + ), + const SizedBox(width: 8), + ], + ), + ), ), - ), - ), key: const Key("addAddressBookEntryViewAddressField"), readOnly: false, autocorrect: false, @@ -517,8 +527,9 @@ class _NewContactAddressEntryFormState "Invalid address", textAlign: TextAlign.left, style: STextStyles.label(context).copyWith( - color: - Theme.of(context).extension()!.textError, + color: Theme.of( + context, + ).extension()!.textError, ), ), ], diff --git a/lib/pages/buy_view/buy_form.dart b/lib/pages/buy_view/buy_form.dart index 8f8a0c9b82..7c1a14b3b0 100644 --- a/lib/pages/buy_view/buy_form.dart +++ b/lib/pages/buy_view/buy_form.dart @@ -163,14 +163,13 @@ class _BuyFormState extends ConsumerState { unawaited( showDialog( context: context, - builder: - (context) => WillPopScope( - child: const CustomLoadingOverlay( - message: "Loading currency data", - eventBus: null, - ), - onWillPop: () async => shouldPop, - ), + builder: (context) => WillPopScope( + child: const CustomLoadingOverlay( + message: "Loading currency data", + eventBus: null, + ), + onWillPop: () async => shouldPop, + ), ), ); await _loadSimplexCryptos(); @@ -204,62 +203,60 @@ class _BuyFormState extends ConsumerState { _fiatFocusNode.unfocus(); _cryptoFocusNode.unfocus(); - final result = - isDesktop - ? await showDialog( - context: context, - builder: (context) { - return DesktopDialog( - maxHeight: 700, - maxWidth: 580, - child: Column( - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Padding( - padding: const EdgeInsets.only(left: 32), - child: Text( - "Choose a crypto to buy", - style: STextStyles.desktopH3(context), - ), - ), - const DesktopDialogCloseButton(), - ], - ), - Expanded( - child: Padding( - padding: const EdgeInsets.only( - left: 32, - right: 32, - bottom: 32, + final result = isDesktop + ? await showDialog( + context: context, + builder: (context) { + return DesktopDialog( + maxHeight: 700, + maxWidth: 580, + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Padding( + padding: const EdgeInsets.only(left: 32), + child: Text( + "Choose a crypto to buy", + style: STextStyles.desktopH3(context), ), - child: Row( - children: [ - Expanded( - child: RoundedWhiteContainer( - padding: const EdgeInsets.all(16), - borderColor: - Theme.of( - context, - ).extension()!.background, - child: CryptoSelectionView(coins: coins), - ), + ), + const DesktopDialogCloseButton(), + ], + ), + Expanded( + child: Padding( + padding: const EdgeInsets.only( + left: 32, + right: 32, + bottom: 32, + ), + child: Row( + children: [ + Expanded( + child: RoundedWhiteContainer( + padding: const EdgeInsets.all(16), + borderColor: Theme.of( + context, + ).extension()!.background, + child: CryptoSelectionView(coins: coins), ), - ], - ), + ), + ], ), ), - ], - ), - ); - }, - ) - : await Navigator.of(context).push( - MaterialPageRoute( - builder: (_) => CryptoSelectionView(coins: coins), - ), - ); + ), + ], + ), + ); + }, + ) + : await Navigator.of(context).push( + MaterialPageRoute( + builder: (_) => CryptoSelectionView(coins: coins), + ), + ); if (mounted && result is Crypto) { onSelected(result); @@ -272,14 +269,13 @@ class _BuyFormState extends ConsumerState { unawaited( showDialog( context: context, - builder: - (context) => WillPopScope( - child: const CustomLoadingOverlay( - message: "Loading currency data", - eventBus: null, - ), - onWillPop: () async => shouldPop, - ), + builder: (context) => WillPopScope( + child: const CustomLoadingOverlay( + message: "Loading currency data", + eventBus: null, + ), + onWillPop: () async => shouldPop, + ), ), ); await _loadSimplexFiats(); @@ -333,62 +329,60 @@ class _BuyFormState extends ConsumerState { _fiatFocusNode.unfocus(); _cryptoFocusNode.unfocus(); - final result = - isDesktop - ? await showDialog( - context: context, - builder: (context) { - return DesktopDialog( - maxHeight: 700, - maxWidth: 580, - child: Column( - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Padding( - padding: const EdgeInsets.only(left: 32), - child: Text( - "Choose a fiat with which to pay", - style: STextStyles.desktopH3(context), - ), - ), - const DesktopDialogCloseButton(), - ], - ), - Expanded( - child: Padding( - padding: const EdgeInsets.only( - left: 32, - right: 32, - bottom: 32, + final result = isDesktop + ? await showDialog( + context: context, + builder: (context) { + return DesktopDialog( + maxHeight: 700, + maxWidth: 580, + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Padding( + padding: const EdgeInsets.only(left: 32), + child: Text( + "Choose a fiat with which to pay", + style: STextStyles.desktopH3(context), ), - child: Row( - children: [ - Expanded( - child: RoundedWhiteContainer( - padding: const EdgeInsets.all(16), - borderColor: - Theme.of( - context, - ).extension()!.background, - child: FiatSelectionView(fiats: fiats), - ), + ), + const DesktopDialogCloseButton(), + ], + ), + Expanded( + child: Padding( + padding: const EdgeInsets.only( + left: 32, + right: 32, + bottom: 32, + ), + child: Row( + children: [ + Expanded( + child: RoundedWhiteContainer( + padding: const EdgeInsets.all(16), + borderColor: Theme.of( + context, + ).extension()!.background, + child: FiatSelectionView(fiats: fiats), ), - ], - ), + ), + ], ), ), - ], - ), - ); - }, - ) - : await Navigator.of(context).push( - MaterialPageRoute( - builder: (_) => FiatSelectionView(fiats: fiats), - ), - ); + ), + ], + ), + ); + }, + ) + : await Navigator.of(context).push( + MaterialPageRoute( + builder: (_) => FiatSelectionView(fiats: fiats), + ), + ); if (mounted && result is Fiat) { onSelected(result); @@ -406,28 +400,25 @@ class _BuyFormState extends ConsumerState { unawaited( showDialog( context: context, - builder: - (context) => WillPopScope( - child: const CustomLoadingOverlay( - message: "Loading quote data", - eventBus: null, - ), - onWillPop: () async => shouldPop, - ), + builder: (context) => WillPopScope( + child: const CustomLoadingOverlay( + message: "Loading quote data", + eventBus: null, + ), + onWillPop: () async => shouldPop, + ), ), ); quote = SimplexQuote( crypto: selectedCrypto!, fiat: selectedFiat!, - youPayFiatPrice: - buyWithFiat - ? Decimal.parse(_buyAmountController.text) - : Decimal.parse("100"), // dummy value - youReceiveCryptoAmount: - buyWithFiat - ? Decimal.parse("0.000420282") // dummy value - : Decimal.parse(_buyAmountController.text), // Ternary for this + youPayFiatPrice: buyWithFiat + ? Decimal.parse(_buyAmountController.text) + : Decimal.parse("100"), // dummy value + youReceiveCryptoAmount: buyWithFiat + ? Decimal.parse("0.000420282") // dummy value + : Decimal.parse(_buyAmountController.text), // Ternary for this id: "id", // anything; we get an ID back receivingAddress: _receiveAddressController.text, buyWithFiat: buyWithFiat, @@ -500,10 +491,9 @@ class _BuyFormState extends ConsumerState { child: Text( "Ok", style: STextStyles.button(context).copyWith( - color: - Theme.of( - context, - ).extension()!.accentColorDark, + color: Theme.of( + context, + ).extension()!.accentColorDark, ), ), onPressed: () { @@ -587,10 +577,9 @@ class _BuyFormState extends ConsumerState { child: Text( "Ok", style: STextStyles.button(context).copyWith( - color: - Theme.of( - context, - ).extension()!.accentColorDark, + color: Theme.of( + context, + ).extension()!.accentColorDark, ), ), onPressed: () { @@ -628,62 +617,60 @@ class _BuyFormState extends ConsumerState { _fiatFocusNode.unfocus(); _cryptoFocusNode.unfocus(); - final result = - isDesktop - ? await showDialog( - context: context, - builder: (context) { - return DesktopDialog( - maxHeight: 700, - maxWidth: 580, - child: Column( - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Padding( - padding: const EdgeInsets.only(left: 32), - child: Text( - "Preview quote", - style: STextStyles.desktopH3(context), - ), - ), - const DesktopDialogCloseButton(), - ], - ), - Expanded( - child: Padding( - padding: const EdgeInsets.only( - left: 32, - right: 32, - bottom: 32, + final result = isDesktop + ? await showDialog( + context: context, + builder: (context) { + return DesktopDialog( + maxHeight: 700, + maxWidth: 580, + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Padding( + padding: const EdgeInsets.only(left: 32), + child: Text( + "Preview quote", + style: STextStyles.desktopH3(context), ), - child: Row( - children: [ - Expanded( - child: RoundedWhiteContainer( - padding: const EdgeInsets.all(16), - borderColor: - Theme.of( - context, - ).extension()!.background, - child: BuyQuotePreviewView(quote: quote), - ), + ), + const DesktopDialogCloseButton(), + ], + ), + Expanded( + child: Padding( + padding: const EdgeInsets.only( + left: 32, + right: 32, + bottom: 32, + ), + child: Row( + children: [ + Expanded( + child: RoundedWhiteContainer( + padding: const EdgeInsets.all(16), + borderColor: Theme.of( + context, + ).extension()!.background, + child: BuyQuotePreviewView(quote: quote), ), - ], - ), + ), + ], ), ), - ], - ), - ); - }, - ) - : await Navigator.of(context).push( - MaterialPageRoute( - builder: (_) => BuyQuotePreviewView(quote: quote), - ), - ); + ), + ], + ), + ); + }, + ) + : await Navigator.of(context).push( + MaterialPageRoute( + builder: (_) => BuyQuotePreviewView(quote: quote), + ), + ); if (mounted && result is SimplexQuote) { onSelected(result); @@ -816,18 +803,14 @@ class _BuyFormState extends ConsumerState { builder: (child) => SizedBox(width: 458, child: child), child: ConditionalParent( condition: !isDesktop, - builder: - (child) => LayoutBuilder( - builder: - (context, constraints) => SingleChildScrollView( - child: ConstrainedBox( - constraints: BoxConstraints( - minHeight: constraints.maxHeight, - ), - child: IntrinsicHeight(child: child), - ), - ), + builder: (child) => LayoutBuilder( + builder: (context, constraints) => SingleChildScrollView( + child: ConstrainedBox( + constraints: BoxConstraints(minHeight: constraints.maxHeight), + child: IntrinsicHeight(child: child), ), + ), + ), child: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.stretch, @@ -852,15 +835,14 @@ class _BuyFormState extends ConsumerState { vertical: 6, horizontal: 2, ), - color: - _hovering1 - ? Theme.of(context) - .extension()! - .currencyListItemBG - .withOpacity(_hovering1 ? 0.3 : 0) - : Theme.of( - context, - ).extension()!.textFieldDefaultBG, + color: _hovering1 + ? Theme.of(context) + .extension()! + .currencyListItemBG + .withOpacity(_hovering1 ? 0.3 : 0) + : Theme.of( + context, + ).extension()!.textFieldDefaultBG, child: Padding( padding: const EdgeInsets.all(12), child: Row( @@ -878,10 +860,9 @@ class _BuyFormState extends ConsumerState { ), SvgPicture.asset( Assets.svg.chevronDown, - color: - Theme.of(context) - .extension()! - .buttonTextSecondaryDisabled, + color: Theme.of(context) + .extension()! + .buttonTextSecondaryDisabled, width: 10, height: 5, ), @@ -899,8 +880,9 @@ class _BuyFormState extends ConsumerState { Text( "I want to pay with", style: STextStyles.itemSubtitle(context).copyWith( - color: - Theme.of(context).extension()!.textDark3, + color: Theme.of( + context, + ).extension()!.textDark3, ), ), ], @@ -919,15 +901,14 @@ class _BuyFormState extends ConsumerState { vertical: 3, horizontal: 2, ), - color: - _hovering2 - ? Theme.of(context) - .extension()! - .currencyListItemBG - .withOpacity(_hovering2 ? 0.3 : 0) - : Theme.of( - context, - ).extension()!.textFieldDefaultBG, + color: _hovering2 + ? Theme.of(context) + .extension()! + .currencyListItemBG + .withOpacity(_hovering2 ? 0.3 : 0) + : Theme.of( + context, + ).extension()!.textFieldDefaultBG, child: Padding( padding: const EdgeInsets.only( left: 12.0, @@ -943,10 +924,9 @@ class _BuyFormState extends ConsumerState { horizontal: 6, ), decoration: BoxDecoration( - color: - Theme.of( - context, - ).extension()!.currencyListItemBG, + color: Theme.of( + context, + ).extension()!.currencyListItemBG, borderRadius: BorderRadius.circular(4), ), child: Text( @@ -955,10 +935,9 @@ class _BuyFormState extends ConsumerState { ), textAlign: TextAlign.center, style: STextStyles.smallMed12(context).copyWith( - color: - Theme.of( - context, - ).extension()!.accentColorDark, + color: Theme.of( + context, + ).extension()!.accentColorDark, ), ), ), @@ -976,10 +955,9 @@ class _BuyFormState extends ConsumerState { ), SvgPicture.asset( Assets.svg.chevronDown, - color: - Theme.of(context) - .extension()! - .buttonTextSecondaryDisabled, + color: Theme.of(context) + .extension()! + .buttonTextSecondaryDisabled, width: 10, height: 5, ), @@ -997,8 +975,9 @@ class _BuyFormState extends ConsumerState { Text( buyWithFiat ? "Enter amount" : "Enter crypto amount", style: STextStyles.itemSubtitle(context).copyWith( - color: - Theme.of(context).extension()!.textDark3, + color: Theme.of( + context, + ).extension()!.textDark3, ), ), CustomTextButton( @@ -1026,13 +1005,12 @@ class _BuyFormState extends ConsumerState { // ? _BuyFormState.minFiat.toStringAsFixed(2) ?? '50.00' // : _BuyFormState.minCrypto.toStringAsFixed(8), focusNode: _buyAmountFocusNode, - keyboardType: - Util.isDesktop - ? null - : const TextInputType.numberWithOptions( - signed: false, - decimal: true, - ), + keyboardType: Util.isDesktop + ? null + : const TextInputType.numberWithOptions( + signed: false, + decimal: true, + ), textAlign: TextAlign.left, // inputFormatters: [NumericalRangeFormatter()], onChanged: (_) { @@ -1050,10 +1028,9 @@ class _BuyFormState extends ConsumerState { ), hintText: "0", hintStyle: STextStyles.desktopTextExtraSmall(context).copyWith( - color: - Theme.of( - context, - ).extension()!.textFieldDefaultText, + color: Theme.of( + context, + ).extension()!.textFieldDefaultText, ), prefixIcon: FittedBox( fit: BoxFit.scaleDown, @@ -1064,34 +1041,33 @@ class _BuyFormState extends ConsumerState { const SizedBox(width: 2), buyWithFiat ? Container( - padding: const EdgeInsets.symmetric( - vertical: 3, - horizontal: 6, - ), - decoration: BoxDecoration( - color: - Theme.of(context) - .extension()! - .currencyListItemBG, - borderRadius: BorderRadius.circular(4), - ), - child: Text( - format.simpleCurrencySymbol( - selectedFiat?.ticker.toUpperCase() ?? "ERR", + padding: const EdgeInsets.symmetric( + vertical: 3, + horizontal: 6, ), - textAlign: TextAlign.center, - style: STextStyles.smallMed12(context).copyWith( - color: - Theme.of(context) - .extension()! - .accentColorDark, + decoration: BoxDecoration( + color: Theme.of(context) + .extension()! + .currencyListItemBG, + borderRadius: BorderRadius.circular(4), ), - ), - ) + child: Text( + format.simpleCurrencySymbol( + selectedFiat?.ticker.toUpperCase() ?? "ERR", + ), + textAlign: TextAlign.center, + style: STextStyles.smallMed12(context) + .copyWith( + color: Theme.of(context) + .extension()! + .accentColorDark, + ), + ), + ) : CoinIconForTicker( - ticker: selectedCrypto?.ticker ?? "BTC", - size: 20, - ), + ticker: selectedCrypto?.ticker ?? "BTC", + size: 20, + ), SizedBox( width: buyWithFiat ? 8 : 10, ), // maybe make isDesktop-aware? @@ -1100,10 +1076,9 @@ class _BuyFormState extends ConsumerState { ? selectedFiat?.ticker ?? "ERR" : selectedCrypto?.ticker ?? "ERR", style: STextStyles.smallMed14(context).copyWith( - color: - Theme.of( - context, - ).extension()!.accentColorDark, + color: Theme.of( + context, + ).extension()!.accentColorDark, ), ), ], @@ -1118,50 +1093,49 @@ class _BuyFormState extends ConsumerState { children: [ _buyAmountController.text.isNotEmpty ? TextFieldIconButton( - key: const Key( - "buyViewClearAmountFieldButtonKey", - ), - onTap: () { - // if (_BuyFormState.buyWithFiat) { - // _buyAmountController.text = _BuyFormState - // .minFiat - // .toStringAsFixed(2); - // } else { - // if (selectedCrypto?.ticker == - // _BuyFormState.boundedCryptoTicker) { - // _buyAmountController.text = _BuyFormState - // .minCrypto - // .toStringAsFixed(8); - // } - // } - _buyAmountController.text = ""; - validateAmount(); - }, - child: const XIcon(), - ) + key: const Key( + "buyViewClearAmountFieldButtonKey", + ), + onTap: () { + // if (_BuyFormState.buyWithFiat) { + // _buyAmountController.text = _BuyFormState + // .minFiat + // .toStringAsFixed(2); + // } else { + // if (selectedCrypto?.ticker == + // _BuyFormState.boundedCryptoTicker) { + // _buyAmountController.text = _BuyFormState + // .minCrypto + // .toStringAsFixed(8); + // } + // } + _buyAmountController.text = ""; + validateAmount(); + }, + child: const XIcon(), + ) : TextFieldIconButton( - key: const Key( - "buyViewPasteAddressFieldButtonKey", - ), - onTap: () async { - final ClipboardData? data = await clipboard - .getData(Clipboard.kTextPlain); + key: const Key( + "buyViewPasteAddressFieldButtonKey", + ), + onTap: () async { + final ClipboardData? data = await clipboard + .getData(Clipboard.kTextPlain); - final amountString = Decimal.tryParse( - data?.text ?? "", - ); - if (amountString != null) { - _buyAmountController.text = - amountString.toString(); + final amountString = Decimal.tryParse( + data?.text ?? "", + ); + if (amountString != null) { + _buyAmountController.text = amountString + .toString(); - validateAmount(); - } - }, - child: - _buyAmountController.text.isEmpty - ? const ClipboardIcon() - : const XIcon(), - ), + validateAmount(); + } + }, + child: _buyAmountController.text.isEmpty + ? const ClipboardIcon() + : const XIcon(), + ), ], ), ), @@ -1182,8 +1156,9 @@ class _BuyFormState extends ConsumerState { Text( "Enter receiving address", style: STextStyles.itemSubtitle(context).copyWith( - color: - Theme.of(context).extension()!.textDark3, + color: Theme.of( + context, + ).extension()!.textDark3, ), ), if (AppConfig.isStackCoin(selectedCrypto?.ticker)) @@ -1209,8 +1184,8 @@ class _BuyFormState extends ConsumerState { // model.recipientAddress = // await manager.currentReceivingAddress; - final address = - await wallet.getCurrentReceivingAddress(); + final address = await wallet + .getCurrentReceivingAddress(); if (address!.type == AddressType.p2tr && wallet is Bip39HDWallet) { @@ -1289,85 +1264,87 @@ class _BuyFormState extends ConsumerState { }, focusNode: _receiveAddressFocusNode, style: STextStyles.field(context), - decoration: standardInputDecoration( - "Enter ${selectedCrypto?.ticker} address", - _receiveAddressFocusNode, - context, - ).copyWith( - contentPadding: const EdgeInsets.only( - left: 13, - top: 6, - bottom: 8, - right: 5, - ), - suffixIcon: Padding( - padding: - _receiveAddressController.text.isEmpty + decoration: + standardInputDecoration( + "Enter ${selectedCrypto?.ticker} address", + _receiveAddressFocusNode, + context, + ).copyWith( + contentPadding: const EdgeInsets.only( + left: 13, + top: 6, + bottom: 8, + right: 5, + ), + suffixIcon: Padding( + padding: _receiveAddressController.text.isEmpty ? const EdgeInsets.only(right: 8) : const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - _addressToggleFlag - ? TextFieldIconButton( - key: const Key( - "buyViewClearAddressFieldButtonKey", - ), - onTap: () { - _receiveAddressController.text = ""; - _address = ""; - setState(() { - _addressToggleFlag = false; - }); - }, - child: const XIcon(), - ) - : TextFieldIconButton( - key: const Key( - "buyViewPasteAddressFieldButtonKey", - ), - onTap: () async { - final ClipboardData? data = await clipboard - .getData(Clipboard.kTextPlain); - if (data?.text != null && - data!.text!.isNotEmpty) { - String content = data.text!.trim(); - if (content.contains("\n")) { - content = content.substring( - 0, - content.indexOf("\n"), - ); - } - - _receiveAddressController.text = content; - _address = content; - - setState(() { - _addressToggleFlag = - _receiveAddressController - .text - .isNotEmpty; - }); - } - }, - child: - _receiveAddressController.text.isEmpty - ? const ClipboardIcon() - : const XIcon(), - ), - if (_receiveAddressController.text.isEmpty && - AppConfig.isStackCoin(selectedCrypto?.ticker) && - isDesktop) - TextFieldIconButton( - key: const Key("buyViewAddressBookButtonKey"), - onTap: () async { - final entry = await showDialog< - ContactAddressEntry? - >( - context: context, - builder: - (context) => DesktopDialog( + child: UnconstrainedBox( + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + _addressToggleFlag + ? TextFieldIconButton( + key: const Key( + "buyViewClearAddressFieldButtonKey", + ), + onTap: () { + _receiveAddressController.text = ""; + _address = ""; + setState(() { + _addressToggleFlag = false; + }); + }, + child: const XIcon(), + ) + : TextFieldIconButton( + key: const Key( + "buyViewPasteAddressFieldButtonKey", + ), + onTap: () async { + final ClipboardData? data = + await clipboard.getData( + Clipboard.kTextPlain, + ); + if (data?.text != null && + data!.text!.isNotEmpty) { + String content = data.text!.trim(); + if (content.contains("\n")) { + content = content.substring( + 0, + content.indexOf("\n"), + ); + } + + _receiveAddressController.text = + content; + _address = content; + + setState(() { + _addressToggleFlag = + _receiveAddressController + .text + .isNotEmpty; + }); + } + }, + child: + _receiveAddressController.text.isEmpty + ? const ClipboardIcon() + : const XIcon(), + ), + if (_receiveAddressController.text.isEmpty && + AppConfig.isStackCoin( + selectedCrypto?.ticker, + ) && + isDesktop) + TextFieldIconButton( + key: const Key("buyViewAddressBookButtonKey"), + onTap: () async { + final entry = await showDialog( + context: context, + builder: (context) => DesktopDialog( maxWidth: 696, maxHeight: 600, child: Column( @@ -1410,45 +1387,47 @@ class _BuyFormState extends ConsumerState { ], ), ), - ); + ); - if (entry != null) { - _receiveAddressController.text = - entry.address; - _address = entry.address; + if (entry != null) { + _receiveAddressController.text = + entry.address; + _address = entry.address; - setState(() { - _addressToggleFlag = true; - }); - } - }, - child: const AddressBookIcon(), - ), - if (_receiveAddressController.text.isEmpty && - AppConfig.isStackCoin(selectedCrypto?.ticker) && - !isDesktop) - TextFieldIconButton( - key: const Key("buyViewAddressBookButtonKey"), - onTap: () { - Navigator.of( - context, - rootNavigator: isDesktop, - ).pushNamed(AddressBookView.routeName); - }, - child: const AddressBookIcon(), - ), - if (_receiveAddressController.text.isEmpty && - !isDesktop) - TextFieldIconButton( - key: const Key("buyViewScanQrButtonKey"), - onTap: _onQrTapped, - child: const QrCodeIcon(), - ), - ], + setState(() { + _addressToggleFlag = true; + }); + } + }, + child: const AddressBookIcon(), + ), + if (_receiveAddressController.text.isEmpty && + AppConfig.isStackCoin( + selectedCrypto?.ticker, + ) && + !isDesktop) + TextFieldIconButton( + key: const Key("buyViewAddressBookButtonKey"), + onTap: () { + Navigator.of( + context, + rootNavigator: isDesktop, + ).pushNamed(AddressBookView.routeName); + }, + child: const AddressBookIcon(), + ), + if (_receiveAddressController.text.isEmpty && + !isDesktop) + TextFieldIconButton( + key: const Key("buyViewScanQrButtonKey"), + onTap: _onQrTapped, + child: const QrCodeIcon(), + ), + ], + ), + ), ), ), - ), - ), ), ), SizedBox(height: isDesktop ? 10 : 4), diff --git a/lib/pages/buy_view/sub_widgets/crypto_selection_view.dart b/lib/pages/buy_view/sub_widgets/crypto_selection_view.dart index 089b492af1..9748134e65 100644 --- a/lib/pages/buy_view/sub_widgets/crypto_selection_view.dart +++ b/lib/pages/buy_view/sub_widgets/crypto_selection_view.dart @@ -98,8 +98,9 @@ class _CryptoSelectionViewState extends ConsumerState { builder: (child) { return Background( child: Scaffold( - backgroundColor: - Theme.of(context).extension()!.background, + backgroundColor: Theme.of( + context, + ).extension()!.background, appBar: AppBar( leading: AppBarBackButton( onPressed: () async { @@ -145,45 +146,45 @@ class _CryptoSelectionViewState extends ConsumerState { focusNode: _searchFocusNode, onChanged: filter, style: STextStyles.field(context), - decoration: standardInputDecoration( - "Search", - _searchFocusNode, - context, - desktopMed: isDesktop, - ).copyWith( - prefixIcon: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 10, - vertical: 16, - ), - child: SvgPicture.asset( - Assets.svg.search, - width: 16, - height: 16, - ), - ), - suffixIcon: - _searchController.text.isNotEmpty + decoration: + standardInputDecoration( + "Search", + _searchFocusNode, + context, + desktopMed: isDesktop, + ).copyWith( + prefixIcon: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 10, + vertical: 16, + ), + child: SvgPicture.asset( + Assets.svg.search, + width: 16, + height: 16, + ), + ), + suffixIcon: _searchController.text.isNotEmpty ? Padding( - padding: const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - children: [ - TextFieldIconButton( - child: const XIcon(), - onTap: () async { - setState(() { - _searchController.text = ""; - }); - filter(""); - }, - ), - ], + padding: const EdgeInsets.only(right: 0), + child: UnconstrainedBox( + child: Row( + children: [ + TextFieldIconButton( + child: const XIcon(), + onTap: () async { + setState(() { + _searchController.text = ""; + }); + filter(""); + }, + ), + ], + ), ), - ), - ) + ) : null, - ), + ), ), ), const SizedBox(height: 10), @@ -226,14 +227,12 @@ class _CryptoSelectionViewState extends ConsumerState { const SizedBox(height: 2), Text( _coins[index].ticker.toUpperCase(), - style: STextStyles.smallMed12( - context, - ).copyWith( - color: - Theme.of(context) + style: STextStyles.smallMed12(context) + .copyWith( + color: Theme.of(context) .extension()! .textSubtitle1, - ), + ), ), ], ), diff --git a/lib/pages/exchange_view/choose_from_stack_view.dart b/lib/pages/exchange_view/choose_from_stack_view.dart index d4cc11dac5..73400e84e4 100644 --- a/lib/pages/exchange_view/choose_from_stack_view.dart +++ b/lib/pages/exchange_view/choose_from_stack_view.dart @@ -46,13 +46,12 @@ class _ChooseFromStackViewState extends ConsumerState { @override Widget build(BuildContext context) { - final walletIds = - ref - .watch(pWallets) - .wallets - .where((e) => e.info.coin == coin) - .map((e) => e.walletId) - .toList(); + final walletIds = ref + .watch(pWallets) + .wallets + .where((e) => e.info.coin == coin) + .map((e) => e.walletId) + .toList(); return Background( child: Scaffold( @@ -67,80 +66,76 @@ class _ChooseFromStackViewState extends ConsumerState { body: SafeArea( child: Padding( padding: const EdgeInsets.all(16), - child: - walletIds.isEmpty - ? Column( - children: [ - RoundedWhiteContainer( - child: Center( - child: Text( - "No ${coin.ticker.toUpperCase()} wallets", - style: STextStyles.itemSubtitle(context), - ), + child: walletIds.isEmpty + ? Column( + children: [ + RoundedWhiteContainer( + child: Center( + child: Text( + "No ${coin.ticker.toUpperCase()} wallets", + style: STextStyles.itemSubtitle(context), ), ), - ], - ) - : ListView.builder( - itemCount: walletIds.length, - itemBuilder: (context, index) { - final walletId = walletIds[index]; + ), + ], + ) + : ListView.builder( + itemCount: walletIds.length, + itemBuilder: (context, index) { + final walletId = walletIds[index]; - return Padding( - padding: const EdgeInsets.symmetric(vertical: 5.0), - child: RawMaterialButton( - splashColor: - Theme.of( - context, - ).extension()!.highlight, - materialTapTargetSize: - MaterialTapTargetSize.shrinkWrap, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular( - Constants.size.circularBorderRadius, - ), + return Padding( + padding: const EdgeInsets.symmetric(vertical: 5.0), + child: RawMaterialButton( + splashColor: Theme.of( + context, + ).extension()!.highlight, + materialTapTargetSize: + MaterialTapTargetSize.shrinkWrap, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular( + Constants.size.circularBorderRadius, ), - padding: const EdgeInsets.all(0), - // color: Theme.of(context).extension()!.popupBG, - elevation: 0, - onPressed: () async { - if (mounted) { - Navigator.of(context).pop(walletId); - } - }, - child: RoundedWhiteContainer( - // color: Colors.transparent, - child: Row( - children: [ - WalletInfoCoinIcon(coin: coin), - const SizedBox(width: 12), - Expanded( - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: - CrossAxisAlignment.start, - children: [ - Text( - ref.watch(pWalletName(walletId)), - style: STextStyles.titleBold12( - context, - ), - overflow: TextOverflow.ellipsis, - ), - const SizedBox(height: 2), - WalletInfoRowBalance( - walletId: walletIds[index], - ), - ], - ), + ), + padding: const EdgeInsets.all(0), + // color: Theme.of(context).extension()!.popupBG, + elevation: 0, + onPressed: () async { + if (mounted) { + Navigator.of(context).pop(walletId); + } + }, + child: RoundedWhiteContainer( + // color: Colors.transparent, + child: Row( + children: [ + WalletInfoCoinIcon(coin: coin), + const SizedBox(width: 12), + Expanded( + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Text( + ref.watch(pWalletName(walletId)), + style: STextStyles.titleBold12(context), + overflow: TextOverflow.ellipsis, + ), + const SizedBox(height: 2), + WalletInfoRowBalance( + walletId: walletIds[index], + ), + ], ), - ], - ), + ), + ], ), ), - ); - }, - ), + ), + ); + }, + ), ), ), ), diff --git a/lib/pages/exchange_view/confirm_change_now_send.dart b/lib/pages/exchange_view/confirm_change_now_send.dart index 69e77f13c1..ca5da07e8a 100644 --- a/lib/pages/exchange_view/confirm_change_now_send.dart +++ b/lib/pages/exchange_view/confirm_change_now_send.dart @@ -179,10 +179,9 @@ class _ConfirmChangeNowSendViewState child: Text( "Ok", style: STextStyles.button(context).copyWith( - color: - Theme.of( - context, - ).extension()!.buttonTextSecondary, + color: Theme.of( + context, + ).extension()!.buttonTextSecondary, ), ), onPressed: () { @@ -203,44 +202,38 @@ class _ConfirmChangeNowSendViewState if (Util.isDesktop) { unlocked = await showDialog( context: context, - builder: - (context) => DesktopDialog( - maxWidth: 580, - maxHeight: double.infinity, - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - const Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [DesktopDialogCloseButton()], - ), - Padding( - padding: const EdgeInsets.only( - left: 32, - right: 32, - bottom: 32, - ), - child: DesktopAuthSend(coin: coin), - ), - ], + builder: (context) => DesktopDialog( + maxWidth: 580, + maxHeight: double.infinity, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + const Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [DesktopDialogCloseButton()], ), - ), + Padding( + padding: const EdgeInsets.only(left: 32, right: 32, bottom: 32), + child: DesktopAuthSend(coin: coin), + ), + ], + ), + ), ); } else { unlocked = await Navigator.push( context, RouteGenerator.getRoute( shouldUseMaterialRoute: RouteGenerator.useMaterialPageRoute, - builder: - (_) => const LockscreenView( - showBackButton: true, - popOnSuccess: true, - routeOnSuccessArguments: true, - routeOnSuccess: "", - biometricsCancelButtonString: "CANCEL", - biometricsLocalizedReason: "Authenticate to send transaction", - biometricsAuthenticationTitle: "Confirm Transaction", - ), + builder: (_) => const LockscreenView( + showBackButton: true, + popOnSuccess: true, + routeOnSuccessArguments: true, + routeOnSuccess: "", + biometricsCancelButtonString: "CANCEL", + biometricsLocalizedReason: "Authenticate to send transaction", + biometricsAuthenticationTitle: "Confirm Transaction", + ), settings: const RouteSettings(name: "/confirmsendlockscreen"), ), ); @@ -276,11 +269,13 @@ class _ConfirmChangeNowSendViewState builder: (child) { return Background( child: Scaffold( - backgroundColor: - Theme.of(context).extension()!.background, + backgroundColor: Theme.of( + context, + ).extension()!.background, appBar: AppBar( - backgroundColor: - Theme.of(context).extension()!.backgroundAppBar, + backgroundColor: Theme.of( + context, + ).extension()!.backgroundAppBar, leading: AppBarBackButton( onPressed: () async { // if (FocusScope.of(context).hasFocus) { @@ -326,188 +321,167 @@ class _ConfirmChangeNowSendViewState }, child: ConditionalParent( condition: isDesktop, - builder: - (child) => DesktopDialog( - maxHeight: double.infinity, - maxWidth: 580, - child: Column( + builder: (child) => DesktopDialog( + maxHeight: double.infinity, + maxWidth: 580, + child: Column( + children: [ + Row( children: [ - Row( - children: [ - const SizedBox(width: 6), - const AppBarBackButton(isCompact: true, iconSize: 23), - const SizedBox(width: 12), - Text( - "Confirm ${ref.watch(pWalletCoin(walletId)).ticker} transaction", - style: STextStyles.desktopH3(context), - ), - ], + const SizedBox(width: 6), + const AppBarBackButton(isCompact: true, iconSize: 23), + const SizedBox(width: 12), + Text( + "Confirm ${ref.watch(pWalletCoin(walletId)).ticker} transaction", + style: STextStyles.desktopH3(context), ), - Padding( - padding: const EdgeInsets.only( - left: 32, - right: 32, - bottom: 32, + ], + ), + Padding( + padding: const EdgeInsets.only(left: 32, right: 32, bottom: 32), + child: Column( + children: [ + RoundedWhiteContainer( + padding: const EdgeInsets.all(0), + borderColor: Theme.of( + context, + ).extension()!.background, + child: child, ), - child: Column( + const SizedBox(height: 16), + Row( children: [ - RoundedWhiteContainer( - padding: const EdgeInsets.all(0), - borderColor: - Theme.of( - context, - ).extension()!.background, - child: child, - ), - const SizedBox(height: 16), - Row( - children: [ - Text( - "Transaction fee", - style: STextStyles.desktopTextExtraExtraSmall( - context, - ), - ), - ], + Text( + "Transaction fee", + style: STextStyles.desktopTextExtraExtraSmall( + context, + ), ), - const SizedBox(height: 10), - RoundedContainer( - color: - Theme.of( - context, - ).extension()!.textFieldDefaultBG, - child: Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - Text( - ref - .watch( - pAmountFormatter( - ref.watch(pWalletCoin(walletId)), - ), - ) - .format(widget.txData.fee!), - style: STextStyles.desktopTextExtraExtraSmall( + ], + ), + const SizedBox(height: 10), + RoundedContainer( + color: Theme.of( + context, + ).extension()!.textFieldDefaultBG, + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Text( + ref + .watch( + pAmountFormatter( + ref.watch(pWalletCoin(walletId)), + ), + ) + .format(widget.txData.fee!), + style: + STextStyles.desktopTextExtraExtraSmall( context, ).copyWith( - color: - Theme.of( - context, - ).extension()!.textDark, + color: Theme.of( + context, + ).extension()!.textDark, ), - ), - ], ), - ), - const SizedBox(height: 16), - RoundedContainer( - color: - Theme.of( - context, - ).extension()!.snackBarBackSuccess, - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - "Total amount", - style: STextStyles.titleBold12( - context, - ).copyWith( - color: - Theme.of(context) + ], + ), + ), + const SizedBox(height: 16), + RoundedContainer( + color: Theme.of( + context, + ).extension()!.snackBarBackSuccess, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + "Total amount", + style: STextStyles.titleBold12(context).copyWith( + color: Theme.of(context) + .extension()! + .textConfirmTotalAmount, + ), + ), + Builder( + builder: (context) { + final coin = ref.read(pWalletCoin(walletId)); + final fee = widget.txData.fee!; + final amount = widget.txData.amountWithoutChange!; + final total = amount + fee; + + return Text( + ref.watch(pAmountFormatter(coin)).format(total), + style: STextStyles.itemSubtitle12(context) + .copyWith( + color: Theme.of(context) .extension()! .textConfirmTotalAmount, - ), - ), - Builder( - builder: (context) { - final coin = ref.read(pWalletCoin(walletId)); - final fee = widget.txData.fee!; - final amount = - widget.txData.amountWithoutChange!; - final total = amount + fee; - - return Text( - ref - .watch(pAmountFormatter(coin)) - .format(total), - style: STextStyles.itemSubtitle12( - context, - ).copyWith( - color: - Theme.of(context) - .extension()! - .textConfirmTotalAmount, ), - textAlign: TextAlign.right, - ); - }, - ), - ], + textAlign: TextAlign.right, + ); + }, + ), + ], + ), + ), + const SizedBox(height: 16), + Row( + children: [ + Expanded( + child: SecondaryButton( + label: "Cancel", + buttonHeight: ButtonHeight.l, + onPressed: Navigator.of(context).pop, ), ), - const SizedBox(height: 16), - Row( - children: [ - Expanded( - child: SecondaryButton( - label: "Cancel", - buttonHeight: ButtonHeight.l, - onPressed: Navigator.of(context).pop, - ), - ), - const SizedBox(width: 16), - Expanded( - child: PrimaryButton( - label: "Send", - buttonHeight: isDesktop ? ButtonHeight.l : null, - onPressed: _confirmSend, - ), - ), - ], + const SizedBox(width: 16), + Expanded( + child: PrimaryButton( + label: "Send", + buttonHeight: isDesktop ? ButtonHeight.l : null, + onPressed: _confirmSend, + ), ), ], ), - ), - ], + ], + ), ), - ), + ], + ), + ), child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ ConditionalParent( condition: isDesktop, - builder: - (child) => Container( - decoration: BoxDecoration( - color: - Theme.of( - context, - ).extension()!.background, - borderRadius: BorderRadius.vertical( - top: Radius.circular( - Constants.size.circularBorderRadius, - ), - ), - ), - child: Padding( - padding: const EdgeInsets.all(12), - child: Row(children: [child]), - ), + builder: (child) => Container( + decoration: BoxDecoration( + color: Theme.of(context).extension()!.background, + borderRadius: BorderRadius.vertical( + top: Radius.circular(Constants.size.circularBorderRadius), ), + ), + child: Padding( + padding: const EdgeInsets.all(12), + child: Row(children: [child]), + ), + ), child: Text( "Send ${ref.watch(pWalletCoin(walletId)).ticker}", - style: - isDesktop - ? STextStyles.desktopTextMedium(context) - : STextStyles.pageTitleH1(context), + style: isDesktop + ? STextStyles.desktopTextMedium(context) + : STextStyles.pageTitleH1(context), ), ), isDesktop ? Container( - color: Theme.of(context).extension()!.background, - height: 1, - ) + color: Theme.of( + context, + ).extension()!.background, + height: 1, + ) : const SizedBox(height: 12), RoundedWhiteContainer( child: Column( @@ -524,9 +498,11 @@ class _ConfirmChangeNowSendViewState ), isDesktop ? Container( - color: Theme.of(context).extension()!.background, - height: 1, - ) + color: Theme.of( + context, + ).extension()!.background, + height: 1, + ) : const SizedBox(height: 12), RoundedWhiteContainer( child: Column( @@ -546,9 +522,11 @@ class _ConfirmChangeNowSendViewState ), isDesktop ? Container( - color: Theme.of(context).extension()!.background, - height: 1, - ) + color: Theme.of( + context, + ).extension()!.background, + height: 1, + ) : const SizedBox(height: 12), RoundedWhiteContainer( child: Row( @@ -557,57 +535,56 @@ class _ConfirmChangeNowSendViewState Text("Amount", style: STextStyles.smallMed12(context)), ConditionalParent( condition: isDesktop, - builder: - (child) => Row( - children: [ - child, - Builder( - builder: (context) { - final coin = ref.watch(pWalletCoin(walletId)); - final price = ref.watch( - priceAnd24hChangeNotifierProvider.select( - (value) => value.getPrice(coin), - ), - ); - final String extra; - if (price == null) { - extra = ""; - } else { - final amountWithoutChange = - widget.txData.amountWithoutChange!; - final value = (price.value * - amountWithoutChange.decimal) + builder: (child) => Row( + children: [ + child, + Builder( + builder: (context) { + final coin = ref.watch(pWalletCoin(walletId)); + final price = ref.watch( + priceAnd24hChangeNotifierProvider.select( + (value) => value.getPrice(coin), + ), + ); + final String extra; + if (price == null) { + extra = ""; + } else { + final amountWithoutChange = + widget.txData.amountWithoutChange!; + final value = + (price.value * amountWithoutChange.decimal) .toAmount(fractionDigits: 2); - final currency = ref.watch( - prefsChangeNotifierProvider.select( - (value) => value.currency, - ), - ); - final locale = ref.watch( - localeServiceChangeNotifierProvider.select( - (value) => value.locale, - ), - ); + final currency = ref.watch( + prefsChangeNotifierProvider.select( + (value) => value.currency, + ), + ); + final locale = ref.watch( + localeServiceChangeNotifierProvider.select( + (value) => value.locale, + ), + ); - extra = - " | ${value.fiatString(locale: locale)} $currency"; - } + extra = + " | ${value.fiatString(locale: locale)} $currency"; + } - return Text( - extra, - style: STextStyles.desktopTextExtraExtraSmall( + return Text( + extra, + style: + STextStyles.desktopTextExtraExtraSmall( context, ).copyWith( - color: - Theme.of(context) - .extension()! - .textSubtitle2, + color: Theme.of( + context, + ).extension()!.textSubtitle2, ), - ); - }, - ), - ], + ); + }, ), + ], + ), child: Text( ref .watch( @@ -623,9 +600,11 @@ class _ConfirmChangeNowSendViewState ), isDesktop ? Container( - color: Theme.of(context).extension()!.background, - height: 1, - ) + color: Theme.of( + context, + ).extension()!.background, + height: 1, + ) : const SizedBox(height: 12), RoundedWhiteContainer( child: Row( @@ -649,9 +628,11 @@ class _ConfirmChangeNowSendViewState ), isDesktop ? Container( - color: Theme.of(context).extension()!.background, - height: 1, - ) + color: Theme.of( + context, + ).extension()!.background, + height: 1, + ) : const SizedBox(height: 12), RoundedWhiteContainer( child: Column( @@ -668,9 +649,11 @@ class _ConfirmChangeNowSendViewState ), isDesktop ? Container( - color: Theme.of(context).extension()!.background, - height: 1, - ) + color: Theme.of( + context, + ).extension()!.background, + height: 1, + ) : const SizedBox(height: 12), RoundedWhiteContainer( child: Row( @@ -688,20 +671,18 @@ class _ConfirmChangeNowSendViewState if (!isDesktop) const SizedBox(height: 12), if (!isDesktop) RoundedContainer( - color: - Theme.of( - context, - ).extension()!.snackBarBackSuccess, + color: Theme.of( + context, + ).extension()!.snackBarBackSuccess, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( "Total amount", style: STextStyles.titleBold12(context).copyWith( - color: - Theme.of( - context, - ).extension()!.textConfirmTotalAmount, + color: Theme.of( + context, + ).extension()!.textConfirmTotalAmount, ), ), Builder( @@ -714,10 +695,9 @@ class _ConfirmChangeNowSendViewState return Text( ref.watch(pAmountFormatter(coin)).format(total), style: STextStyles.itemSubtitle12(context).copyWith( - color: - Theme.of(context) - .extension()! - .textConfirmTotalAmount, + color: Theme.of( + context, + ).extension()!.textConfirmTotalAmount, ), textAlign: TextAlign.right, ); diff --git a/lib/pages/exchange_view/exchange_form.dart b/lib/pages/exchange_view/exchange_form.dart index 675cd30cd7..f88e11c23a 100644 --- a/lib/pages/exchange_view/exchange_form.dart +++ b/lib/pages/exchange_view/exchange_form.dart @@ -104,19 +104,18 @@ class _ExchangeFormState extends ConsumerState { showDialog( context: context, barrierDismissible: false, - builder: - (_) => WillPopScope( - onWillPop: () async => false, - child: Container( - color: Theme.of( - context, - ).extension()!.overlay.withOpacity(0.6), - child: const CustomLoadingOverlay( - message: "Updating exchange rate", - eventBus: null, - ), - ), + builder: (_) => WillPopScope( + onWillPop: () async => false, + child: Container( + color: Theme.of( + context, + ).extension()!.overlay.withOpacity(0.6), + child: const CustomLoadingOverlay( + message: "Updating exchange rate", + eventBus: null, ), + ), + ), ), ); @@ -262,71 +261,68 @@ class _ExchangeFormState extends ConsumerState { _sendFocusNode.unfocus(); _receiveFocusNode.unfocus(); - final result = - isDesktop - ? await showDialog( - context: context, - builder: (context) { - return DesktopDialog( - maxHeight: 700, - maxWidth: 580, - child: Column( - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Padding( - padding: const EdgeInsets.only(left: 32), - child: Text( - "Choose a coin to exchange", - style: STextStyles.desktopH3(context), - ), - ), - const DesktopDialogCloseButton(), - ], - ), - Expanded( - child: Padding( - padding: const EdgeInsets.only( - left: 32, - right: 32, - bottom: 32, + final result = isDesktop + ? await showDialog( + context: context, + builder: (context) { + return DesktopDialog( + maxHeight: 700, + maxWidth: 580, + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Padding( + padding: const EdgeInsets.only(left: 32), + child: Text( + "Choose a coin to exchange", + style: STextStyles.desktopH3(context), ), - child: Row( - children: [ - Expanded( - child: RoundedWhiteContainer( - padding: const EdgeInsets.all(16), - borderColor: - Theme.of( - context, - ).extension()!.background, - child: ExchangeCurrencySelectionView( - pairedCurrency: paired, - isFixedRate: isFixedRate, - willChangeIsSend: willChangeIsSend, - ), + ), + const DesktopDialogCloseButton(), + ], + ), + Expanded( + child: Padding( + padding: const EdgeInsets.only( + left: 32, + right: 32, + bottom: 32, + ), + child: Row( + children: [ + Expanded( + child: RoundedWhiteContainer( + padding: const EdgeInsets.all(16), + borderColor: Theme.of( + context, + ).extension()!.background, + child: ExchangeCurrencySelectionView( + pairedCurrency: paired, + isFixedRate: isFixedRate, + willChangeIsSend: willChangeIsSend, ), ), - ], - ), + ), + ], ), ), - ], - ), - ); - }, - ) - : await Navigator.of(context).push( - MaterialPageRoute( - builder: - (_) => ExchangeCurrencySelectionView( - pairedCurrency: paired, - isFixedRate: isFixedRate, - willChangeIsSend: willChangeIsSend, ), + ], + ), + ); + }, + ) + : await Navigator.of(context).push( + MaterialPageRoute( + builder: (_) => ExchangeCurrencySelectionView( + pairedCurrency: paired, + isFixedRate: isFixedRate, + willChangeIsSend: willChangeIsSend, ), - ); + ), + ); if (mounted && result is AggregateCurrency) { return result; @@ -402,11 +398,10 @@ class _ExchangeFormState extends ConsumerState { if (fromCurrency == null || toCurrency == null) { await showDialog( context: context, - builder: - (context) => const StackOkDialog( - title: "Missing currency!", - message: "This should not happen. Please contact support", - ), + builder: (context) => const StackOkDialog( + title: "Missing currency!", + message: "This should not happen. Please contact support", + ), ); return; @@ -426,12 +421,11 @@ class _ExchangeFormState extends ConsumerState { if (mounted) { await showDialog( context: context, - builder: - (context) => const StackOkDialog( - title: "WOW error", - message: - "Wownero is temporarily disabled as a receiving currency for fixed rate trades due to network issues", - ), + builder: (context) => const StackOkDialog( + title: "WOW error", + message: + "Wownero is temporarily disabled as a receiving currency for fixed rate trades due to network issues", + ), ); } @@ -440,12 +434,12 @@ class _ExchangeFormState extends ConsumerState { String rate; - final amountToSend = - estimate.reversed ? estimate.estimatedAmount : sendAmount; - final amountToReceive = - estimate.reversed - ? ref.read(efReceiveAmountProvider)! - : estimate.estimatedAmount; + final amountToSend = estimate.reversed + ? estimate.estimatedAmount + : sendAmount; + final amountToReceive = estimate.reversed + ? ref.read(efReceiveAmountProvider)! + : estimate.estimatedAmount; switch (rateType) { case ExchangeRateType.estimated: @@ -495,11 +489,10 @@ class _ExchangeFormState extends ConsumerState { child: SecondaryButton( label: "Cancel", buttonHeight: ButtonHeight.l, - onPressed: - () => Navigator.of( - context, - rootNavigator: true, - ).pop(true), + onPressed: () => Navigator.of( + context, + rootNavigator: true, + ).pop(true), ), ), const SizedBox(width: 16), @@ -507,11 +500,10 @@ class _ExchangeFormState extends ConsumerState { child: PrimaryButton( label: "Attempt", buttonHeight: ButtonHeight.l, - onPressed: - () => Navigator.of( - context, - rootNavigator: true, - ).pop(false), + onPressed: () => Navigator.of( + context, + rootNavigator: true, + ).pop(false), ), ), ], @@ -631,10 +623,9 @@ class _ExchangeFormState extends ConsumerState { return false; } - final String? ticker = - isSend - ? ref.read(efCurrencyPairProvider).send?.ticker - : ref.read(efCurrencyPairProvider).receive?.ticker; + final String? ticker = isSend + ? ref.read(efCurrencyPairProvider).send?.ticker + : ref.read(efCurrencyPairProvider).receive?.ticker; if (ticker == null) { return false; @@ -652,10 +643,9 @@ class _ExchangeFormState extends ConsumerState { } final reversed = ref.read(efReversedProvider); - final amount = - reversed - ? ref.read(efReceiveAmountProvider) - : ref.read(efSendAmountProvider); + final amount = reversed + ? ref.read(efReceiveAmountProvider) + : ref.read(efSendAmountProvider); final pair = ref.read(efCurrencyPairProvider); if (amount == null || @@ -842,8 +832,8 @@ class _ExchangeFormState extends ConsumerState { // if (_swapLock) { _receiveController.text = isEstimated && ref.read(efReceiveAmountStringProvider).isEmpty - ? "-" - : ref.read(efReceiveAmountStringProvider); + ? "-" + : ref.read(efReceiveAmountStringProvider); // } if (_receiveFocusNode.hasFocus) { @@ -891,11 +881,13 @@ class _ExchangeFormState extends ConsumerState { textStyle: STextStyles.smallMed14(context).copyWith( color: Theme.of(context).extension()!.textDark, ), - buttonColor: - Theme.of(context).extension()!.buttonBackSecondary, + buttonColor: Theme.of( + context, + ).extension()!.buttonBackSecondary, borderRadius: Constants.size.circularBorderRadius, - background: - Theme.of(context).extension()!.textFieldDefaultBG, + background: Theme.of( + context, + ).extension()!.textFieldDefaultBG, onTap: () { if (_sendController.text == "-") { _sendController.text = ""; @@ -922,23 +914,18 @@ class _ExchangeFormState extends ConsumerState { ), ConditionalParent( condition: isDesktop, - builder: - (child) => MouseRegion( - cursor: SystemMouseCursors.click, - child: child, - ), + builder: (child) => + MouseRegion(cursor: SystemMouseCursors.click, child: child), child: Semantics( label: "Swap Button. Reverse The Exchange Currencies.", excludeSemantics: true, child: RoundedContainer( - padding: - isDesktop - ? const EdgeInsets.all(6) - : const EdgeInsets.all(2), - color: - Theme.of( - context, - ).extension()!.buttonBackSecondary, + padding: isDesktop + ? const EdgeInsets.all(6) + : const EdgeInsets.all(2), + color: Theme.of( + context, + ).extension()!.buttonBackSecondary, radiusMultiplier: 0.75, child: GestureDetector( onTap: () async { @@ -950,10 +937,9 @@ class _ExchangeFormState extends ConsumerState { Assets.svg.swap, width: 20, height: 20, - color: - Theme.of( - context, - ).extension()!.accentColorDark, + color: Theme.of( + context, + ).extension()!.accentColorDark, ), ), ), @@ -972,19 +958,20 @@ class _ExchangeFormState extends ConsumerState { textStyle: STextStyles.smallMed14(context).copyWith( color: Theme.of(context).extension()!.textDark, ), - buttonColor: - Theme.of(context).extension()!.buttonBackSecondary, + buttonColor: Theme.of( + context, + ).extension()!.buttonBackSecondary, borderRadius: Constants.size.circularBorderRadius, - background: - Theme.of(context).extension()!.textFieldDefaultBG, - onTap: - rateType == ExchangeRateType.estimated - ? null - : () { - if (_sendController.text == "-") { - _sendController.text = ""; - } - }, + background: Theme.of( + context, + ).extension()!.textFieldDefaultBG, + onTap: rateType == ExchangeRateType.estimated + ? null + : () { + if (_sendController.text == "-") { + _sendController.text = ""; + } + }, onChanged: receiveFieldOnChanged, onButtonTap: selectReceiveCurrency, isWalletCoin: isWalletCoin(coin, true), @@ -1002,15 +989,15 @@ class _ExchangeFormState extends ConsumerState { duration: const Duration(milliseconds: 300), child: ref.watch(efSendAmountProvider) == null && - ref.watch(efReceiveAmountProvider) == null - ? const SizedBox(height: 0) - : Padding( - padding: EdgeInsets.only(top: isDesktop ? 20 : 12), - child: ExchangeProviderOptions( - fixedRate: rateType == ExchangeRateType.fixed, - reversed: ref.watch(efReversedProvider), - ), + ref.watch(efReceiveAmountProvider) == null + ? const SizedBox(height: 0) + : Padding( + padding: EdgeInsets.only(top: isDesktop ? 20 : 12), + child: ExchangeProviderOptions( + fixedRate: rateType == ExchangeRateType.fixed, + reversed: ref.watch(efReversedProvider), ), + ), ), SizedBox(height: isDesktop ? 20 : 12), PrimaryButton( diff --git a/lib/pages/exchange_view/exchange_step_views/step_2_view.dart b/lib/pages/exchange_view/exchange_step_views/step_2_view.dart index a731bf9dfc..a30e5229bc 100644 --- a/lib/pages/exchange_view/exchange_step_views/step_2_view.dart +++ b/lib/pages/exchange_view/exchange_step_views/step_2_view.dart @@ -373,156 +373,168 @@ class _Step2ViewState extends ConsumerState { !supportsRefund); }); }, - decoration: standardInputDecoration( - "Enter the ${model.receiveTicker.toUpperCase()} payout address", - _toFocusNode, - context, - ).copyWith( - contentPadding: const EdgeInsets.only( - left: 16, - top: 6, - bottom: 8, - right: 5, - ), - suffixIcon: Padding( - padding: - _toController.text.isEmpty + decoration: + standardInputDecoration( + "Enter the ${model.receiveTicker.toUpperCase()} payout address", + _toFocusNode, + context, + ).copyWith( + contentPadding: const EdgeInsets.only( + left: 16, + top: 6, + bottom: 8, + right: 5, + ), + suffixIcon: Padding( + padding: _toController.text.isEmpty ? const EdgeInsets.only(right: 8) : const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceAround, - children: [ - _toController.text.isNotEmpty - ? TextFieldIconButton( - key: const Key( - "sendViewClearAddressFieldButtonKey", - ), - onTap: () { - _toController.text = ""; - model.recipientAddress = - _toController.text; - - setState(() { - enableNext = - _toController - .text - .isNotEmpty && - (_refundController - .text - .isNotEmpty || - !supportsRefund); - }); - }, - child: const XIcon(), - ) - : TextFieldIconButton( - key: const Key( - "sendViewPasteAddressFieldButtonKey", - ), - onTap: () async { - final ClipboardData? data = - await clipboard.getData( - Clipboard.kTextPlain, - ); - if (data?.text != null && - data!.text!.isNotEmpty) { - final content = - data.text!.trim(); - - _toController.text = - content; - model.recipientAddress = - _toController.text; - - setState(() { - enableNext = - _toController - .text - .isNotEmpty && - (_refundController + child: UnconstrainedBox( + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceAround, + children: [ + _toController.text.isNotEmpty + ? TextFieldIconButton( + key: const Key( + "sendViewClearAddressFieldButtonKey", + ), + onTap: () { + _toController.text = ""; + model.recipientAddress = + _toController.text; + + setState(() { + enableNext = + _toController .text - .isNotEmpty || - !supportsRefund); - }); - } - }, - child: - _toController.text.isEmpty - ? const ClipboardIcon() - : const XIcon(), - ), - if (_toController.text.isEmpty) - TextFieldIconButton( - key: const Key( - "sendViewAddressBookButtonKey", - ), - onTap: () { - ref - .read( - exchangeFlowIsActiveStateProvider - .state, + .isNotEmpty && + (_refundController + .text + .isNotEmpty || + !supportsRefund); + }); + }, + child: const XIcon(), ) - .state = true; - Navigator.of( - context, - ).pushNamed(AddressBookView.routeName).then(( - _, - ) { - ref - .read( - exchangeFlowIsActiveStateProvider - .state, - ) - .state = false; + : TextFieldIconButton( + key: const Key( + "sendViewPasteAddressFieldButtonKey", + ), + onTap: () async { + final ClipboardData? + data = await clipboard + .getData( + Clipboard + .kTextPlain, + ); + if (data?.text != + null && + data! + .text! + .isNotEmpty) { + final content = data + .text! + .trim(); + + _toController.text = + content; + model.recipientAddress = + _toController + .text; - final address = + setState(() { + enableNext = + _toController + .text + .isNotEmpty && + (_refundController + .text + .isNotEmpty || + !supportsRefund); + }); + } + }, + child: + _toController + .text + .isEmpty + ? const ClipboardIcon() + : const XIcon(), + ), + if (_toController.text.isEmpty) + TextFieldIconButton( + key: const Key( + "sendViewAddressBookButtonKey", + ), + onTap: () { + ref + .read( + exchangeFlowIsActiveStateProvider + .state, + ) + .state = + true; + Navigator.of( + context, + ).pushNamed(AddressBookView.routeName).then(( + _, + ) { ref + .read( + exchangeFlowIsActiveStateProvider + .state, + ) + .state = + false; + + final address = ref .read( exchangeFromAddressBookAddressStateProvider .state, ) .state; - if (address.isNotEmpty) { - _toController.text = - address; - model.recipientAddress = - _toController.text; - ref - .read( - exchangeFromAddressBookAddressStateProvider - .state, - ) - .state = ""; - } - setState(() { - enableNext = - _toController - .text - .isNotEmpty && - (_refundController + if (address.isNotEmpty) { + _toController.text = + address; + model.recipientAddress = + _toController.text; + ref + .read( + exchangeFromAddressBookAddressStateProvider + .state, + ) + .state = + ""; + } + setState(() { + enableNext = + _toController .text - .isNotEmpty || - !supportsRefund); - }); - }); - }, - child: const AddressBookIcon(), - ), - if (_toController.text.isEmpty) - TextFieldIconButton( - key: const Key( - "sendViewScanQrButtonKey", - ), - onTap: _onToQrTapped, - child: const QrCodeIcon(), - ), - ], + .isNotEmpty && + (_refundController + .text + .isNotEmpty || + !supportsRefund); + }); + }); + }, + child: + const AddressBookIcon(), + ), + if (_toController.text.isEmpty) + TextFieldIconButton( + key: const Key( + "sendViewScanQrButtonKey", + ), + onTap: _onToQrTapped, + child: const QrCodeIcon(), + ), + ], + ), + ), ), ), - ), - ), ), ), const SizedBox(height: 6), @@ -628,154 +640,172 @@ class _Step2ViewState extends ConsumerState { _refundController.text.isNotEmpty; }); }, - decoration: standardInputDecoration( - "Enter ${model.sendTicker.toUpperCase()} refund address", - _refundFocusNode, - context, - ).copyWith( - contentPadding: const EdgeInsets.only( - left: 16, - top: 6, - bottom: 8, - right: 5, - ), - suffixIcon: Padding( - padding: - _refundController.text.isEmpty + decoration: + standardInputDecoration( + "Enter ${model.sendTicker.toUpperCase()} refund address", + _refundFocusNode, + context, + ).copyWith( + contentPadding: const EdgeInsets.only( + left: 16, + top: 6, + bottom: 8, + right: 5, + ), + suffixIcon: Padding( + padding: + _refundController.text.isEmpty ? const EdgeInsets.only(right: 16) : const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceAround, - children: [ - _refundController.text.isNotEmpty - ? TextFieldIconButton( - key: const Key( - "sendViewClearAddressFieldButtonKey", - ), - onTap: () { - _refundController.text = ""; - model.refundAddress = - _refundController.text; - - setState(() { - enableNext = - _toController - .text - .isNotEmpty && - _refundController - .text - .isNotEmpty; - }); - }, - child: const XIcon(), - ) - : TextFieldIconButton( - key: const Key( - "sendViewPasteAddressFieldButtonKey", - ), - onTap: () async { - final ClipboardData? data = - await clipboard.getData( - Clipboard.kTextPlain, - ); - if (data?.text != null && - data! - .text! - .isNotEmpty) { - final content = - data.text!.trim(); - - _refundController.text = - content; - model.refundAddress = + child: UnconstrainedBox( + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceAround, + children: [ + _refundController + .text + .isNotEmpty + ? TextFieldIconButton( + key: const Key( + "sendViewClearAddressFieldButtonKey", + ), + onTap: () { _refundController - .text; + .text = + ""; + model.refundAddress = + _refundController + .text; + + setState(() { + enableNext = + _toController + .text + .isNotEmpty && + _refundController + .text + .isNotEmpty; + }); + }, + child: const XIcon(), + ) + : TextFieldIconButton( + key: const Key( + "sendViewPasteAddressFieldButtonKey", + ), + onTap: () async { + final ClipboardData? + data = await clipboard + .getData( + Clipboard + .kTextPlain, + ); + if (data?.text != + null && + data! + .text! + .isNotEmpty) { + final content = data + .text! + .trim(); - setState(() { - enableNext = - _toController - .text - .isNotEmpty && + _refundController + .text = + content; + model.refundAddress = + _refundController + .text; + + setState(() { + enableNext = + _toController + .text + .isNotEmpty && + _refundController + .text + .isNotEmpty; + }); + } + }, + child: _refundController .text - .isNotEmpty; - }); - } - }, - child: - _refundController - .text - .isEmpty - ? const ClipboardIcon() - : const XIcon(), - ), - if (_refundController.text.isEmpty) - TextFieldIconButton( - key: const Key( - "sendViewAddressBookButtonKey", - ), - onTap: () { - ref - .read( - exchangeFlowIsActiveStateProvider - .state, - ) - .state = true; - Navigator.of(context) - .pushNamed( - AddressBookView - .routeName, - ) - .then((_) { - ref - .read( - exchangeFlowIsActiveStateProvider - .state, - ) - .state = false; - final address = + .isEmpty + ? const ClipboardIcon() + : const XIcon(), + ), + if (_refundController + .text + .isEmpty) + TextFieldIconButton( + key: const Key( + "sendViewAddressBookButtonKey", + ), + onTap: () { + ref + .read( + exchangeFlowIsActiveStateProvider + .state, + ) + .state = + true; + Navigator.of(context) + .pushNamed( + AddressBookView + .routeName, + ) + .then((_) { ref + .read( + exchangeFlowIsActiveStateProvider + .state, + ) + .state = + false; + final address = ref .read( exchangeFromAddressBookAddressStateProvider .state, ) .state; - if (address - .isNotEmpty) { - _refundController - .text = address; - model.refundAddress = + if (address + .isNotEmpty) { _refundController - .text; - } - setState(() { - enableNext = - _toController - .text - .isNotEmpty && - _refundController - .text - .isNotEmpty; - }); - }); - }, - child: const AddressBookIcon(), - ), - if (_refundController.text.isEmpty) - TextFieldIconButton( - key: const Key( - "sendViewScanQrButtonKey", - ), - onTap: _onRefundQrTapped, - child: const QrCodeIcon(), - ), - ], + .text = + address; + model.refundAddress = + _refundController + .text; + } + setState(() { + enableNext = + _toController + .text + .isNotEmpty && + _refundController + .text + .isNotEmpty; + }); + }); + }, + child: + const AddressBookIcon(), + ), + if (_refundController + .text + .isEmpty) + TextFieldIconButton( + key: const Key( + "sendViewScanQrButtonKey", + ), + onTap: _onRefundQrTapped, + child: const QrCodeIcon(), + ), + ], + ), + ), ), ), - ), - ), ), ), if (supportsRefund) const SizedBox(height: 6), @@ -802,14 +832,12 @@ class _Step2ViewState extends ConsumerState { ), child: Text( "Back", - style: STextStyles.button( - context, - ).copyWith( - color: - Theme.of(context) + style: STextStyles.button(context) + .copyWith( + color: Theme.of(context) .extension()! .buttonTextSecondary, - ), + ), ), ), ), diff --git a/lib/pages/exchange_view/exchange_step_views/step_4_view.dart b/lib/pages/exchange_view/exchange_step_views/step_4_view.dart index 973298bd62..df3865f825 100644 --- a/lib/pages/exchange_view/exchange_step_views/step_4_view.dart +++ b/lib/pages/exchange_view/exchange_step_views/step_4_view.dart @@ -162,8 +162,9 @@ class _Step4ViewState extends ConsumerState { return await showModalBottomSheet( context: context, - backgroundColor: - Theme.of(context).extension()!.backgroundAppBar, + backgroundColor: Theme.of( + context, + ).extension()!.backgroundAppBar, shape: RoundedRectangleBorder( borderRadius: BorderRadius.vertical( top: Radius.circular(Constants.size.circularBorderRadius * 3), @@ -263,12 +264,11 @@ class _Step4ViewState extends ConsumerState { ), ); } else { - final memo = - wallet.info.coin is Stellar - ? model.trade!.payInExtraId.isNotEmpty - ? model.trade!.payInExtraId - : null - : null; + final memo = wallet.info.coin is Stellar + ? model.trade!.payInExtraId.isNotEmpty + ? model.trade!.payInExtraId + : null + : null; txDataFuture = wallet.prepareSend( txData: TxData( recipients: [recipient], @@ -297,14 +297,13 @@ class _Step4ViewState extends ConsumerState { Navigator.of(context).push( RouteGenerator.getRoute( shouldUseMaterialRoute: RouteGenerator.useMaterialPageRoute, - builder: - (_) => ConfirmChangeNowSendView( - txData: txData, - walletId: tuple.item1, - routeOnSuccessName: HomeView.routeName, - trade: model.trade!, - shouldSendPublicFiroFunds: firoPublicSend, - ), + builder: (_) => ConfirmChangeNowSendView( + txData: txData, + walletId: tuple.item1, + routeOnSuccessName: HomeView.routeName, + trade: model.trade!, + shouldSendPublicFiroFunds: firoPublicSend, + ), settings: const RouteSettings( name: ConfirmChangeNowSendView.routeName, ), @@ -335,10 +334,9 @@ class _Step4ViewState extends ConsumerState { child: Text( "Ok", style: STextStyles.button(context).copyWith( - color: - Theme.of( - context, - ).extension()!.buttonTextSecondary, + color: Theme.of( + context, + ).extension()!.buttonTextSecondary, ), ), onPressed: () { @@ -362,8 +360,9 @@ class _Step4ViewState extends ConsumerState { }, child: Background( child: Scaffold( - backgroundColor: - Theme.of(context).extension()!.background, + backgroundColor: Theme.of( + context, + ).extension()!.background, appBar: AppBar( leading: Padding( padding: const EdgeInsets.all(10), @@ -375,10 +374,9 @@ class _Step4ViewState extends ConsumerState { Assets.svg.x, width: 24, height: 24, - color: - Theme.of( - context, - ).extension()!.topNavIconPrimary, + color: Theme.of( + context, + ).extension()!.topNavIconPrimary, ), onPressed: _close, ), @@ -415,34 +413,29 @@ class _Step4ViewState extends ConsumerState { ), const SizedBox(height: 12), RoundedContainer( - color: - Theme.of(context) - .extension()! - .warningBackground, + color: Theme.of( + context, + ).extension()!.warningBackground, child: RichText( text: TextSpan( text: "You must send at least ${model.sendAmount.toString()} ${model.sendTicker}. ", - style: STextStyles.label700( - context, - ).copyWith( - color: - Theme.of(context) + style: STextStyles.label700(context) + .copyWith( + color: Theme.of(context) .extension()! .warningForeground, - ), + ), children: [ TextSpan( text: "If you send less than ${model.sendAmount.toString()} ${model.sendTicker}, your transaction may not be converted and it may not be refunded.", - style: STextStyles.label( - context, - ).copyWith( - color: - Theme.of(context) + style: STextStyles.label(context) + .copyWith( + color: Theme.of(context) .extension()! .warningForeground, - ), + ), ), ], ), @@ -484,12 +477,9 @@ class _Step4ViewState extends ConsumerState { children: [ SvgPicture.asset( Assets.svg.copy, - color: - Theme.of(context) - .extension< - StackColors - >()! - .infoItemIcons, + color: Theme.of(context) + .extension()! + .infoItemIcons, width: 10, ), const SizedBox(width: 4), @@ -550,12 +540,9 @@ class _Step4ViewState extends ConsumerState { children: [ SvgPicture.asset( Assets.svg.copy, - color: - Theme.of(context) - .extension< - StackColors - >()! - .infoItemIcons, + color: Theme.of(context) + .extension()! + .infoItemIcons, width: 10, ), const SizedBox(width: 4), @@ -618,12 +605,9 @@ class _Step4ViewState extends ConsumerState { children: [ SvgPicture.asset( Assets.svg.copy, - color: - Theme.of(context) - .extension< - StackColors - >()! - .infoItemIcons, + color: Theme.of(context) + .extension()! + .infoItemIcons, width: 10, ), const SizedBox(width: 4), @@ -686,10 +670,9 @@ class _Step4ViewState extends ConsumerState { }, child: SvgPicture.asset( Assets.svg.copy, - color: - Theme.of(context) - .extension()! - .infoItemIcons, + color: Theme.of(context) + .extension()! + .infoItemIcons, width: 12, ), ), @@ -710,13 +693,12 @@ class _Step4ViewState extends ConsumerState { ), Text( _statusString, - style: STextStyles.itemSubtitle( - context, - ).copyWith( - color: Theme.of(context) - .extension()! - .colorForStatus(_statusString), - ), + style: STextStyles.itemSubtitle(context) + .copyWith( + color: Theme.of(context) + .extension()! + .colorForStatus(_statusString), + ), ), ], ), @@ -760,11 +742,10 @@ class _Step4ViewState extends ConsumerState { const Spacer(), Expanded( child: TextButton( - onPressed: - () => - Navigator.of( - context, - ).pop(), + onPressed: () => + Navigator.of( + context, + ).pop(), style: Theme.of(context) .extension< StackColors @@ -774,16 +755,16 @@ class _Step4ViewState extends ConsumerState { ), child: Text( "Cancel", - style: STextStyles.button( - context, - ).copyWith( - color: - Theme.of(context) + style: + STextStyles.button( + context, + ).copyWith( + color: Theme.of(context) .extension< StackColors >()! .buttonTextSecondary, - ), + ), ), ), ), @@ -811,79 +792,70 @@ class _Step4ViewState extends ConsumerState { String buttonTitle = "Send from ${AppConfig.appName}"; - final tuple = - ref - .read( - exchangeSendFromWalletIdStateProvider - .state, - ) - .state; + final tuple = ref + .read( + exchangeSendFromWalletIdStateProvider + .state, + ) + .state; if (tuple != null && model.sendTicker.toLowerCase() == tuple.item2.ticker.toLowerCase()) { - final walletName = - ref - .read(pWallets) - .getWallet(tuple.item1) - .info - .name; + final walletName = ref + .read(pWallets) + .getWallet(tuple.item1) + .info + .name; buttonTitle = "Send from $walletName"; } return TextButton( onPressed: tuple != null && - model.sendTicker - .toLowerCase() == - tuple.item2.ticker - .toLowerCase() - ? () async { - await _confirmSend(tuple); - } - : () { - Navigator.of(context).push( - RouteGenerator.getRoute( - shouldUseMaterialRoute: - RouteGenerator - .useMaterialPageRoute, - builder: ( - BuildContext context, - ) { - final coin = AppConfig - .coins - .firstWhere( - (e) => - e.ticker - .toLowerCase() == - model - .trade! - .payInCurrency - .toLowerCase(), - ); - - return SendFromView( - coin: coin, - amount: model.sendAmount - .toAmount( - fractionDigits: - coin.fractionDigits, - ), - address: - model - .trade! - .payInAddress, - trade: model.trade!, - ); - }, - settings: - const RouteSettings( - name: - SendFromView - .routeName, - ), + model.sendTicker.toLowerCase() == + tuple.item2.ticker + .toLowerCase() + ? () async { + await _confirmSend(tuple); + } + : () { + Navigator.of(context).push( + RouteGenerator.getRoute( + shouldUseMaterialRoute: + RouteGenerator + .useMaterialPageRoute, + builder: (BuildContext context) { + final coin = AppConfig.coins + .firstWhere( + (e) => + e.ticker + .toLowerCase() == + model + .trade! + .payInCurrency + .toLowerCase(), + ); + + return SendFromView( + coin: coin, + amount: model.sendAmount + .toAmount( + fractionDigits: coin + .fractionDigits, + ), + address: model + .trade! + .payInAddress, + trade: model.trade!, + ); + }, + settings: const RouteSettings( + name: + SendFromView.routeName, ), - ); - }, + ), + ); + }, style: Theme.of(context) .extension()! .getSecondaryEnabledButtonStyle( @@ -891,14 +863,12 @@ class _Step4ViewState extends ConsumerState { ), child: Text( buttonTitle, - style: STextStyles.button( - context, - ).copyWith( - color: - Theme.of(context) + style: STextStyles.button(context) + .copyWith( + color: Theme.of(context) .extension()! .buttonTextSecondary, - ), + ), ), ); }, diff --git a/lib/pages/exchange_view/send_from_view.dart b/lib/pages/exchange_view/send_from_view.dart index fa0283ff45..f31134bb55 100644 --- a/lib/pages/exchange_view/send_from_view.dart +++ b/lib/pages/exchange_view/send_from_view.dart @@ -92,13 +92,12 @@ class _SendFromViewState extends ConsumerState { Widget build(BuildContext context) { debugPrint("BUILD: $runtimeType"); - final walletIds = - ref - .watch(pWallets) - .wallets - .where((e) => e.info.coin == coin) - .map((e) => e.walletId) - .toList(); + final walletIds = ref + .watch(pWallets) + .wallets + .where((e) => e.info.coin == coin) + .map((e) => e.walletId) + .toList(); final isDesktop = Util.isDesktop; @@ -107,8 +106,9 @@ class _SendFromViewState extends ConsumerState { builder: (child) { return Background( child: Scaffold( - backgroundColor: - Theme.of(context).extension()!.background, + backgroundColor: Theme.of( + context, + ).extension()!.background, appBar: AppBar( leading: AppBarBackButton( onPressed: () { @@ -125,41 +125,35 @@ class _SendFromViewState extends ConsumerState { }, child: ConditionalParent( condition: isDesktop, - builder: - (child) => DesktopDialog( - maxHeight: double.infinity, - child: Column( + builder: (child) => DesktopDialog( + maxHeight: double.infinity, + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Padding( - padding: const EdgeInsets.only(left: 32), - child: Text( - "Send from ${AppConfig.prefix}", - style: STextStyles.desktopH3(context), - ), - ), - DesktopDialogCloseButton( - onPressedOverride: - Navigator.of( - context, - rootNavigator: widget.shouldPopRoot, - ).pop, - ), - ], - ), Padding( - padding: const EdgeInsets.only( - left: 32, - right: 32, - bottom: 32, + padding: const EdgeInsets.only(left: 32), + child: Text( + "Send from ${AppConfig.prefix}", + style: STextStyles.desktopH3(context), ), - child: child, + ), + DesktopDialogCloseButton( + onPressedOverride: Navigator.of( + context, + rootNavigator: widget.shouldPopRoot, + ).pop, ), ], ), - ), + Padding( + padding: const EdgeInsets.only(left: 32, right: 32, bottom: 32), + child: child, + ), + ], + ), + ), child: Column( mainAxisAlignment: MainAxisAlignment.start, children: [ @@ -167,10 +161,9 @@ class _SendFromViewState extends ConsumerState { children: [ Text( "You need to send ${ref.watch(pAmountFormatter(coin)).format(amount)}", - style: - isDesktop - ? STextStyles.desktopTextExtraExtraSmall(context) - : STextStyles.itemSubtitle(context), + style: isDesktop + ? STextStyles.desktopTextExtraExtraSmall(context) + : STextStyles.itemSubtitle(context), ), ], ), @@ -245,15 +238,11 @@ class _SendFromCardState extends ConsumerState { builder: (context) { return ConditionalParent( condition: Util.isDesktop, - builder: - (child) => DesktopDialog( - maxWidth: 400, - maxHeight: double.infinity, - child: Padding( - padding: const EdgeInsets.all(32), - child: child, - ), - ), + builder: (child) => DesktopDialog( + maxWidth: 400, + maxHeight: double.infinity, + child: Padding(padding: const EdgeInsets.all(32), child: child), + ), child: BuildingTransactionDialog( coin: coin, isSpark: @@ -292,12 +281,11 @@ class _SendFromCardState extends ConsumerState { // if not firo then do normal send if (shouldSendPublicFiroFunds == null) { - final memo = - coin is Stellar - ? trade.payInExtraId.isNotEmpty - ? trade.payInExtraId - : null - : null; + final memo = coin is Stellar + ? trade.payInExtraId.isNotEmpty + ? trade.payInExtraId + : null + : null; txDataFuture = wallet.prepareSend( txData: TxData( recipients: [recipient], @@ -346,18 +334,16 @@ class _SendFromCardState extends ConsumerState { await Navigator.of(context).push( RouteGenerator.getRoute( shouldUseMaterialRoute: RouteGenerator.useMaterialPageRoute, - builder: - (_) => ConfirmChangeNowSendView( - txData: txData, - walletId: walletId, - routeOnSuccessName: - Util.isDesktop - ? DesktopExchangeView.routeName - : HomeView.routeName, - trade: trade, - shouldSendPublicFiroFunds: shouldSendPublicFiroFunds, - fromDesktopStep4: widget.fromDesktopStep4, - ), + builder: (_) => ConfirmChangeNowSendView( + txData: txData, + walletId: walletId, + routeOnSuccessName: Util.isDesktop + ? DesktopExchangeView.routeName + : HomeView.routeName, + trade: trade, + shouldSendPublicFiroFunds: shouldSendPublicFiroFunds, + fromDesktopStep4: widget.fromDesktopStep4, + ), settings: const RouteSettings( name: ConfirmChangeNowSendView.routeName, ), @@ -386,10 +372,9 @@ class _SendFromCardState extends ConsumerState { child: Text( "Ok", style: STextStyles.button(context).copyWith( - color: - Theme.of( - context, - ).extension()!.buttonTextSecondary, + color: Theme.of( + context, + ).extension()!.buttonTextSecondary, ), ), onPressed: () { @@ -422,161 +407,86 @@ class _SendFromCardState extends ConsumerState { padding: const EdgeInsets.all(0), child: ConditionalParent( condition: isFiro, - builder: - (child) => Expandable( - header: Container( - color: Colors.transparent, - child: Padding(padding: const EdgeInsets.all(12), child: child), - ), - body: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - if (!trade.exchangeName.startsWith( - TrocadorExchange.exchangeName, - )) - MaterialButton( - splashColor: - Theme.of(context).extension()!.highlight, - key: Key( - "walletsSheetItemButtonFiroPrivateKey_$walletId", - ), - padding: const EdgeInsets.all(0), - materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular( - Constants.size.circularBorderRadius, - ), + builder: (child) => Expandable( + header: Container( + color: Colors.transparent, + child: Padding(padding: const EdgeInsets.all(12), child: child), + ), + body: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (!trade.exchangeName.startsWith(TrocadorExchange.exchangeName)) + MaterialButton( + splashColor: Theme.of( + context, + ).extension()!.highlight, + key: Key("walletsSheetItemButtonFiroPrivateKey_$walletId"), + padding: const EdgeInsets.all(0), + materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular( + Constants.size.circularBorderRadius, + ), + ), + onPressed: () async { + if (mounted) { + unawaited(_send(shouldSendPublicFiroFunds: false)); + } + }, + child: Container( + color: Colors.transparent, + child: Padding( + padding: const EdgeInsets.only( + top: 6, + left: 16, + right: 16, + bottom: 6, ), - onPressed: () async { - if (mounted) { - unawaited(_send(shouldSendPublicFiroFunds: false)); - } - }, - child: Container( - color: Colors.transparent, - child: Padding( - padding: const EdgeInsets.only( - top: 6, - left: 16, - right: 16, - bottom: 6, - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, children: [ - Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - "Use private balance", - style: STextStyles.itemSubtitle(context), - ), - Text( - ref - .watch(pAmountFormatter(coin)) - .format( - ref - .watch( - pWalletBalanceTertiary( - walletId, - ), - ) - .spendable, - ), - style: STextStyles.itemSubtitle(context), - ), - ], + Text( + "Use private balance", + style: STextStyles.itemSubtitle(context), ), - SvgPicture.asset( - Assets.svg.chevronRight, - height: 14, - width: 7, - color: - Theme.of( - context, - ).extension()!.infoItemLabel, + Text( + ref + .watch(pAmountFormatter(coin)) + .format( + ref + .watch( + pWalletBalanceTertiary(walletId), + ) + .spendable, + ), + style: STextStyles.itemSubtitle(context), ), ], ), - ), - ), - ), - MaterialButton( - splashColor: - Theme.of(context).extension()!.highlight, - key: Key("walletsSheetItemButtonFiroPublicKey_$walletId"), - padding: const EdgeInsets.all(0), - materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular( - Constants.size.circularBorderRadius, - ), - ), - onPressed: () async { - if (mounted) { - unawaited(_send(shouldSendPublicFiroFunds: true)); - } - }, - child: Container( - color: Colors.transparent, - child: Padding( - padding: const EdgeInsets.only( - top: 6, - left: 16, - right: 16, - bottom: 6, - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - "Use public balance", - style: STextStyles.itemSubtitle(context), - ), - Text( - ref - .watch(pAmountFormatter(coin)) - .format( - ref - .watch(pWalletBalance(walletId)) - .spendable, - ), - style: STextStyles.itemSubtitle(context), - ), - ], - ), - SvgPicture.asset( - Assets.svg.chevronRight, - height: 14, - width: 7, - color: - Theme.of( - context, - ).extension()!.infoItemLabel, - ), - ], - ), + SvgPicture.asset( + Assets.svg.chevronRight, + height: 14, + width: 7, + color: Theme.of( + context, + ).extension()!.infoItemLabel, + ), + ], ), ), ), - const SizedBox(height: 6), - ], - ), - ), - child: ConditionalParent( - condition: !isFiro, - builder: - (child) => MaterialButton( - splashColor: - Theme.of(context).extension()!.highlight, - key: Key("walletsSheetItemButtonKey_$walletId"), - padding: const EdgeInsets.all(8), + ), + MaterialButton( + splashColor: Theme.of( + context, + ).extension()!.highlight, + key: Key("walletsSheetItemButtonFiroPublicKey_$walletId"), + padding: const EdgeInsets.all(0), materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular( @@ -585,11 +495,77 @@ class _SendFromCardState extends ConsumerState { ), onPressed: () async { if (mounted) { - unawaited(_send()); + unawaited(_send(shouldSendPublicFiroFunds: true)); } }, - child: child, + child: Container( + color: Colors.transparent, + child: Padding( + padding: const EdgeInsets.only( + top: 6, + left: 16, + right: 16, + bottom: 6, + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + "Use public balance", + style: STextStyles.itemSubtitle(context), + ), + Text( + ref + .watch(pAmountFormatter(coin)) + .format( + ref + .watch(pWalletBalance(walletId)) + .spendable, + ), + style: STextStyles.itemSubtitle(context), + ), + ], + ), + SvgPicture.asset( + Assets.svg.chevronRight, + height: 14, + width: 7, + color: Theme.of( + context, + ).extension()!.infoItemLabel, + ), + ], + ), + ), + ), ), + const SizedBox(height: 6), + ], + ), + ), + child: ConditionalParent( + condition: !isFiro, + builder: (child) => MaterialButton( + splashColor: Theme.of(context).extension()!.highlight, + key: Key("walletsSheetItemButtonKey_$walletId"), + padding: const EdgeInsets.all(8), + materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular( + Constants.size.circularBorderRadius, + ), + ), + onPressed: () async { + if (mounted) { + unawaited(_send()); + } + }, + child: child, + ), child: Row( children: [ Container( diff --git a/lib/pages/exchange_view/sub_widgets/exchange_provider_option.dart b/lib/pages/exchange_view/sub_widgets/exchange_provider_option.dart index 8b56ae2130..a9cd349e98 100644 --- a/lib/pages/exchange_view/sub_widgets/exchange_provider_option.dart +++ b/lib/pages/exchange_view/sub_widgets/exchange_provider_option.dart @@ -66,18 +66,16 @@ class _ExchangeOptionState extends ConsumerState { efCurrencyPairProvider.select((value) => value.receive), ); final reversed = ref.watch(efReversedProvider); - final amount = - reversed - ? ref.watch(efReceiveAmountProvider) - : ref.watch(efSendAmountProvider); + final amount = reversed + ? ref.watch(efReceiveAmountProvider) + : ref.watch(efSendAmountProvider); final data = ref.watch(efEstimatesListProvider(widget.exchange.name)); final estimates = data?.item1.value; - final pair = - sendCurrency != null && receivingCurrency != null - ? (from: sendCurrency, to: receivingCurrency) - : null; + final pair = sendCurrency != null && receivingCurrency != null + ? (from: sendCurrency, to: receivingCurrency) + : null; return AnimatedSize( duration: const Duration(milliseconds: 500), @@ -108,10 +106,9 @@ class _ExchangeOptionState extends ConsumerState { int decimals; try { - decimals = - AppConfig.getCryptoCurrencyForTicker( - receivingCurrency.ticker, - )!.fractionDigits; + decimals = AppConfig.getCryptoCurrencyForTicker( + receivingCurrency.ticker, + )!.fractionDigits; } catch (_) { decimals = 8; // some reasonable alternative } @@ -161,22 +158,20 @@ class _ExchangeOptionState extends ConsumerState { return ConditionalParent( condition: i > 0, - builder: - (child) => Column( - mainAxisSize: MainAxisSize.min, - children: [ - isDesktop - ? Container( - height: 1, - color: - Theme.of(context) - .extension()! - .background, - ) - : const SizedBox(height: 16), - child, - ], - ), + builder: (child) => Column( + mainAxisSize: MainAxisSize.min, + children: [ + isDesktop + ? Container( + height: 1, + color: Theme.of( + context, + ).extension()!.background, + ) + : const SizedBox(height: 16), + child, + ], + ), child: _ProviderOption( key: Key(widget.exchange.name + e.exchangeProvider), exchange: widget.exchange, @@ -209,9 +204,9 @@ class _ExchangeOptionState extends ConsumerState { } else if (data?.item1.value == null) { final rateType = ref.watch(efRateTypeProvider) == - ExchangeRateType.estimated - ? "estimated" - : "fixed"; + ExchangeRateType.estimated + ? "estimated" + : "fixed"; message ??= "Pair unavailable on $rateType rate flow"; } @@ -220,8 +215,9 @@ class _ExchangeOptionState extends ConsumerState { estimate: null, pair: pair, rateString: message ?? "Failed to fetch rate", - rateColor: - Theme.of(context).extension()!.textError, + rateColor: Theme.of( + context, + ).extension()!.textError, ); }, ); @@ -335,9 +331,8 @@ class _ProviderOptionState extends ConsumerState<_ProviderOption> { return ConditionalParent( condition: isDesktop, - builder: - (child) => - MouseRegion(cursor: SystemMouseCursors.click, child: child), + builder: (child) => + MouseRegion(cursor: SystemMouseCursors.click, child: child), child: GestureDetector( onTap: () { ref.read(efExchangeProvider.notifier).state = widget.exchange; @@ -347,8 +342,9 @@ class _ProviderOptionState extends ConsumerState<_ProviderOption> { child: Container( color: Colors.transparent, child: Padding( - padding: - isDesktop ? const EdgeInsets.all(16) : const EdgeInsets.all(0), + padding: isDesktop + ? const EdgeInsets.all(16) + : const EdgeInsets.all(0), child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -358,18 +354,18 @@ class _ProviderOptionState extends ConsumerState<_ProviderOption> { child: Padding( padding: EdgeInsets.only(top: isDesktop ? 20.0 : 15.0), child: Radio( - activeColor: - Theme.of( - context, - ).extension()!.radioButtonIconEnabled, + activeColor: Theme.of( + context, + ).extension()!.radioButtonIconEnabled, value: _id, groupValue: groupValue, onChanged: (_) { ref.read(efExchangeProvider.notifier).state = widget.exchange; ref - .read(efExchangeProviderNameProvider.notifier) - .state = widget.estimate?.exchangeProvider ?? + .read(efExchangeProviderNameProvider.notifier) + .state = + widget.estimate?.exchangeProvider ?? widget.exchange.name; }, ), @@ -383,47 +379,41 @@ class _ProviderOptionState extends ConsumerState<_ProviderOption> { height: isDesktop ? 32 : 24, child: widget.estimate?.exchangeProviderLogo != null && - widget - .estimate! - .exchangeProviderLogo! - .isNotEmpty - ? ClipRRect( - borderRadius: BorderRadius.circular(5), - child: Image.network( - widget.estimate!.exchangeProviderLogo!, - loadingBuilder: ( - context, - child, - loadingProgress, - ) { - if (loadingProgress == null) { - return child; - } else { - return const Center( - child: CircularProgressIndicator(), - ); - } - }, - errorBuilder: (context, error, stackTrace) { - return SvgPicture.asset( - Assets.exchange.getIconFor( - exchangeName: widget.exchange.name, - ), - width: isDesktop ? 32 : 24, - height: isDesktop ? 32 : 24, - ); - }, - width: isDesktop ? 32 : 24, - height: isDesktop ? 32 : 24, - ), - ) - : SvgPicture.asset( - Assets.exchange.getIconFor( - exchangeName: widget.exchange.name, - ), + widget.estimate!.exchangeProviderLogo!.isNotEmpty + ? ClipRRect( + borderRadius: BorderRadius.circular(5), + child: Image.network( + widget.estimate!.exchangeProviderLogo!, + loadingBuilder: + (context, child, loadingProgress) { + if (loadingProgress == null) { + return child; + } else { + return const Center( + child: CircularProgressIndicator(), + ); + } + }, + errorBuilder: (context, error, stackTrace) { + return SvgPicture.asset( + Assets.exchange.getIconFor( + exchangeName: widget.exchange.name, + ), + width: isDesktop ? 32 : 24, + height: isDesktop ? 32 : 24, + ); + }, width: isDesktop ? 32 : 24, height: isDesktop ? 32 : 24, ), + ) + : SvgPicture.asset( + Assets.exchange.getIconFor( + exchangeName: widget.exchange.name, + ), + width: isDesktop ? 32 : 24, + height: isDesktop ? 32 : 24, + ), ), ), const SizedBox(width: 10), @@ -435,55 +425,54 @@ class _ProviderOptionState extends ConsumerState<_ProviderOption> { children: [ ConditionalParent( condition: _warnings.isNotEmpty, - builder: - (child) => Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - child, - CustomTextButton( - text: _warnings.first.value, - onTap: () { - _showNoSparkWarning(); - }, - ), - ], + builder: (child) => Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + child, + CustomTextButton( + text: _warnings.first.value, + onTap: () { + _showNoSparkWarning(); + }, ), + ], + ), child: Text( widget.estimate?.exchangeProvider ?? widget.exchange.name, style: STextStyles.titleBold12(context).copyWith( - color: - Theme.of( - context, - ).extension()!.textDark2, + color: Theme.of( + context, + ).extension()!.textDark2, ), ), ), widget.loadingString ? AnimatedText( - stringsToLoopThrough: const [ - "Loading", - "Loading.", - "Loading..", - "Loading...", - ], - style: STextStyles.itemSubtitle12(context).copyWith( - color: - Theme.of( - context, - ).extension()!.textSubtitle1, - ), - ) + stringsToLoopThrough: const [ + "Loading", + "Loading.", + "Loading..", + "Loading...", + ], + style: STextStyles.itemSubtitle12(context) + .copyWith( + color: Theme.of( + context, + ).extension()!.textSubtitle1, + ), + ) : Text( - widget.rateString, - style: STextStyles.itemSubtitle12(context).copyWith( - color: - widget.rateColor ?? - Theme.of( - context, - ).extension()!.textSubtitle1, + widget.rateString, + style: STextStyles.itemSubtitle12(context) + .copyWith( + color: + widget.rateColor ?? + Theme.of(context) + .extension()! + .textSubtitle1, + ), ), - ), ], ), ), diff --git a/lib/pages/exchange_view/sub_widgets/exchange_provider_options.dart b/lib/pages/exchange_view/sub_widgets/exchange_provider_options.dart index a2ef393053..e7bbaf282d 100644 --- a/lib/pages/exchange_view/sub_widgets/exchange_provider_options.dart +++ b/lib/pages/exchange_view/sub_widgets/exchange_provider_options.dart @@ -94,10 +94,9 @@ class _ExchangeProviderOptionsState return RoundedWhiteContainer( padding: isDesktop ? const EdgeInsets.all(0) : const EdgeInsets.all(12), - borderColor: - isDesktop - ? Theme.of(context).extension()!.background - : null, + borderColor: isDesktop + ? Theme.of(context).extension()!.background + : null, child: Column( children: [ if (showChangeNow) @@ -109,9 +108,11 @@ class _ExchangeProviderOptionsState if (showChangeNow && showTrocador) isDesktop ? Container( - height: 1, - color: Theme.of(context).extension()!.background, - ) + height: 1, + color: Theme.of( + context, + ).extension()!.background, + ) : const SizedBox(height: 16), if (showTrocador) ExchangeOption( @@ -122,9 +123,11 @@ class _ExchangeProviderOptionsState if ((showChangeNow || showTrocador) && showNanswap) isDesktop ? Container( - height: 1, - color: Theme.of(context).extension()!.background, - ) + height: 1, + color: Theme.of( + context, + ).extension()!.background, + ) : const SizedBox(height: 16), if (showNanswap) ExchangeOption( diff --git a/lib/pages/exchange_view/trade_details_view.dart b/lib/pages/exchange_view/trade_details_view.dart index 39623c3d84..036dbdc88f 100644 --- a/lib/pages/exchange_view/trade_details_view.dart +++ b/lib/pages/exchange_view/trade_details_view.dart @@ -228,130 +228,119 @@ class _TradeDetailsViewState extends ConsumerState { return ConditionalParent( condition: !isDesktop, - builder: - (child) => Background( - child: Scaffold( - backgroundColor: - Theme.of(context).extension()!.background, - appBar: AppBar( - backgroundColor: - Theme.of(context).extension()!.background, - leading: AppBarBackButton( - onPressed: () async { - Navigator.of(context).pop(); - }, - ), - title: Text( - "Trade details", - style: STextStyles.navBarTitle(context), - ), - ), - body: SafeArea( - child: Padding( - padding: const EdgeInsets.all(12), - child: SingleChildScrollView( - child: Padding( - padding: const EdgeInsets.all(4), - child: child, - ), - ), - ), + builder: (child) => Background( + child: Scaffold( + backgroundColor: Theme.of( + context, + ).extension()!.background, + appBar: AppBar( + backgroundColor: Theme.of( + context, + ).extension()!.background, + leading: AppBarBackButton( + onPressed: () async { + Navigator.of(context).pop(); + }, + ), + title: Text( + "Trade details", + style: STextStyles.navBarTitle(context), + ), + ), + body: SafeArea( + child: Padding( + padding: const EdgeInsets.all(12), + child: SingleChildScrollView( + child: Padding(padding: const EdgeInsets.all(4), child: child), ), ), ), + ), + ), child: Padding( - padding: - isDesktop - ? const EdgeInsets.only(left: 32) - : const EdgeInsets.all(0), + padding: isDesktop + ? const EdgeInsets.only(left: 32) + : const EdgeInsets.all(0), child: BranchedParent( condition: isDesktop, - conditionBranchBuilder: - (children) => Padding( - padding: const EdgeInsets.only(right: 20), - child: Padding( - padding: const EdgeInsets.only(right: 12), - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - RoundedWhiteContainer( - borderColor: - Theme.of( - context, - ).extension()!.backgroundAppBar, - padding: const EdgeInsets.all(0), - child: ListView( - primary: false, - shrinkWrap: true, - children: children, - ), - ), - if (showSendFromStackButton) const SizedBox(height: 32), - if (showSendFromStackButton) - SecondaryButton( - label: "Send from ${AppConfig.prefix}", - buttonHeight: ButtonHeight.l, - onPressed: () { - CryptoCurrency coin; - try { - coin = - AppConfig.getCryptoCurrencyForTicker( - trade.payInCurrency, - )!; - } catch (_) { - coin = AppConfig.getCryptoCurrencyByPrettyName( - trade.payInCurrency, - ); - } - final amount = Amount.fromDecimal( - sendAmount, - fractionDigits: coin.fractionDigits, - ); - final address = trade.payInAddress; - - Navigator.of(context).pushNamed( - SendFromView.routeName, - arguments: Tuple4(coin, amount, address, trade), - ); - }, - ), - const SizedBox(height: 32), - ], + conditionBranchBuilder: (children) => Padding( + padding: const EdgeInsets.only(right: 20), + child: Padding( + padding: const EdgeInsets.only(right: 12), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + RoundedWhiteContainer( + borderColor: Theme.of( + context, + ).extension()!.backgroundAppBar, + padding: const EdgeInsets.all(0), + child: ListView( + primary: false, + shrinkWrap: true, + children: children, + ), ), - ), - ), - otherBranchBuilder: - (children) => Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - mainAxisSize: isDesktop ? MainAxisSize.min : MainAxisSize.max, - children: children, + if (showSendFromStackButton) const SizedBox(height: 32), + if (showSendFromStackButton) + SecondaryButton( + label: "Send from ${AppConfig.prefix}", + buttonHeight: ButtonHeight.l, + onPressed: () { + CryptoCurrency coin; + try { + coin = AppConfig.getCryptoCurrencyForTicker( + trade.payInCurrency, + )!; + } catch (_) { + coin = AppConfig.getCryptoCurrencyByPrettyName( + trade.payInCurrency, + ); + } + final amount = Amount.fromDecimal( + sendAmount, + fractionDigits: coin.fractionDigits, + ); + final address = trade.payInAddress; + + Navigator.of(context).pushNamed( + SendFromView.routeName, + arguments: Tuple4(coin, amount, address, trade), + ); + }, + ), + const SizedBox(height: 32), + ], ), + ), + ), + otherBranchBuilder: (children) => Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + mainAxisSize: isDesktop ? MainAxisSize.min : MainAxisSize.max, + children: children, + ), children: [ RoundedWhiteContainer( - padding: - isDesktop - ? const EdgeInsets.all(0) - : const EdgeInsets.all(12), + padding: isDesktop + ? const EdgeInsets.all(0) + : const EdgeInsets.all(12), child: Container( - decoration: - isDesktop - ? BoxDecoration( - color: - Theme.of( - context, - ).extension()!.backgroundAppBar, - borderRadius: BorderRadius.vertical( - top: Radius.circular( - Constants.size.circularBorderRadius, - ), + decoration: isDesktop + ? BoxDecoration( + color: Theme.of( + context, + ).extension()!.backgroundAppBar, + borderRadius: BorderRadius.vertical( + top: Radius.circular( + Constants.size.circularBorderRadius, ), - ) - : null, + ), + ) + : null, child: Padding( - padding: - isDesktop - ? const EdgeInsets.all(12) - : const EdgeInsets.all(0), + padding: isDesktop + ? const EdgeInsets.all(12) + : const EdgeInsets.all(0), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ @@ -376,10 +365,9 @@ class _TradeDetailsViewState extends ConsumerState { ], ), Column( - crossAxisAlignment: - isDesktop - ? CrossAxisAlignment.end - : CrossAxisAlignment.start, + crossAxisAlignment: isDesktop + ? CrossAxisAlignment.end + : CrossAxisAlignment.start, children: [ SelectableText( "${trade.payInCurrency.toUpperCase()} → ${trade.payOutCurrency.toUpperCase()}", @@ -443,10 +431,9 @@ class _TradeDetailsViewState extends ConsumerState { ), isDesktop ? const _Divider() : const SizedBox(height: 12), RoundedWhiteContainer( - padding: - isDesktop - ? const EdgeInsets.all(16) - : const EdgeInsets.all(12), + padding: isDesktop + ? const EdgeInsets.all(16) + : const EdgeInsets.all(12), child: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, @@ -473,98 +460,87 @@ class _TradeDetailsViewState extends ConsumerState { isDesktop ? const _Divider() : const SizedBox(height: 12), if (!sentFromStack && !hasTx) RoundedContainer( - padding: - isDesktop - ? const EdgeInsets.all(16) - : const EdgeInsets.all(12), - color: - isDesktop - ? Theme.of(context).extension()!.popupBG - : Theme.of( - context, - ).extension()!.warningBackground, + padding: isDesktop + ? const EdgeInsets.all(16) + : const EdgeInsets.all(12), + color: isDesktop + ? Theme.of(context).extension()!.popupBG + : Theme.of( + context, + ).extension()!.warningBackground, child: ConditionalParent( condition: isDesktop, - builder: - (child) => Column( - mainAxisSize: MainAxisSize.min, + builder: (child) => Column( + mainAxisSize: MainAxisSize.min, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - "Amount", - style: - STextStyles.desktopTextExtraExtraSmall( - context, - ), - ), - const SizedBox(height: 2), - Text( - "${trade.payInAmount} ${trade.payInCurrency.toUpperCase()}", - style: - STextStyles.desktopTextExtraExtraSmall( - context, - ).copyWith( - color: - Theme.of(context) - .extension()! - .textDark, - ), - ), - ], + Text( + "Amount", + style: STextStyles.desktopTextExtraExtraSmall( + context, + ), + ), + const SizedBox(height: 2), + Text( + "${trade.payInAmount} ${trade.payInCurrency.toUpperCase()}", + style: + STextStyles.desktopTextExtraExtraSmall( + context, + ).copyWith( + color: Theme.of( + context, + ).extension()!.textDark, + ), ), - tdv.IconCopyButton(data: trade.payInAmount), ], ), - const SizedBox(height: 6), - child, + tdv.IconCopyButton(data: trade.payInAmount), ], ), + const SizedBox(height: 6), + child, + ], + ), child: RichText( text: TextSpan( text: "You must send at least ${sendAmount.toStringAsFixed(trade.payInCurrency.toLowerCase() == "xmr" ? 12 : 8)} ${trade.payInCurrency.toUpperCase()}. ", - style: - isDesktop - ? STextStyles.desktopTextExtraExtraSmall( + style: isDesktop + ? STextStyles.desktopTextExtraExtraSmall( + context, + ).copyWith( + color: Theme.of( context, - ).copyWith( - color: - Theme.of( - context, - ).extension()!.accentColorRed, - ) - : STextStyles.label(context).copyWith( - color: - Theme.of(context) - .extension()! - .warningForeground, - ), + ).extension()!.accentColorRed, + ) + : STextStyles.label(context).copyWith( + color: Theme.of( + context, + ).extension()!.warningForeground, + ), children: [ TextSpan( text: "If you send less than ${sendAmount.toStringAsFixed(trade.payInCurrency.toLowerCase() == "xmr" ? 12 : 8)} ${trade.payInCurrency.toUpperCase()}, your transaction may not be converted and it may not be refunded.", - style: - isDesktop - ? STextStyles.desktopTextExtraExtraSmall( + style: isDesktop + ? STextStyles.desktopTextExtraExtraSmall( + context, + ).copyWith( + color: Theme.of( context, - ).copyWith( - color: - Theme.of(context) - .extension()! - .accentColorRed, - ) - : STextStyles.label(context).copyWith( - color: - Theme.of(context) - .extension()! - .warningForeground, - ), + ).extension()!.accentColorRed, + ) + : STextStyles.label(context).copyWith( + color: Theme.of( + context, + ).extension()!.warningForeground, + ), ), ], ), @@ -575,10 +551,9 @@ class _TradeDetailsViewState extends ConsumerState { isDesktop ? const _Divider() : const SizedBox(height: 12), if (sentFromStack) RoundedWhiteContainer( - padding: - isDesktop - ? const EdgeInsets.all(16) - : const EdgeInsets.all(12), + padding: isDesktop + ? const EdgeInsets.all(16) + : const EdgeInsets.all(12), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -592,10 +567,9 @@ class _TradeDetailsViewState extends ConsumerState { CustomTextButton( text: "View transaction", onTap: () { - final coin = - AppConfig.getCryptoCurrencyForTicker( - trade.payInCurrency, - )!; + final coin = AppConfig.getCryptoCurrencyForTicker( + trade.payInCurrency, + )!; if (isDesktop) { Navigator.of(context).push( @@ -634,10 +608,9 @@ class _TradeDetailsViewState extends ConsumerState { isDesktop ? const _Divider() : const SizedBox(height: 12), if (sentFromStack) RoundedWhiteContainer( - padding: - isDesktop - ? const EdgeInsets.all(16) - : const EdgeInsets.all(12), + padding: isDesktop + ? const EdgeInsets.all(16) + : const EdgeInsets.all(12), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, @@ -672,10 +645,9 @@ class _TradeDetailsViewState extends ConsumerState { isDesktop ? const _Divider() : const SizedBox(height: 12), if (!sentFromStack && !hasTx) RoundedWhiteContainer( - padding: - isDesktop - ? const EdgeInsets.all(16) - : const EdgeInsets.all(12), + padding: isDesktop + ? const EdgeInsets.all(16) + : const EdgeInsets.all(12), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -689,40 +661,39 @@ class _TradeDetailsViewState extends ConsumerState { isDesktop ? tdv.IconCopyButton(data: trade.payInAddress) : GestureDetector( - onTap: () async { - final address = trade.payInAddress; - await Clipboard.setData( - ClipboardData(text: address), - ); - if (context.mounted) { - unawaited( - showFloatingFlushBar( - type: FlushBarType.info, - message: "Copied to clipboard", - context: context, - ), + onTap: () async { + final address = trade.payInAddress; + await Clipboard.setData( + ClipboardData(text: address), ); - } - }, - child: Row( - children: [ - SvgPicture.asset( - Assets.svg.copy, - width: 12, - height: 12, - color: - Theme.of(context) - .extension()! - .infoItemIcons, - ), - const SizedBox(width: 4), - Text( - "Copy", - style: STextStyles.link2(context), - ), - ], + if (context.mounted) { + unawaited( + showFloatingFlushBar( + type: FlushBarType.info, + message: "Copied to clipboard", + context: context, + ), + ); + } + }, + child: Row( + children: [ + SvgPicture.asset( + Assets.svg.copy, + width: 12, + height: 12, + color: Theme.of( + context, + ).extension()!.infoItemIcons, + ), + const SizedBox(width: 4), + Text( + "Copy", + style: STextStyles.link2(context), + ), + ], + ), ), - ), ], ), const SizedBox(height: 4), @@ -785,14 +756,12 @@ class _TradeDetailsViewState extends ConsumerState { ), child: Text( "Cancel", - style: STextStyles.button( - context, - ).copyWith( - color: - Theme.of(context) + style: STextStyles.button(context) + .copyWith( + color: Theme.of(context) .extension()! .accentColorDark, - ), + ), ), ), ), @@ -809,10 +778,9 @@ class _TradeDetailsViewState extends ConsumerState { Assets.svg.qrcode, width: 12, height: 12, - color: - Theme.of( - context, - ).extension()!.infoItemIcons, + color: Theme.of( + context, + ).extension()!.infoItemIcons, ), const SizedBox(width: 4), Text( @@ -828,10 +796,9 @@ class _TradeDetailsViewState extends ConsumerState { isDesktop ? const _Divider() : const SizedBox(height: 12), if (trade.payInExtraId.isNotEmpty && !sentFromStack && !hasTx) RoundedWhiteContainer( - padding: - isDesktop - ? const EdgeInsets.all(16) - : const EdgeInsets.all(12), + padding: isDesktop + ? const EdgeInsets.all(16) + : const EdgeInsets.all(12), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -842,40 +809,39 @@ class _TradeDetailsViewState extends ConsumerState { isDesktop ? tdv.IconCopyButton(data: trade.payInExtraId) : GestureDetector( - onTap: () async { - final address = trade.payInExtraId; - await Clipboard.setData( - ClipboardData(text: address), - ); - if (context.mounted) { - unawaited( - showFloatingFlushBar( - type: FlushBarType.info, - message: "Copied to clipboard", - context: context, - ), + onTap: () async { + final address = trade.payInExtraId; + await Clipboard.setData( + ClipboardData(text: address), ); - } - }, - child: Row( - children: [ - SvgPicture.asset( - Assets.svg.copy, - width: 12, - height: 12, - color: - Theme.of(context) - .extension()! - .infoItemIcons, - ), - const SizedBox(width: 4), - Text( - "Copy", - style: STextStyles.link2(context), - ), - ], + if (context.mounted) { + unawaited( + showFloatingFlushBar( + type: FlushBarType.info, + message: "Copied to clipboard", + context: context, + ), + ); + } + }, + child: Row( + children: [ + SvgPicture.asset( + Assets.svg.copy, + width: 12, + height: 12, + color: Theme.of( + context, + ).extension()!.infoItemIcons, + ), + const SizedBox(width: 4), + Text( + "Copy", + style: STextStyles.link2(context), + ), + ], + ), ), - ), ], ), const SizedBox(height: 4), @@ -889,10 +855,9 @@ class _TradeDetailsViewState extends ConsumerState { if (trade.payInExtraId.isNotEmpty && !sentFromStack && !hasTx) isDesktop ? const _Divider() : const SizedBox(height: 12), RoundedWhiteContainer( - padding: - isDesktop - ? const EdgeInsets.all(16) - : const EdgeInsets.all(12), + padding: isDesktop + ? const EdgeInsets.all(16) + : const EdgeInsets.all(12), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -905,86 +870,6 @@ class _TradeDetailsViewState extends ConsumerState { ), isDesktop ? tdv.IconPencilButton( - onPressed: () { - showDialog( - context: context, - builder: (context) { - return DesktopDialog( - maxWidth: 580, - maxHeight: 360, - child: EditTradeNoteView( - tradeId: tradeId, - note: ref - .read(tradeNoteServiceProvider) - .getNote(tradeId: tradeId), - ), - ); - }, - ); - }, - ) - : GestureDetector( - onTap: () { - Navigator.of(context).pushNamed( - EditTradeNoteView.routeName, - arguments: Tuple2( - tradeId, - ref - .read(tradeNoteServiceProvider) - .getNote(tradeId: tradeId), - ), - ); - }, - child: Row( - children: [ - SvgPicture.asset( - Assets.svg.pencil, - width: 10, - height: 10, - color: - Theme.of( - context, - ).extension()!.infoItemIcons, - ), - const SizedBox(width: 4), - Text("Edit", style: STextStyles.link2(context)), - ], - ), - ), - ], - ), - const SizedBox(height: 4), - SelectableText( - ref.watch( - tradeNoteServiceProvider.select( - (value) => value.getNote(tradeId: tradeId), - ), - ), - style: STextStyles.itemSubtitle12(context), - ), - ], - ), - ), - if (sentFromStack) - isDesktop ? const _Divider() : const SizedBox(height: 12), - if (sentFromStack) - RoundedWhiteContainer( - padding: - isDesktop - ? const EdgeInsets.all(16) - : const EdgeInsets.all(12), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - "Transaction note", - style: STextStyles.itemSubtitle(context), - ), - isDesktop - ? tdv.IconPencilButton( onPressed: () { showDialog( context: context, @@ -992,22 +877,26 @@ class _TradeDetailsViewState extends ConsumerState { return DesktopDialog( maxWidth: 580, maxHeight: 360, - child: EditNoteView( - txid: transactionIfSentFromStack!.txid, - walletId: walletId!, + child: EditTradeNoteView( + tradeId: tradeId, + note: ref + .read(tradeNoteServiceProvider) + .getNote(tradeId: tradeId), ), ); }, ); }, ) - : GestureDetector( + : GestureDetector( onTap: () { Navigator.of(context).pushNamed( - EditNoteView.routeName, + EditTradeNoteView.routeName, arguments: Tuple2( - transactionIfSentFromStack!.txid, - walletId, + tradeId, + ref + .read(tradeNoteServiceProvider) + .getNote(tradeId: tradeId), ), ); }, @@ -1017,10 +906,9 @@ class _TradeDetailsViewState extends ConsumerState { Assets.svg.pencil, width: 10, height: 10, - color: - Theme.of(context) - .extension()! - .infoItemIcons, + color: Theme.of( + context, + ).extension()!.infoItemIcons, ), const SizedBox(width: 4), Text( @@ -1030,6 +918,84 @@ class _TradeDetailsViewState extends ConsumerState { ], ), ), + ], + ), + const SizedBox(height: 4), + SelectableText( + ref.watch( + tradeNoteServiceProvider.select( + (value) => value.getNote(tradeId: tradeId), + ), + ), + style: STextStyles.itemSubtitle12(context), + ), + ], + ), + ), + if (sentFromStack) + isDesktop ? const _Divider() : const SizedBox(height: 12), + if (sentFromStack) + RoundedWhiteContainer( + padding: isDesktop + ? const EdgeInsets.all(16) + : const EdgeInsets.all(12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + "Transaction note", + style: STextStyles.itemSubtitle(context), + ), + isDesktop + ? tdv.IconPencilButton( + onPressed: () { + showDialog( + context: context, + builder: (context) { + return DesktopDialog( + maxWidth: 580, + maxHeight: 360, + child: EditNoteView( + txid: + transactionIfSentFromStack!.txid, + walletId: walletId!, + ), + ); + }, + ); + }, + ) + : GestureDetector( + onTap: () { + Navigator.of(context).pushNamed( + EditNoteView.routeName, + arguments: Tuple2( + transactionIfSentFromStack!.txid, + walletId, + ), + ); + }, + child: Row( + children: [ + SvgPicture.asset( + Assets.svg.pencil, + width: 10, + height: 10, + color: Theme.of( + context, + ).extension()!.infoItemIcons, + ), + const SizedBox(width: 4), + Text( + "Edit", + style: STextStyles.link2(context), + ), + ], + ), + ), ], ), const SizedBox(height: 4), @@ -1050,10 +1016,9 @@ class _TradeDetailsViewState extends ConsumerState { ), isDesktop ? const _Divider() : const SizedBox(height: 12), RoundedWhiteContainer( - padding: - isDesktop - ? const EdgeInsets.all(16) - : const EdgeInsets.all(12), + padding: isDesktop + ? const EdgeInsets.all(16) + : const EdgeInsets.all(12), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, @@ -1069,14 +1034,12 @@ class _TradeDetailsViewState extends ConsumerState { Format.extractDateFrom( trade.timestamp.millisecondsSinceEpoch ~/ 1000, ), - style: STextStyles.desktopTextExtraExtraSmall( - context, - ).copyWith( - color: - Theme.of( + style: STextStyles.desktopTextExtraExtraSmall(context) + .copyWith( + color: Theme.of( context, ).extension()!.textDark, - ), + ), ), ], ), @@ -1098,10 +1061,9 @@ class _TradeDetailsViewState extends ConsumerState { ), isDesktop ? const _Divider() : const SizedBox(height: 12), RoundedWhiteContainer( - padding: - isDesktop - ? const EdgeInsets.all(16) - : const EdgeInsets.all(12), + padding: isDesktop + ? const EdgeInsets.all(16) + : const EdgeInsets.all(12), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, @@ -1132,10 +1094,9 @@ class _TradeDetailsViewState extends ConsumerState { ), isDesktop ? const _Divider() : const SizedBox(height: 12), RoundedWhiteContainer( - padding: - isDesktop - ? const EdgeInsets.all(16) - : const EdgeInsets.all(12), + padding: isDesktop + ? const EdgeInsets.all(16) + : const EdgeInsets.all(12), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, @@ -1180,10 +1141,9 @@ class _TradeDetailsViewState extends ConsumerState { }, child: SvgPicture.asset( Assets.svg.copy, - color: - Theme.of( - context, - ).extension()!.infoItemIcons, + color: Theme.of( + context, + ).extension()!.infoItemIcons, width: 12, ), ), @@ -1196,10 +1156,9 @@ class _TradeDetailsViewState extends ConsumerState { isDesktop ? const _Divider() : const SizedBox(height: 12), if (trade.exchangeName != "Majestic Bank") RoundedWhiteContainer( - padding: - isDesktop - ? const EdgeInsets.all(16) - : const EdgeInsets.all(12), + padding: isDesktop + ? const EdgeInsets.all(16) + : const EdgeInsets.all(12), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -1232,11 +1191,10 @@ class _TradeDetailsViewState extends ConsumerState { } return ConditionalParent( condition: isDesktop, - builder: - (child) => MouseRegion( - cursor: SystemMouseCursors.click, - child: child, - ), + builder: (child) => MouseRegion( + cursor: SystemMouseCursors.click, + child: child, + ), child: GestureDetector( onTap: () { launchUrl( @@ -1259,10 +1217,9 @@ class _TradeDetailsViewState extends ConsumerState { onPressed: () { CryptoCurrency coin; try { - coin = - AppConfig.getCryptoCurrencyForTicker( - trade.payInCurrency, - )!; + coin = AppConfig.getCryptoCurrencyForTicker( + trade.payInCurrency, + )!; } catch (_) { coin = AppConfig.getCryptoCurrencyByPrettyName( trade.payInCurrency, diff --git a/lib/pages/finalize_view/finalize_view.dart b/lib/pages/finalize_view/finalize_view.dart index e0a3415907..689d48e5c9 100644 --- a/lib/pages/finalize_view/finalize_view.dart +++ b/lib/pages/finalize_view/finalize_view.dart @@ -156,14 +156,12 @@ class _FinalizeViewState extends ConsumerState { if (ex != null) { await showDialog( context: context, - builder: - (context) => StackOkDialog( - desktopPopRootNavigator: Util.isDesktop, - title: "Slatepack finalize error", - message: - ex?.toString() ?? "Unexpected result without exception", - maxWidth: Util.isDesktop ? 400 : null, - ), + builder: (context) => StackOkDialog( + desktopPopRootNavigator: Util.isDesktop, + title: "Slatepack finalize error", + message: ex?.toString() ?? "Unexpected result without exception", + maxWidth: Util.isDesktop ? 400 : null, + ), ); } else { setState(() { @@ -201,45 +199,45 @@ class _FinalizeViewState extends ConsumerState { return ConditionalParent( condition: !Util.isDesktop, - builder: - (child) => Background( - child: Scaffold( - backgroundColor: - Theme.of(context).extension()!.background, - appBar: AppBar( - leading: AppBarBackButton( - onPressed: () { - Navigator.of(context).pop(); - }, - ), - title: Text( - "Finalize slatepack", - style: STextStyles.navBarTitle(context), - ), - ), - body: SafeArea( - child: LayoutBuilder( - builder: (context, constraints) { - return SingleChildScrollView( - child: ConstrainedBox( - constraints: BoxConstraints( - minHeight: constraints.maxHeight, - ), - child: IntrinsicHeight( - child: Padding( - padding: EdgeInsets.symmetric( - horizontal: Constants.size.standardPadding, - ), - child: child, - ), + builder: (child) => Background( + child: Scaffold( + backgroundColor: Theme.of( + context, + ).extension()!.background, + appBar: AppBar( + leading: AppBarBackButton( + onPressed: () { + Navigator.of(context).pop(); + }, + ), + title: Text( + "Finalize slatepack", + style: STextStyles.navBarTitle(context), + ), + ), + body: SafeArea( + child: LayoutBuilder( + builder: (context, constraints) { + return SingleChildScrollView( + child: ConstrainedBox( + constraints: BoxConstraints( + minHeight: constraints.maxHeight, + ), + child: IntrinsicHeight( + child: Padding( + padding: EdgeInsets.symmetric( + horizontal: Constants.size.standardPadding, ), + child: child, ), - ); - }, - ), - ), + ), + ), + ); + }, ), ), + ), + ), child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ @@ -268,61 +266,61 @@ class _FinalizeViewState extends ConsumerState { }, focusNode: _slateFocusNode, style: STextStyles.field(context), - decoration: standardInputDecoration( - "Enter Final Slatepack Message", - _slateFocusNode, - context, - desktopMed: true, - ).copyWith( - contentPadding: const EdgeInsets.symmetric( - horizontal: 16, - vertical: 12, // Adjust vertical padding for better alignment - ), - suffixIcon: Padding( - padding: - _slateController.text.isEmpty + decoration: + standardInputDecoration( + "Enter Final Slatepack Message", + _slateFocusNode, + context, + desktopMed: true, + ).copyWith( + contentPadding: const EdgeInsets.symmetric( + horizontal: 16, + vertical: + 12, // Adjust vertical padding for better alignment + ), + suffixIcon: Padding( + padding: _slateController.text.isEmpty ? const EdgeInsets.only(right: 8) : const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - _slateToggleFlag - ? TextFieldIconButton( - key: const Key( - "slateFinalizeClearFieldButtonKey", + child: UnconstrainedBox( + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + _slateToggleFlag + ? TextFieldIconButton( + key: const Key( + "slateFinalizeClearFieldButtonKey", + ), + onTap: () { + _slateController.text = ""; + setState(() { + _slateToggleFlag = false; + }); + }, + child: const XIcon(), + ) + : TextFieldIconButton( + key: const Key( + "slateFinalizePasteFieldButtonKey", + ), + onTap: _pasteSlatepack, + child: _slateController.text.isEmpty + ? const ClipboardIcon() + : const XIcon(), + ), + if (_slateController.text.isEmpty) + TextFieldIconButton( + semanticsLabel: + "Scan QR Button. Opens Camera For Scanning QR Code.", + key: const Key("sendViewScanQrButtonKey"), + onTap: _scanQr, + child: const QrCodeIcon(), ), - onTap: () { - _slateController.text = ""; - setState(() { - _slateToggleFlag = false; - }); - }, - child: const XIcon(), - ) - : TextFieldIconButton( - key: const Key( - "slateFinalizePasteFieldButtonKey", - ), - onTap: _pasteSlatepack, - child: - _slateController.text.isEmpty - ? const ClipboardIcon() - : const XIcon(), - ), - if (_slateController.text.isEmpty) - TextFieldIconButton( - semanticsLabel: - "Scan QR Button. Opens Camera For Scanning QR Code.", - key: const Key("sendViewScanQrButtonKey"), - onTap: _scanQr, - child: const QrCodeIcon(), - ), - ], + ], + ), + ), ), ), - ), - ), ), ), Util.isDesktop ? const SizedBox(height: 24) : const Spacer(), diff --git a/lib/pages/home_view/sub_widgets/home_view_button_bar.dart b/lib/pages/home_view/sub_widgets/home_view_button_bar.dart index 9741603ac5..9baf2bd841 100644 --- a/lib/pages/home_view/sub_widgets/home_view_button_bar.dart +++ b/lib/pages/home_view/sub_widgets/home_view_button_bar.dart @@ -52,19 +52,21 @@ class _HomeViewButtonBarState extends ConsumerState { child: TextButton( style: selectedIndex == 0 ? Theme.of(context) - .extension()! - .getPrimaryEnabledButtonStyle(context)! - .copyWith( - minimumSize: - MaterialStateProperty.all(const Size(46, 36)), - ) + .extension()! + .getPrimaryEnabledButtonStyle(context)! + .copyWith( + minimumSize: MaterialStateProperty.all( + const Size(46, 36), + ), + ) : Theme.of(context) - .extension()! - .getSecondaryEnabledButtonStyle(context)! - .copyWith( - minimumSize: - MaterialStateProperty.all(const Size(46, 36)), - ), + .extension()! + .getSecondaryEnabledButtonStyle(context)! + .copyWith( + minimumSize: MaterialStateProperty.all( + const Size(46, 36), + ), + ), onPressed: () { FocusScope.of(context).unfocus(); if (selectedIndex != 0) { @@ -76,38 +78,37 @@ class _HomeViewButtonBarState extends ConsumerState { style: STextStyles.button(context).copyWith( fontSize: 14, color: selectedIndex == 0 - ? Theme.of(context) - .extension()! - .buttonTextPrimary - : Theme.of(context) - .extension()! - .buttonTextSecondary, + ? Theme.of( + context, + ).extension()!.buttonTextPrimary + : Theme.of( + context, + ).extension()!.buttonTextSecondary, ), ), ), ), - if (AppConfig.hasFeature(AppFeature.swap)) - const SizedBox( - width: 8, - ), + if (AppConfig.hasFeature(AppFeature.swap)) const SizedBox(width: 8), if (AppConfig.hasFeature(AppFeature.swap)) Expanded( child: TextButton( style: selectedIndex == 1 ? Theme.of(context) - .extension()! - .getPrimaryEnabledButtonStyle(context)! - .copyWith( - minimumSize: - MaterialStateProperty.all(const Size(46, 36)), - ) + .extension()! + .getPrimaryEnabledButtonStyle(context)! + .copyWith( + minimumSize: MaterialStateProperty.all( + const Size(46, 36), + ), + ) : Theme.of(context) - .extension()! - .getSecondaryEnabledButtonStyle(context)! - .copyWith( - minimumSize: - MaterialStateProperty.all(const Size(46, 36)), - ), + .extension()! + .getSecondaryEnabledButtonStyle(context)! + .copyWith( + minimumSize: MaterialStateProperty.all( + const Size(46, 36), + ), + ), onPressed: () async { FocusScope.of(context).unfocus(); if (selectedIndex != 1) { @@ -127,38 +128,37 @@ class _HomeViewButtonBarState extends ConsumerState { style: STextStyles.button(context).copyWith( fontSize: 14, color: selectedIndex == 1 - ? Theme.of(context) - .extension()! - .buttonTextPrimary - : Theme.of(context) - .extension()! - .buttonTextSecondary, + ? Theme.of( + context, + ).extension()!.buttonTextPrimary + : Theme.of( + context, + ).extension()!.buttonTextSecondary, ), ), ), ), - if (AppConfig.hasFeature(AppFeature.buy)) - const SizedBox( - width: 8, - ), + if (AppConfig.hasFeature(AppFeature.buy)) const SizedBox(width: 8), if (AppConfig.hasFeature(AppFeature.buy)) Expanded( child: TextButton( style: selectedIndex == 2 ? Theme.of(context) - .extension()! - .getPrimaryEnabledButtonStyle(context)! - .copyWith( - minimumSize: - MaterialStateProperty.all(const Size(46, 36)), - ) + .extension()! + .getPrimaryEnabledButtonStyle(context)! + .copyWith( + minimumSize: MaterialStateProperty.all( + const Size(46, 36), + ), + ) : Theme.of(context) - .extension()! - .getSecondaryEnabledButtonStyle(context)! - .copyWith( - minimumSize: - MaterialStateProperty.all(const Size(46, 36)), - ), + .extension()! + .getSecondaryEnabledButtonStyle(context)! + .copyWith( + minimumSize: MaterialStateProperty.all( + const Size(46, 36), + ), + ), onPressed: () async { FocusScope.of(context).unfocus(); if (selectedIndex != 2) { @@ -171,12 +171,12 @@ class _HomeViewButtonBarState extends ConsumerState { style: STextStyles.button(context).copyWith( fontSize: 14, color: selectedIndex == 2 - ? Theme.of(context) - .extension()! - .buttonTextPrimary - : Theme.of(context) - .extension()! - .buttonTextSecondary, + ? Theme.of( + context, + ).extension()!.buttonTextPrimary + : Theme.of( + context, + ).extension()!.buttonTextSecondary, ), ), ), diff --git a/lib/pages/monkey/monkey_view.dart b/lib/pages/monkey/monkey_view.dart index 49329cc986..d1d82a7aba 100644 --- a/lib/pages/monkey/monkey_view.dart +++ b/lib/pages/monkey/monkey_view.dart @@ -75,11 +75,10 @@ class _MonkeyViewState extends ConsumerState { throw Exception("Failed to get documents directory to save monKey image"); } - final address = - await ref - .read(pWallets) - .getWallet(walletId) - .getCurrentReceivingAddress(); + final address = await ref + .read(pWallets) + .getWallet(walletId) + .getCurrentReceivingAddress(); String filePath = path.join(dir.path, "monkey_${address?.value}"); filePath += isPNG ? ".png" : ".svg"; @@ -113,313 +112,296 @@ class _MonkeyViewState extends ConsumerState { return Background( child: ConditionalParent( condition: isDesktop, - builder: - (child) => DesktopScaffold( - appBar: DesktopAppBar( - background: Theme.of(context).extension()!.popupBG, - leading: Expanded( - child: Row( - children: [ - const SizedBox(width: 32), - AppBarIconButton( - size: 32, - color: - Theme.of( - context, - ).extension()!.textFieldDefaultBG, - shadows: const [], - icon: SvgPicture.asset( - Assets.svg.arrowLeft, - width: 18, - height: 18, - color: - Theme.of( - context, - ).extension()!.topNavIconPrimary, - ), - onPressed: Navigator.of(context).pop, - ), - const SizedBox(width: 15), - SvgPicture.asset( - Assets.svg.monkey, - width: 32, - height: 32, - color: - Theme.of( - context, - ).extension()!.textSubtitle1, - ), - const SizedBox(width: 12), - Text("MonKey", style: STextStyles.desktopH3(context)), - ], + builder: (child) => DesktopScaffold( + appBar: DesktopAppBar( + background: Theme.of(context).extension()!.popupBG, + leading: Expanded( + child: Row( + children: [ + const SizedBox(width: 32), + AppBarIconButton( + size: 32, + color: Theme.of( + context, + ).extension()!.textFieldDefaultBG, + shadows: const [], + icon: SvgPicture.asset( + Assets.svg.arrowLeft, + width: 18, + height: 18, + color: Theme.of( + context, + ).extension()!.topNavIconPrimary, + ), + onPressed: Navigator.of(context).pop, ), - ), - trailing: RawMaterialButton( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(1000), + const SizedBox(width: 15), + SvgPicture.asset( + Assets.svg.monkey, + width: 32, + height: 32, + color: Theme.of( + context, + ).extension()!.textSubtitle1, ), - onPressed: () { - showDialog( - context: context, - useSafeArea: false, - barrierDismissible: true, - builder: (context) { - return DesktopDialog( - maxHeight: double.infinity, - child: Column( + const SizedBox(width: 12), + Text("MonKey", style: STextStyles.desktopH3(context)), + ], + ), + ), + trailing: RawMaterialButton( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(1000), + ), + onPressed: () { + showDialog( + context: context, + useSafeArea: false, + barrierDismissible: true, + builder: (context) { + return DesktopDialog( + maxHeight: double.infinity, + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - Padding( - padding: const EdgeInsets.only(left: 32), - child: Text( - "About MonKeys", - style: STextStyles.desktopH3(context), - ), - ), - const DesktopDialogCloseButton(), - ], - ), - Text( - "A MonKey is a visual representation of your Banano address.", - style: STextStyles.desktopTextMedium( - context, - ).copyWith( - color: - Theme.of( - context, - ).extension()!.textDark3, + Padding( + padding: const EdgeInsets.only(left: 32), + child: Text( + "About MonKeys", + style: STextStyles.desktopH3(context), ), ), - Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - Padding( - padding: const EdgeInsets.all(32), - child: PrimaryButton( - width: 272.5, - label: "OK", - onPressed: () { - Navigator.of(context).pop(); - }, - ), - ), - ], + const DesktopDialogCloseButton(), + ], + ), + Text( + "A MonKey is a visual representation of your Banano address.", + style: STextStyles.desktopTextMedium(context) + .copyWith( + color: Theme.of( + context, + ).extension()!.textDark3, + ), + ), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Padding( + padding: const EdgeInsets.all(32), + child: PrimaryButton( + width: 272.5, + label: "OK", + onPressed: () { + Navigator.of(context).pop(); + }, + ), ), ], ), - ); - }, + ], + ), ); }, - child: Padding( - padding: const EdgeInsets.symmetric( - vertical: 19, - horizontal: 32, + ); + }, + child: Padding( + padding: const EdgeInsets.symmetric( + vertical: 19, + horizontal: 32, + ), + child: Row( + children: [ + SvgPicture.asset( + Assets.svg.circleQuestion, + width: 20, + height: 20, + color: Theme.of( + context, + ).extension()!.customTextButtonEnabledText, ), - child: Row( - children: [ - SvgPicture.asset( - Assets.svg.circleQuestion, - width: 20, - height: 20, - color: - Theme.of(context) - .extension()! - .customTextButtonEnabledText, - ), - const SizedBox(width: 8), - Text( - "What is MonKey?", - style: STextStyles.desktopMenuItemSelected( - context, - ).copyWith( - color: - Theme.of(context) - .extension()! - .customTextButtonEnabledText, + const SizedBox(width: 8), + Text( + "What is MonKey?", + style: STextStyles.desktopMenuItemSelected(context) + .copyWith( + color: Theme.of(context) + .extension()! + .customTextButtonEnabledText, ), - ), - ], ), - ), + ], ), - useSpacers: false, - isCompactHeight: true, ), - body: child, ), + useSpacers: false, + isCompactHeight: true, + ), + body: child, + ), child: ConditionalParent( condition: !isDesktop, - builder: - (child) => Scaffold( - appBar: AppBar( - leading: AppBarBackButton( + builder: (child) => Scaffold( + appBar: AppBar( + leading: AppBarBackButton( + onPressed: () { + Navigator.of(context).pop(); + }, + ), + title: Text("MonKey", style: STextStyles.navBarTitle(context)), + actions: [ + AspectRatio( + aspectRatio: 1, + child: AppBarIconButton( + icon: SvgPicture.asset(Assets.svg.circleQuestion), onPressed: () { - Navigator.of(context).pop(); - }, - ), - title: Text( - "MonKey", - style: STextStyles.navBarTitle(context), - ), - actions: [ - AspectRatio( - aspectRatio: 1, - child: AppBarIconButton( - icon: SvgPicture.asset(Assets.svg.circleQuestion), - onPressed: () { - showDialog( - context: context, - useSafeArea: false, - barrierDismissible: true, - builder: (context) { - return const StackOkDialog( - title: "About MonKeys", - message: - "A MonKey is a visual representation of your Banano address.", - ); - }, + showDialog( + context: context, + useSafeArea: false, + barrierDismissible: true, + builder: (context) { + return const StackOkDialog( + title: "About MonKeys", + message: + "A MonKey is a visual representation of your Banano address.", ); }, - ), - ), - ], + ); + }, + ), ), - body: SafeArea(child: child), - ), + ], + ), + body: SafeArea(child: child), + ), child: ConditionalParent( condition: isDesktop, builder: (child) => SizedBox(width: 318, child: child), child: ConditionalParent( condition: imageBytes != null, - builder: - (_) => Column( - children: [ - isDesktop - ? const SizedBox(height: 50) - : const Spacer(flex: 1), - if (imageBytes != null) - SizedBox( - width: 300, - height: 300, - child: SvgPicture.memory( - Uint8List.fromList(imageBytes!), - ), - ), - isDesktop - ? const SizedBox(height: 50) - : const Spacer(flex: 1), - Padding( - padding: const EdgeInsets.all(16.0), - child: Column( - children: [ - SecondaryButton( - label: "Save as SVG", - onPressed: () async { - bool didError = false; - await showLoading( - whileFuture: Future.wait([ - _saveMonKeyToFile( - bytes: Uint8List.fromList( - (wallet as BananoWallet) - .getMonkeyImageBytes()!, - ), - ), - Future.delayed( - const Duration(seconds: 2), - ), - ]), + builder: (_) => Column( + children: [ + isDesktop + ? const SizedBox(height: 50) + : const Spacer(flex: 1), + if (imageBytes != null) + SizedBox( + width: 300, + height: 300, + child: SvgPicture.memory(Uint8List.fromList(imageBytes!)), + ), + isDesktop + ? const SizedBox(height: 50) + : const Spacer(flex: 1), + Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + children: [ + SecondaryButton( + label: "Save as SVG", + onPressed: () async { + bool didError = false; + await showLoading( + whileFuture: Future.wait([ + _saveMonKeyToFile( + bytes: Uint8List.fromList( + (wallet as BananoWallet) + .getMonkeyImageBytes()!, + ), + ), + Future.delayed( + const Duration(seconds: 2), + ), + ]), + context: context, + rootNavigator: Util.isDesktop, + message: "Saving MonKey svg", + onException: (e) { + didError = true; + String msg = e.toString(); + while (msg.isNotEmpty && + msg.startsWith("Exception:")) { + msg = msg.substring(10).trim(); + } + showFloatingFlushBar( + type: FlushBarType.warning, + message: msg, context: context, - rootNavigator: Util.isDesktop, - message: "Saving MonKey svg", - onException: (e) { - didError = true; - String msg = e.toString(); - while (msg.isNotEmpty && - msg.startsWith("Exception:")) { - msg = msg.substring(10).trim(); - } - showFloatingFlushBar( - type: FlushBarType.warning, - message: msg, - context: context, - ); - }, ); + }, + ); - if (!didError && mounted) { - await showFloatingFlushBar( - type: FlushBarType.success, - message: - "SVG MonKey image saved to $_monkeyPath", - context: context, - ); + if (!didError && mounted) { + await showFloatingFlushBar( + type: FlushBarType.success, + message: + "SVG MonKey image saved to $_monkeyPath", + context: context, + ); + } + }, + ), + const SizedBox(height: 12), + SecondaryButton( + label: "Download as PNG", + onPressed: () async { + bool didError = false; + await showLoading( + whileFuture: Future.wait([ + wallet.getCurrentReceivingAddress().then( + (address) async => await ref + .read(pMonKeyService) + .fetchMonKey( + address: address!.value, + png: true, + ) + .then( + (monKeyBytes) async => + await _saveMonKeyToFile( + bytes: monKeyBytes, + isPNG: true, + ), + ), + ), + Future.delayed( + const Duration(seconds: 2), + ), + ]), + context: context, + rootNavigator: Util.isDesktop, + message: "Downloading MonKey png", + onException: (e) { + didError = true; + String msg = e.toString(); + while (msg.isNotEmpty && + msg.startsWith("Exception:")) { + msg = msg.substring(10).trim(); } - }, - ), - const SizedBox(height: 12), - SecondaryButton( - label: "Download as PNG", - onPressed: () async { - bool didError = false; - await showLoading( - whileFuture: Future.wait([ - wallet.getCurrentReceivingAddress().then( - (address) async => await ref - .read(pMonKeyService) - .fetchMonKey( - address: address!.value, - png: true, - ) - .then( - (monKeyBytes) async => - await _saveMonKeyToFile( - bytes: monKeyBytes, - isPNG: true, - ), - ), - ), - Future.delayed( - const Duration(seconds: 2), - ), - ]), + showFloatingFlushBar( + type: FlushBarType.warning, + message: msg, context: context, - rootNavigator: Util.isDesktop, - message: "Downloading MonKey png", - onException: (e) { - didError = true; - String msg = e.toString(); - while (msg.isNotEmpty && - msg.startsWith("Exception:")) { - msg = msg.substring(10).trim(); - } - showFloatingFlushBar( - type: FlushBarType.warning, - message: msg, - context: context, - ); - }, ); - - if (!didError && mounted) { - await showFloatingFlushBar( - type: FlushBarType.success, - message: - "PNG MonKey image saved to $_monkeyPath", - context: context, - ); - } }, - ), - ], + ); + + if (!didError && mounted) { + await showFloatingFlushBar( + type: FlushBarType.success, + message: + "PNG MonKey image saved to $_monkeyPath", + context: context, + ); + } + }, ), - ), - // child, - ], + ], + ), ), + // child, + ], + ), child: Column( children: [ isDesktop @@ -440,10 +422,9 @@ class _MonkeyViewState extends ConsumerState { Text( "You do not have a MonKey yet. \nFetch yours now!", style: STextStyles.smallMed14(context).copyWith( - color: - Theme.of( - context, - ).extension()!.textDark3, + color: Theme.of( + context, + ).extension()!.textDark3, ), textAlign: TextAlign.center, ), @@ -489,8 +470,8 @@ class _MonkeyViewState extends ConsumerState { }, ); - imageBytes = - (wallet as BananoWallet).getMonkeyImageBytes(); + imageBytes = (wallet as BananoWallet) + .getMonkeyImageBytes(); if (imageBytes != null) { setState(() {}); diff --git a/lib/pages/namecoin_names/sub_widgets/transfer_option_widget.dart b/lib/pages/namecoin_names/sub_widgets/transfer_option_widget.dart index 89be6129cb..200cd27f75 100644 --- a/lib/pages/namecoin_names/sub_widgets/transfer_option_widget.dart +++ b/lib/pages/namecoin_names/sub_widgets/transfer_option_widget.dart @@ -169,16 +169,15 @@ class _TransferOptionWidgetState extends ConsumerState { if (Util.isDesktop) { await showDialog( context: context, - builder: - (context) => SDialog( - child: SizedBox( - width: 580, - child: ConfirmNameTransactionView( - txData: txData, - walletId: widget.walletId, - ), - ), + builder: (context) => SDialog( + child: SizedBox( + width: 580, + child: ConfirmNameTransactionView( + txData: txData, + walletId: widget.walletId, ), + ), + ), ); } else { await Navigator.of(context).pushNamed( @@ -203,13 +202,12 @@ class _TransferOptionWidgetState extends ConsumerState { await showDialog( context: context, - builder: - (_) => StackOkDialog( - title: "Error", - message: err, - desktopPopRootNavigator: Util.isDesktop, - maxWidth: Util.isDesktop ? 600 : null, - ), + builder: (_) => StackOkDialog( + title: "Error", + message: err, + desktopPopRootNavigator: Util.isDesktop, + maxWidth: Util.isDesktop ? 600 : null, + ), ); } } finally { @@ -313,8 +311,9 @@ class _TransferOptionWidgetState extends ConsumerState { Widget build(BuildContext context) { return Column( mainAxisSize: MainAxisSize.min, - crossAxisAlignment: - Util.isDesktop ? CrossAxisAlignment.start : CrossAxisAlignment.center, + crossAxisAlignment: Util.isDesktop + ? CrossAxisAlignment.start + : CrossAxisAlignment.center, children: [ ClipRRect( borderRadius: BorderRadius.circular( @@ -338,121 +337,120 @@ class _TransferOptionWidgetState extends ConsumerState { }, focusNode: _addressFocusNode, style: STextStyles.field(context), - decoration: standardInputDecoration( - "Enter ${ref.watch(pWalletCoin(walletId)).ticker} address", - _addressFocusNode, - context, - ).copyWith( - contentPadding: const EdgeInsets.only( - left: 16, - top: 6, - bottom: 8, - right: 5, - ), - suffixIcon: Padding( - padding: - _addressController.text.isEmpty + decoration: + standardInputDecoration( + "Enter ${ref.watch(pWalletCoin(walletId)).ticker} address", + _addressFocusNode, + context, + ).copyWith( + contentPadding: const EdgeInsets.only( + left: 16, + top: 6, + bottom: 8, + right: 5, + ), + suffixIcon: Padding( + padding: _addressController.text.isEmpty ? const EdgeInsets.only(right: 8) : const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - _addressController.text.isNotEmpty - ? TextFieldIconButton( - semanticsLabel: - "Clear Button. Clears The Address Field Input.", - key: const Key( - "nameTransferClearAddressFieldButtonKey", + child: UnconstrainedBox( + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + _addressController.text.isNotEmpty + ? TextFieldIconButton( + semanticsLabel: + "Clear Button. Clears The Address Field Input.", + key: const Key( + "nameTransferClearAddressFieldButtonKey", + ), + onTap: () { + _addressController.text = ""; + _address = ""; + _setValidAddressProviders(_address); + setState(() {}); + }, + child: const XIcon(), + ) + : TextFieldIconButton( + semanticsLabel: + "Paste Button. Pastes From Clipboard To Address Field Input.", + key: const Key( + "nameTransferPasteAddressFieldButtonKey", + ), + onTap: () async { + final ClipboardData? data = await clipboard + .getData(Clipboard.kTextPlain); + if (data?.text != null && + data!.text!.isNotEmpty) { + String content = data.text!.trim(); + if (content.contains("\n")) { + content = content.substring( + 0, + content.indexOf("\n"), + ); + } + + _addressController.text = content.trim(); + _address = content.trim(); + + _setValidAddressProviders(_address); + } + }, + child: _addressController.text.isEmpty + ? const ClipboardIcon() + : const XIcon(), + ), + if (_addressController.text.isEmpty) + TextFieldIconButton( + semanticsLabel: + "Address Book Button. Opens Address Book For Address Field.", + key: const Key( + "nameTransferAddressBookButtonKey", + ), + onTap: () { + Navigator.of(context).pushNamed( + AddressBookView.routeName, + arguments: ref.read(pWalletCoin(walletId)), + ); + }, + child: const AddressBookIcon(), ), - onTap: () { - _addressController.text = ""; - _address = ""; - _setValidAddressProviders(_address); - setState(() {}); - }, - child: const XIcon(), - ) - : TextFieldIconButton( - semanticsLabel: - "Paste Button. Pastes From Clipboard To Address Field Input.", - key: const Key( - "nameTransferPasteAddressFieldButtonKey", + if (_addressController.text.isEmpty) + TextFieldIconButton( + semanticsLabel: + "Scan QR Button. Opens Camera For Scanning QR Code.", + key: const Key("nameTransferScanQrButtonKey"), + onTap: _scanQr, + child: const QrCodeIcon(), ), - onTap: () async { - final ClipboardData? data = await clipboard - .getData(Clipboard.kTextPlain); - if (data?.text != null && - data!.text!.isNotEmpty) { - String content = data.text!.trim(); - if (content.contains("\n")) { - content = content.substring( - 0, - content.indexOf("\n"), - ); - } - - _addressController.text = content.trim(); - _address = content.trim(); - - _setValidAddressProviders(_address); - } - }, - child: - _addressController.text.isEmpty - ? const ClipboardIcon() - : const XIcon(), - ), - if (_addressController.text.isEmpty) - TextFieldIconButton( - semanticsLabel: - "Address Book Button. Opens Address Book For Address Field.", - key: const Key("nameTransferAddressBookButtonKey"), - onTap: () { - Navigator.of(context).pushNamed( - AddressBookView.routeName, - arguments: ref.read(pWalletCoin(walletId)), - ); - }, - child: const AddressBookIcon(), - ), - if (_addressController.text.isEmpty) - TextFieldIconButton( - semanticsLabel: - "Scan QR Button. Opens Camera For Scanning QR Code.", - key: const Key("nameTransferScanQrButtonKey"), - onTap: _scanQr, - child: const QrCodeIcon(), - ), - ], + ], + ), + ), ), ), - ), - ), ), ), SizedBox(height: Util.isDesktop ? 42 : 16), if (!Util.isDesktop) const Spacer(), ConditionalParent( condition: Util.isDesktop, - builder: - (child) => Row( - children: [ - Expanded( - child: SecondaryButton( - label: "Cancel", - buttonHeight: ButtonHeight.l, - onPressed: - Navigator.of( - context, - rootNavigator: Util.isDesktop, - ).pop, - ), - ), - const SizedBox(width: 16), - Expanded(child: child), - ], + builder: (child) => Row( + children: [ + Expanded( + child: SecondaryButton( + label: "Cancel", + buttonHeight: ButtonHeight.l, + onPressed: Navigator.of( + context, + rootNavigator: Util.isDesktop, + ).pop, + ), ), + const SizedBox(width: 16), + Expanded(child: child), + ], + ), child: PrimaryButton( label: "Transfer", enabled: _enableButton, diff --git a/lib/pages/ordinals/ordinals_filter_view.dart b/lib/pages/ordinals/ordinals_filter_view.dart index 93c7e0dd70..a46423e1e6 100644 --- a/lib/pages/ordinals/ordinals_filter_view.dart +++ b/lib/pages/ordinals/ordinals_filter_view.dart @@ -125,10 +125,9 @@ class _OrdinalsFilterViewState extends ConsumerState { return Text( isDateSelected ? "From..." : _fromDateString, style: STextStyles.fieldLabel(context).copyWith( - color: - isDateSelected - ? Theme.of(context).extension()!.textSubtitle2 - : Theme.of(context).extension()!.accentColorDark, + color: isDateSelected + ? Theme.of(context).extension()!.textSubtitle2 + : Theme.of(context).extension()!.accentColorDark, ), ); } @@ -138,10 +137,9 @@ class _OrdinalsFilterViewState extends ConsumerState { return Text( isDateSelected ? "To..." : _toDateString, style: STextStyles.fieldLabel(context).copyWith( - color: - isDateSelected - ? Theme.of(context).extension()!.textSubtitle2 - : Theme.of(context).extension()!.accentColorDark, + color: isDateSelected + ? Theme.of(context).extension()!.textSubtitle2 + : Theme.of(context).extension()!.accentColorDark, ), ); } @@ -154,14 +152,13 @@ class _OrdinalsFilterViewState extends ConsumerState { const middleSeparatorWidth = 12.0; final isDesktop = Util.isDesktop; - final width = - isDesktop - ? null - : (MediaQuery.of(context).size.width - - (middleSeparatorWidth + - (2 * middleSeparatorPadding) + - (2 * Constants.size.standardPadding))) / - 2; + final width = isDesktop + ? null + : (MediaQuery.of(context).size.width - + (middleSeparatorWidth + + (2 * middleSeparatorPadding) + + (2 * Constants.size.standardPadding))) / + 2; return Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, @@ -193,15 +190,13 @@ class _OrdinalsFilterViewState extends ConsumerState { setState(() { if (flag) { - _toDateString = - _selectedToDate == null - ? "" - : Format.formatDate(_selectedToDate!); + _toDateString = _selectedToDate == null + ? "" + : Format.formatDate(_selectedToDate!); } - _fromDateString = - _selectedFromDate == null - ? "" - : Format.formatDate(_selectedFromDate!); + _fromDateString = _selectedFromDate == null + ? "" + : Format.formatDate(_selectedFromDate!); }); } } @@ -209,18 +204,16 @@ class _OrdinalsFilterViewState extends ConsumerState { child: Container( width: width, decoration: BoxDecoration( - color: - Theme.of( - context, - ).extension()!.textFieldDefaultBG, + color: Theme.of( + context, + ).extension()!.textFieldDefaultBG, borderRadius: BorderRadius.circular( Constants.size.circularBorderRadius, ), border: Border.all( - color: - Theme.of( - context, - ).extension()!.textFieldDefaultBG, + color: Theme.of( + context, + ).extension()!.textFieldDefaultBG, width: 1, ), ), @@ -235,10 +228,9 @@ class _OrdinalsFilterViewState extends ConsumerState { Assets.svg.calendar, height: 20, width: 20, - color: - Theme.of( - context, - ).extension()!.textSubtitle2, + color: Theme.of( + context, + ).extension()!.textSubtitle2, ), const SizedBox(width: 10), Align( @@ -288,15 +280,13 @@ class _OrdinalsFilterViewState extends ConsumerState { setState(() { if (flag) { - _fromDateString = - _selectedFromDate == null - ? "" - : Format.formatDate(_selectedFromDate!); + _fromDateString = _selectedFromDate == null + ? "" + : Format.formatDate(_selectedFromDate!); } - _toDateString = - _selectedToDate == null - ? "" - : Format.formatDate(_selectedToDate!); + _toDateString = _selectedToDate == null + ? "" + : Format.formatDate(_selectedToDate!); }); } } @@ -304,18 +294,16 @@ class _OrdinalsFilterViewState extends ConsumerState { child: Container( width: width, decoration: BoxDecoration( - color: - Theme.of( - context, - ).extension()!.textFieldDefaultBG, + color: Theme.of( + context, + ).extension()!.textFieldDefaultBG, borderRadius: BorderRadius.circular( Constants.size.circularBorderRadius, ), border: Border.all( - color: - Theme.of( - context, - ).extension()!.textFieldDefaultBG, + color: Theme.of( + context, + ).extension()!.textFieldDefaultBG, width: 1, ), ), @@ -330,10 +318,9 @@ class _OrdinalsFilterViewState extends ConsumerState { Assets.svg.calendar, height: 20, width: 20, - color: - Theme.of( - context, - ).extension()!.textSubtitle2, + color: Theme.of( + context, + ).extension()!.textSubtitle2, ), const SizedBox(width: 10), Align( @@ -365,11 +352,13 @@ class _OrdinalsFilterViewState extends ConsumerState { } else { return Background( child: Scaffold( - backgroundColor: - Theme.of(context).extension()!.background, + backgroundColor: Theme.of( + context, + ).extension()!.background, appBar: AppBar( - backgroundColor: - Theme.of(context).extension()!.background, + backgroundColor: Theme.of( + context, + ).extension()!.background, leading: AppBarBackButton( onPressed: () async { if (FocusScope.of(context).hasFocus) { @@ -573,10 +562,9 @@ class _OrdinalsFilterViewState extends ConsumerState { child: FittedBox( child: Text( "Date", - style: - isDesktop - ? STextStyles.labelExtraExtraSmall(context) - : STextStyles.smallMed12(context), + style: isDesktop + ? STextStyles.labelExtraExtraSmall(context) + : STextStyles.smallMed12(context), ), ), ), @@ -588,10 +576,9 @@ class _OrdinalsFilterViewState extends ConsumerState { child: FittedBox( child: Text( "Inscription", - style: - isDesktop - ? STextStyles.labelExtraExtraSmall(context) - : STextStyles.smallMed12(context), + style: isDesktop + ? STextStyles.labelExtraExtraSmall(context) + : STextStyles.smallMed12(context), ), ), ), @@ -609,51 +596,49 @@ class _OrdinalsFilterViewState extends ConsumerState { controller: _inscriptionTextEditingController, focusNode: inscriptionTextFieldFocusNode, onChanged: (_) => setState(() {}), - style: - isDesktop - ? STextStyles.desktopTextExtraSmall(context).copyWith( - color: - Theme.of( - context, - ).extension()!.textDark, - height: 1.8, - ) - : STextStyles.field(context), - decoration: standardInputDecoration( - "Enter inscription number...", - keywordTextFieldFocusNode, - context, - desktopMed: isDesktop, - ).copyWith( - contentPadding: - isDesktop + style: isDesktop + ? STextStyles.desktopTextExtraSmall(context).copyWith( + color: Theme.of( + context, + ).extension()!.textDark, + height: 1.8, + ) + : STextStyles.field(context), + decoration: + standardInputDecoration( + "Enter inscription number...", + keywordTextFieldFocusNode, + context, + desktopMed: isDesktop, + ).copyWith( + contentPadding: isDesktop ? const EdgeInsets.symmetric( - vertical: 10, - horizontal: 16, - ) + vertical: 10, + horizontal: 16, + ) : null, - suffixIcon: - _inscriptionTextEditingController.text.isNotEmpty + suffixIcon: + _inscriptionTextEditingController.text.isNotEmpty ? Padding( - padding: const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - children: [ - TextFieldIconButton( - child: const XIcon(), - onTap: () async { - setState(() { - _inscriptionTextEditingController.text = - ""; - }); - }, - ), - ], + padding: const EdgeInsets.only(right: 0), + child: UnconstrainedBox( + child: Row( + children: [ + TextFieldIconButton( + child: const XIcon(), + onTap: () async { + setState(() { + _inscriptionTextEditingController.text = + ""; + }); + }, + ), + ], + ), ), - ), - ) + ) : null, - ), + ), ), ), ), @@ -663,10 +648,9 @@ class _OrdinalsFilterViewState extends ConsumerState { child: FittedBox( child: Text( "Keyword", - style: - isDesktop - ? STextStyles.labelExtraExtraSmall(context) - : STextStyles.smallMed12(context), + style: isDesktop + ? STextStyles.labelExtraExtraSmall(context) + : STextStyles.smallMed12(context), ), ), ), @@ -683,51 +667,48 @@ class _OrdinalsFilterViewState extends ConsumerState { key: const Key("OrdinalsViewKeywordFieldKey"), controller: _keywordTextEditingController, focusNode: keywordTextFieldFocusNode, - style: - isDesktop - ? STextStyles.desktopTextExtraSmall(context).copyWith( - color: - Theme.of( - context, - ).extension()!.textDark, - height: 1.8, - ) - : STextStyles.field(context), + style: isDesktop + ? STextStyles.desktopTextExtraSmall(context).copyWith( + color: Theme.of( + context, + ).extension()!.textDark, + height: 1.8, + ) + : STextStyles.field(context), onChanged: (_) => setState(() {}), - decoration: standardInputDecoration( - "Type keyword...", - keywordTextFieldFocusNode, - context, - desktopMed: isDesktop, - ).copyWith( - contentPadding: - isDesktop + decoration: + standardInputDecoration( + "Type keyword...", + keywordTextFieldFocusNode, + context, + desktopMed: isDesktop, + ).copyWith( + contentPadding: isDesktop ? const EdgeInsets.symmetric( - vertical: 10, - horizontal: 16, - ) + vertical: 10, + horizontal: 16, + ) : null, - suffixIcon: - _keywordTextEditingController.text.isNotEmpty + suffixIcon: _keywordTextEditingController.text.isNotEmpty ? Padding( - padding: const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - children: [ - TextFieldIconButton( - child: const XIcon(), - onTap: () async { - setState(() { - _keywordTextEditingController.text = ""; - }); - }, - ), - ], + padding: const EdgeInsets.only(right: 0), + child: UnconstrainedBox( + child: Row( + children: [ + TextFieldIconButton( + child: const XIcon(), + onTap: () async { + setState(() { + _keywordTextEditingController.text = ""; + }); + }, + ), + ], + ), ), - ), - ) + ) : null, - ), + ), ), ), ), diff --git a/lib/pages/ordinals/widgets/ordinal_card.dart b/lib/pages/ordinals/widgets/ordinal_card.dart index 31eeb57337..24e6055c25 100644 --- a/lib/pages/ordinals/widgets/ordinal_card.dart +++ b/lib/pages/ordinals/widgets/ordinal_card.dart @@ -8,11 +8,7 @@ import '../../../utilities/util.dart'; import '../../../widgets/rounded_white_container.dart'; class OrdinalCard extends StatelessWidget { - const OrdinalCard({ - super.key, - required this.walletId, - required this.ordinal, - }); + const OrdinalCard({super.key, required this.walletId, required this.ordinal}); final String walletId; final Ordinal ordinal; diff --git a/lib/pages/paynym/add_new_paynym_follow_view.dart b/lib/pages/paynym/add_new_paynym_follow_view.dart index 85e4c3ac73..b40d5f4615 100644 --- a/lib/pages/paynym/add_new_paynym_follow_view.dart +++ b/lib/pages/paynym/add_new_paynym_follow_view.dart @@ -173,93 +173,82 @@ class _AddNewPaynymFollowViewState return ConditionalParent( condition: !isDesktop, - builder: - (child) => MasterScaffold( - isDesktop: isDesktop, - appBar: AppBar( - leading: AppBarBackButton( - onPressed: () { - Navigator.of(context).pop(); - }, - ), - titleSpacing: 0, - title: Text( - "New follow", - style: STextStyles.navBarTitle(context), - overflow: TextOverflow.ellipsis, - ), - ), - body: SafeArea( - child: LayoutBuilder( - builder: - (context, constraints) => SingleChildScrollView( - child: ConstrainedBox( - constraints: BoxConstraints( - minHeight: constraints.maxHeight, - ), - child: IntrinsicHeight( - child: Padding( - padding: const EdgeInsets.all(16), - child: child, - ), - ), - ), - ), + builder: (child) => MasterScaffold( + isDesktop: isDesktop, + appBar: AppBar( + leading: AppBarBackButton( + onPressed: () { + Navigator.of(context).pop(); + }, + ), + titleSpacing: 0, + title: Text( + "New follow", + style: STextStyles.navBarTitle(context), + overflow: TextOverflow.ellipsis, + ), + ), + body: SafeArea( + child: LayoutBuilder( + builder: (context, constraints) => SingleChildScrollView( + child: ConstrainedBox( + constraints: BoxConstraints(minHeight: constraints.maxHeight), + child: IntrinsicHeight( + child: Padding( + padding: const EdgeInsets.all(16), + child: child, + ), + ), ), ), ), + ), + ), child: ConditionalParent( condition: isDesktop, - builder: - (child) => DesktopDialog( - maxWidth: 580, - maxHeight: double.infinity, - child: Column( + builder: (child) => DesktopDialog( + maxWidth: 580, + maxHeight: double.infinity, + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Padding( - padding: const EdgeInsets.only(left: 32), - child: Text( - "New follow", - style: STextStyles.desktopH3(context), - ), - ), - const DesktopDialogCloseButton(), - ], - ), Padding( - padding: const EdgeInsets.only( - left: 32, - right: 32, - bottom: 32, + padding: const EdgeInsets.only(left: 32), + child: Text( + "New follow", + style: STextStyles.desktopH3(context), ), - child: child, ), + const DesktopDialogCloseButton(), ], ), - ), + Padding( + padding: const EdgeInsets.only(left: 32, right: 32, bottom: 32), + child: child, + ), + ], + ), + ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const SizedBox(height: 10), Text( "Featured PayNyms", - style: - isDesktop - ? STextStyles.desktopTextExtraExtraSmall(context) - : STextStyles.sectionLabelMedium12(context), + style: isDesktop + ? STextStyles.desktopTextExtraExtraSmall(context) + : STextStyles.sectionLabelMedium12(context), ), const SizedBox(height: 12), FeaturedPaynymsWidget(walletId: widget.walletId), const SizedBox(height: 24), Text( "Add new", - style: - isDesktop - ? STextStyles.desktopTextExtraExtraSmall(context) - : STextStyles.sectionLabelMedium12(context), + style: isDesktop + ? STextStyles.desktopTextExtraExtraSmall(context) + : STextStyles.sectionLabelMedium12(context), ), const SizedBox(height: 12), if (isDesktop) @@ -270,10 +259,9 @@ class _AddNewPaynymFollowViewState children: [ RoundedContainer( padding: const EdgeInsets.all(0), - color: - Theme.of( - context, - ).extension()!.textFieldDefaultBG, + color: Theme.of( + context, + ).extension()!.textFieldDefaultBG, height: 56, child: Center( child: TextField( @@ -286,15 +274,15 @@ class _AddNewPaynymFollowViewState _searchString = value; }); }, - style: STextStyles.desktopTextExtraExtraSmall( - context, - ).copyWith( - color: - Theme.of(context) + style: + STextStyles.desktopTextExtraExtraSmall( + context, + ).copyWith( + color: Theme.of(context) .extension()! .textFieldActiveText, - // height: 1.8, - ), + // height: 1.8, + ), decoration: InputDecoration( hintText: "Paste payment code", hoverColor: Colors.transparent, @@ -315,38 +303,32 @@ class _AddNewPaynymFollowViewState children: [ _searchController.text.isNotEmpty ? TextFieldIconButton( - onTap: _clear, - child: RoundedContainer( - padding: const EdgeInsets.all( - 8, + onTap: _clear, + child: RoundedContainer( + padding: const EdgeInsets.all( + 8, + ), + color: Theme.of(context) + .extension()! + .buttonBackSecondary, + child: const XIcon(), ), - color: - Theme.of(context) - .extension< - StackColors - >()! - .buttonBackSecondary, - child: const XIcon(), - ), - ) + ) : TextFieldIconButton( - key: const Key( - "paynymPasteAddressFieldButtonKey", - ), - onTap: _paste, - child: RoundedContainer( - padding: const EdgeInsets.all( - 8, + key: const Key( + "paynymPasteAddressFieldButtonKey", + ), + onTap: _paste, + child: RoundedContainer( + padding: const EdgeInsets.all( + 8, + ), + color: Theme.of(context) + .extension()! + .buttonBackSecondary, + child: const ClipboardIcon(), ), - color: - Theme.of(context) - .extension< - StackColors - >()! - .buttonBackSecondary, - child: const ClipboardIcon(), ), - ), TextFieldIconButton( key: const Key( "paynymScanQrButtonKey", @@ -354,10 +336,9 @@ class _AddNewPaynymFollowViewState onTap: _scanQr, child: RoundedContainer( padding: const EdgeInsets.all(8), - color: - Theme.of(context) - .extension()! - .buttonBackSecondary, + color: Theme.of(context) + .extension()! + .buttonBackSecondary, child: const QrCodeIcon(), ), ), @@ -392,39 +373,40 @@ class _AddNewPaynymFollowViewState }); }, style: STextStyles.field(context), - decoration: standardInputDecoration( - "Paste payment code", - searchFieldFocusNode, - context, - desktopMed: isDesktop, - ).copyWith( - suffixIcon: Padding( - padding: const EdgeInsets.only(right: 8), - child: UnconstrainedBox( - child: Row( - children: [ - _searchController.text.isNotEmpty - ? TextFieldIconButton( - onTap: _clear, - child: const XIcon(), - ) - : TextFieldIconButton( - key: const Key( - "paynymPasteAddressFieldButtonKey", - ), - onTap: _paste, - child: const ClipboardIcon(), + decoration: + standardInputDecoration( + "Paste payment code", + searchFieldFocusNode, + context, + desktopMed: isDesktop, + ).copyWith( + suffixIcon: Padding( + padding: const EdgeInsets.only(right: 8), + child: UnconstrainedBox( + child: Row( + children: [ + _searchController.text.isNotEmpty + ? TextFieldIconButton( + onTap: _clear, + child: const XIcon(), + ) + : TextFieldIconButton( + key: const Key( + "paynymPasteAddressFieldButtonKey", + ), + onTap: _paste, + child: const ClipboardIcon(), + ), + TextFieldIconButton( + key: const Key("paynymScanQrButtonKey"), + onTap: _scanQr, + child: const QrCodeIcon(), ), - TextFieldIconButton( - key: const Key("paynymScanQrButtonKey"), - onTap: _scanQr, - child: const QrCodeIcon(), + ], ), - ], + ), ), ), - ), - ), ), ), if (!isDesktop) const SizedBox(height: 12), @@ -433,21 +415,19 @@ class _AddNewPaynymFollowViewState if (_didSearch) const SizedBox(height: 20), if (_didSearch && _searchResult == null) RoundedWhiteContainer( - borderColor: - isDesktop - ? Theme.of( - context, - ).extension()!.backgroundAppBar - : null, + borderColor: isDesktop + ? Theme.of( + context, + ).extension()!.backgroundAppBar + : null, child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Text( "Nothing found. Please check the payment code.", - style: - isDesktop - ? STextStyles.desktopTextExtraExtraSmall(context) - : STextStyles.label(context), + style: isDesktop + ? STextStyles.desktopTextExtraExtraSmall(context) + : STextStyles.label(context), ), ], ), @@ -455,12 +435,11 @@ class _AddNewPaynymFollowViewState if (_didSearch && _searchResult != null) RoundedWhiteContainer( padding: const EdgeInsets.all(0), - borderColor: - isDesktop - ? Theme.of( - context, - ).extension()!.backgroundAppBar - : null, + borderColor: isDesktop + ? Theme.of( + context, + ).extension()!.backgroundAppBar + : null, child: PaynymCard( key: UniqueKey(), label: _searchResult!.nymName, diff --git a/lib/pages/paynym/paynym_claim_view.dart b/lib/pages/paynym/paynym_claim_view.dart index 8d61e139c5..387136b1c7 100644 --- a/lib/pages/paynym/paynym_claim_view.dart +++ b/lib/pages/paynym/paynym_claim_view.dart @@ -32,10 +32,7 @@ import 'dialogs/claiming_paynym_dialog.dart'; import 'paynym_home_view.dart'; class PaynymClaimView extends ConsumerStatefulWidget { - const PaynymClaimView({ - super.key, - required this.walletId, - }); + const PaynymClaimView({super.key, required this.walletId}); final String walletId; @@ -80,23 +77,20 @@ class _PaynymClaimViewState extends ConsumerState { leading: Row( children: [ Padding( - padding: const EdgeInsets.only( - left: 24, - right: 20, - ), + padding: const EdgeInsets.only(left: 24, right: 20), child: AppBarIconButton( size: 32, - color: Theme.of(context) - .extension()! - .textFieldDefaultBG, + color: Theme.of( + context, + ).extension()!.textFieldDefaultBG, shadows: const [], icon: SvgPicture.asset( Assets.svg.arrowLeft, width: 18, height: 18, - color: Theme.of(context) - .extension()! - .topNavIconPrimary, + color: Theme.of( + context, + ).extension()!.topNavIconPrimary, ), onPressed: Navigator.of(context).pop, ), @@ -107,13 +101,8 @@ class _PaynymClaimViewState extends ConsumerState { height: 42, color: Theme.of(context).extension()!.textDark, ), - const SizedBox( - width: 10, - ), - Text( - "PayNym", - style: STextStyles.desktopH3(context), - ), + const SizedBox(width: 10), + Text("PayNym", style: STextStyles.desktopH3(context)), ], ), ) @@ -129,52 +118,36 @@ class _PaynymClaimViewState extends ConsumerState { body: ConditionalParent( condition: !isDesktop, builder: (child) => SafeArea( - child: Padding( - padding: const EdgeInsets.all(16), - child: child, - ), + child: Padding(padding: const EdgeInsets.all(16), child: child), ), child: ConditionalParent( condition: isDesktop, - builder: (child) => SizedBox( - width: 328, - child: child, - ), + builder: (child) => SizedBox(width: 328, child: child), child: Column( children: [ - const Spacer( - flex: 1, - ), + const Spacer(flex: 1), SvgPicture.asset( Assets.svg.unclaimedPaynym, width: MediaQuery.of(context).size.width / 2, ), - const SizedBox( - height: 20, - ), + const SizedBox(height: 20), Text( "You do not have a PayNym yet.\nClaim yours now!", style: isDesktop ? STextStyles.desktopSubtitleH2(context).copyWith( - color: Theme.of(context) - .extension()! - .textSubtitle1, + color: Theme.of( + context, + ).extension()!.textSubtitle1, ) : STextStyles.baseXS(context).copyWith( - color: Theme.of(context) - .extension()! - .textSubtitle1, + color: Theme.of( + context, + ).extension()!.textSubtitle1, ), textAlign: TextAlign.center, ), - if (isDesktop) - const SizedBox( - height: 30, - ), - if (!isDesktop) - const Spacer( - flex: 2, - ), + if (isDesktop) const SizedBox(height: 30), + if (!isDesktop) const Spacer(flex: 2), PrimaryButton( label: "Claim", onPressed: () async { @@ -187,8 +160,9 @@ class _PaynymClaimViewState extends ConsumerState { ).then((value) => shouldCancel = value == true), ); - final wallet = ref.read(pWallets).getWallet(widget.walletId) - as PaynymInterface; + final wallet = + ref.read(pWallets).getWallet(widget.walletId) + as PaynymInterface; if (shouldCancel) return; @@ -225,11 +199,9 @@ class _PaynymClaimViewState extends ConsumerState { Navigator.of(context, rootNavigator: true).pop(); Navigator.of(context).pop(); } else { - Navigator.of(context).popUntil( - ModalRoute.withName( - WalletView.routeName, - ), - ); + Navigator.of( + context, + ).popUntil(ModalRoute.withName(WalletView.routeName)); } } return; @@ -237,14 +209,16 @@ class _PaynymClaimViewState extends ConsumerState { if (shouldCancel) return; - final token = - await ref.read(paynymAPIProvider).token(pCode.toString()); + final token = await ref + .read(paynymAPIProvider) + .token(pCode.toString()); if (shouldCancel) return; // sign token with notification private key - final signature = - await wallet.signStringWithNotificationKey(token.value!); + final signature = await wallet.signStringWithNotificationKey( + token.value!, + ); if (shouldCancel) return; @@ -256,8 +230,9 @@ class _PaynymClaimViewState extends ConsumerState { if (shouldCancel) return; if (claim.value?.claimed == pCode.toString()) { - final account = - await ref.read(paynymAPIProvider).nym(pCode.toString()); + final account = await ref + .read(paynymAPIProvider) + .nym(pCode.toString()); // if (!account.value!.segwit) { // for (int i = 0; i < 100; i++) { // final result = await _addSegwitCode(account.value!); @@ -274,11 +249,9 @@ class _PaynymClaimViewState extends ConsumerState { Navigator.of(context, rootNavigator: true).pop(); Navigator.of(context).pop(); } else { - Navigator.of(context).popUntil( - ModalRoute.withName( - WalletView.routeName, - ), - ); + Navigator.of( + context, + ).popUntil(ModalRoute.withName(WalletView.routeName)); } await Navigator.of(context).pushNamed( PaynymHomeView.routeName, @@ -290,10 +263,7 @@ class _PaynymClaimViewState extends ConsumerState { } }, ), - if (isDesktop) - const Spacer( - flex: 2, - ), + if (isDesktop) const Spacer(flex: 2), ], ), ), diff --git a/lib/pages/receive_view/addresses/address_card.dart b/lib/pages/receive_view/addresses/address_card.dart index 901cd578be..0359e8c438 100644 --- a/lib/pages/receive_view/addresses/address_card.dart +++ b/lib/pages/receive_view/addresses/address_card.dart @@ -142,11 +142,10 @@ class _AddressCardState extends ConsumerState { @override void initState() { - address = - MainDB.instance.isar.addresses - .where() - .idEqualTo(widget.addressId) - .findFirstSync()!; + address = MainDB.instance.isar.addresses + .where() + .idEqualTo(widget.addressId) + .findFirstSync()!; label = MainDB.instance.getAddressLabelSync(widget.walletId, address.value); Id? id = label?.id; @@ -155,12 +154,11 @@ class _AddressCardState extends ConsumerState { walletId: widget.walletId, addressString: address.value, value: "", - tags: - address.subType == AddressSubType.receiving - ? ["receiving"] - : address.subType == AddressSubType.change - ? ["change"] - : null, + tags: address.subType == AddressSubType.receiving + ? ["receiving"] + : address.subType == AddressSubType.change + ? ["change"] + : null, ); id = MainDB.instance.putAddressLabelSync(label!); } @@ -182,19 +180,18 @@ class _AddressCardState extends ConsumerState { return ConditionalParent( condition: isDesktop, - builder: - (child) => Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - SvgPicture.file( - File(ref.watch(coinIconProvider(widget.coin))), - width: 32, - height: 32, - ), - const SizedBox(width: 12), - Expanded(child: child), - ], + builder: (child) => Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SvgPicture.file( + File(ref.watch(coinIconProvider(widget.coin))), + width: 32, + height: 32, ), + const SizedBox(width: 12), + Expanded(child: child), + ], + ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -270,14 +267,12 @@ class _AddressCardState extends ConsumerState { const SizedBox(height: 8), Text( address.value, - style: STextStyles.w500_16( - context, - ).copyWith( - color: - Theme.of(context) + style: STextStyles.w500_16(context) + .copyWith( + color: Theme.of(context) .extension()! .textSubtitle1, - ), + ), ), const SizedBox(height: 16), Center( @@ -300,18 +295,16 @@ class _AddressCardState extends ConsumerState { Expanded( child: SecondaryButton( label: "Share", - buttonHeight: - isDesktop - ? ButtonHeight.l - : null, + buttonHeight: isDesktop + ? ButtonHeight.l + : null, icon: SvgPicture.asset( Assets.svg.share, width: 14, height: 14, - color: - Theme.of(context) - .extension()! - .buttonTextSecondary, + color: Theme.of(context) + .extension()! + .buttonTextSecondary, ), onPressed: () async { await _capturePng(false); @@ -321,10 +314,9 @@ class _AddressCardState extends ConsumerState { if (isDesktop) Expanded( child: PrimaryButton( - buttonHeight: - isDesktop - ? ButtonHeight.l - : null, + buttonHeight: isDesktop + ? ButtonHeight.l + : null, onPressed: () async { // TODO: add save functionality instead of share // save works on linux at the moment @@ -335,10 +327,9 @@ class _AddressCardState extends ConsumerState { Assets.svg.arrowDown, width: 20, height: 20, - color: - Theme.of(context) - .extension()! - .buttonTextPrimary, + color: Theme.of(context) + .extension()! + .buttonTextPrimary, ), ), ), diff --git a/lib/pages/receive_view/receive_view.dart b/lib/pages/receive_view/receive_view.dart index 5fa78b359a..81e8e447fc 100644 --- a/lib/pages/receive_view/receive_view.dart +++ b/lib/pages/receive_view/receive_view.dart @@ -112,12 +112,10 @@ class _ReceiveViewState extends ConsumerState { if (mounted) { await showDialog( context: context, - builder: - (context) => StackOkDialog( - title: "Slatepack receive error", - message: - ex?.toString() ?? "Unexpected result without exception", - ), + builder: (context) => StackOkDialog( + title: "Slatepack receive error", + message: ex?.toString() ?? "Unexpected result without exception", + ), ); } return; @@ -127,27 +125,25 @@ class _ReceiveViewState extends ConsumerState { final response = await showDialog<({String responseSlatepack, bool wasEncrypted})>( context: context, - builder: - (context) => SDialog( - child: MwcSlatepackImportDialog( - walletId: widget.walletId, - clipboard: widget.clipboard, - rawSlatepack: result.raw, - decoded: result.result, - slatepackType: result.type, - ), - ), + builder: (context) => SDialog( + child: MwcSlatepackImportDialog( + walletId: widget.walletId, + clipboard: widget.clipboard, + rawSlatepack: result.raw, + decoded: result.result, + slatepackType: result.type, + ), + ), ); if (mounted && response != null) { await showDialog( context: context, barrierDismissible: false, - builder: - (context) => SlatepackResponseDialog( - responseSlatepack: response.responseSlatepack, - wasEncrypted: response.wasEncrypted, - ), + builder: (context) => SlatepackResponseDialog( + responseSlatepack: response.responseSlatepack, + wasEncrypted: response.wasEncrypted, + ), ); } } @@ -494,10 +490,9 @@ class _ReceiveViewState extends ConsumerState { color: Theme.of(context).extension()!.background, icon: SvgPicture.asset( Assets.svg.verticalEllipsis, - color: - Theme.of( - context, - ).extension()!.accentColorDark, + color: Theme.of( + context, + ).extension()!.accentColorDark, width: 20, height: 20, ), @@ -514,10 +509,9 @@ class _ReceiveViewState extends ConsumerState { right: 10, child: Container( decoration: BoxDecoration( - color: - Theme.of( - context, - ).extension()!.popupBG, + color: Theme.of( + context, + ).extension()!.popupBG, borderRadius: BorderRadius.circular( Constants.size.circularBorderRadius, ), @@ -580,100 +574,94 @@ class _ReceiveViewState extends ConsumerState { children: [ ConditionalParent( condition: _showMultiType, - builder: - (child) => Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - Text( - "Address type", - style: STextStyles.w500_14(context).copyWith( - color: - Theme.of( - context, - ).extension()!.infoItemLabel, - ), - ), - const SizedBox(height: 10), - DropdownButtonHideUnderline( - child: DropdownButton2( - value: _currentIndex, - items: [ - for ( - int i = 0; - i < _walletAddressTypes.length; - i++ - ) - DropdownMenuItem( - value: i, - child: Text( - _supportsSpark && - _walletAddressTypes[i] == - AddressType.p2pkh - ? "Transparent address" - : "${_walletAddressTypes[i].readableName} address", - style: STextStyles.w500_14(context), - ), - ), - ], - onChanged: (value) { - if (value != null && - value != _currentIndex) { - setState(() { - _currentIndex = value; - }); - } - }, - isExpanded: true, - iconStyleData: IconStyleData( - icon: Padding( - padding: const EdgeInsets.only(right: 10), - child: SvgPicture.asset( - Assets.svg.chevronDown, - width: 12, - height: 6, - color: - Theme.of(context) - .extension()! - .textFieldActiveSearchIconRight, - ), + builder: (child) => Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Text( + "Address type", + style: STextStyles.w500_14(context).copyWith( + color: Theme.of( + context, + ).extension()!.infoItemLabel, + ), + ), + const SizedBox(height: 10), + DropdownButtonHideUnderline( + child: DropdownButton2( + value: _currentIndex, + items: [ + for ( + int i = 0; + i < _walletAddressTypes.length; + i++ + ) + DropdownMenuItem( + value: i, + child: Text( + _supportsSpark && + _walletAddressTypes[i] == + AddressType.p2pkh + ? "Transparent address" + : "${_walletAddressTypes[i].readableName} address", + style: STextStyles.w500_14(context), ), ), - buttonStyleData: ButtonStyleData( - decoration: BoxDecoration( - color: - Theme.of(context) - .extension()! - .textFieldDefaultBG, - borderRadius: BorderRadius.circular( - Constants.size.circularBorderRadius, - ), - ), + ], + onChanged: (value) { + if (value != null && value != _currentIndex) { + setState(() { + _currentIndex = value; + }); + } + }, + isExpanded: true, + iconStyleData: IconStyleData( + icon: Padding( + padding: const EdgeInsets.only(right: 10), + child: SvgPicture.asset( + Assets.svg.chevronDown, + width: 12, + height: 6, + color: Theme.of(context) + .extension()! + .textFieldActiveSearchIconRight, ), - dropdownStyleData: DropdownStyleData( - offset: const Offset(0, -10), - elevation: 0, - decoration: BoxDecoration( - color: - Theme.of(context) - .extension()! - .textFieldDefaultBG, - borderRadius: BorderRadius.circular( - Constants.size.circularBorderRadius, - ), - ), + ), + ), + buttonStyleData: ButtonStyleData( + decoration: BoxDecoration( + color: Theme.of(context) + .extension()! + .textFieldDefaultBG, + borderRadius: BorderRadius.circular( + Constants.size.circularBorderRadius, ), - menuItemStyleData: const MenuItemStyleData( - padding: EdgeInsets.symmetric( - horizontal: 16, - vertical: 8, - ), + ), + ), + dropdownStyleData: DropdownStyleData( + offset: const Offset(0, -10), + elevation: 0, + decoration: BoxDecoration( + color: Theme.of(context) + .extension()! + .textFieldDefaultBG, + borderRadius: BorderRadius.circular( + Constants.size.circularBorderRadius, ), ), ), - const SizedBox(height: 12), - child, - ], + menuItemStyleData: const MenuItemStyleData( + padding: EdgeInsets.symmetric( + horizontal: 16, + vertical: 8, + ), + ), + ), ), + const SizedBox(height: 12), + child, + ], + ), child: GestureDetector( onTap: () { HapticFeedback.lightImpact(); @@ -701,10 +689,9 @@ class _ReceiveViewState extends ConsumerState { Assets.svg.copy, width: 10, height: 10, - color: - Theme.of(context) - .extension()! - .infoItemIcons, + color: Theme.of(context) + .extension()! + .infoItemIcons, ), const SizedBox(width: 4), Text( @@ -753,14 +740,14 @@ class _ReceiveViewState extends ConsumerState { label: "Generate new address", onPressed: supportsMweb && - _walletAddressTypes[_currentIndex] == - AddressType.mweb - ? generateNewMwebAddress - : _supportsSpark && - _walletAddressTypes[_currentIndex] == - AddressType.spark - ? generateNewSparkAddress - : generateNewAddress, + _walletAddressTypes[_currentIndex] == + AddressType.mweb + ? generateNewMwebAddress + : _supportsSpark && + _walletAddressTypes[_currentIndex] == + AddressType.spark + ? generateNewSparkAddress + : generateNewAddress, ), // MWC Slatepack import button. if (coin is Mimblewimblecoin) ...[ @@ -794,11 +781,10 @@ class _ReceiveViewState extends ConsumerState { RouteGenerator.getRoute( shouldUseMaterialRoute: RouteGenerator.useMaterialPageRoute, - builder: - (_) => GenerateUriQrCodeView( - coin: coin, - receivingAddress: address, - ), + builder: (_) => GenerateUriQrCodeView( + coin: coin, + receivingAddress: address, + ), settings: const RouteSettings( name: GenerateUriQrCodeView.routeName, ), diff --git a/lib/pages/receive_view/sub_widgets/slatepack_entry_dialog.dart b/lib/pages/receive_view/sub_widgets/slatepack_entry_dialog.dart index ec9aee0c36..b79a150a79 100644 --- a/lib/pages/receive_view/sub_widgets/slatepack_entry_dialog.dart +++ b/lib/pages/receive_view/sub_widgets/slatepack_entry_dialog.dart @@ -105,10 +105,9 @@ class _SlatepackEntryDialogState extends ConsumerState { Text( "Receive Slatepack", style: STextStyles.desktopTextExtraSmall(context).copyWith( - color: - Theme.of( - context, - ).extension()!.textFieldActiveSearchIconRight, + color: Theme.of( + context, + ).extension()!.textFieldActiveSearchIconRight, ), textAlign: TextAlign.left, ), @@ -138,78 +137,75 @@ class _SlatepackEntryDialogState extends ConsumerState { }, focusNode: _slateFocusNode, style: STextStyles.desktopTextExtraSmall(context).copyWith( - color: - Theme.of( - context, - ).extension()!.textFieldActiveText, + color: Theme.of( + context, + ).extension()!.textFieldActiveText, height: 1.8, ), - decoration: standardInputDecoration( - "Enter Slatepack Message", - _slateFocusNode, - context, - desktopMed: true, - ).copyWith( - contentPadding: const EdgeInsets.symmetric( - horizontal: 16, - vertical: 12, // Adjust vertical padding for better alignment - ), - suffixIcon: Padding( - padding: - _receiveSlateController.text.isEmpty + decoration: + standardInputDecoration( + "Enter Slatepack Message", + _slateFocusNode, + context, + desktopMed: true, + ).copyWith( + contentPadding: const EdgeInsets.symmetric( + horizontal: 16, + vertical: + 12, // Adjust vertical padding for better alignment + ), + suffixIcon: Padding( + padding: _receiveSlateController.text.isEmpty ? const EdgeInsets.only(right: 8) : const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - _slateToggleFlag - ? TextFieldIconButton( - key: const Key( - "receiveViewClearSlatepackFieldButtonKey", - ), - onTap: () { - _receiveSlateController.text = ""; - setState(() { - _slateToggleFlag = false; - }); - }, - child: const XIcon(), - ) - : TextFieldIconButton( - key: const Key( - "receiveViewPasteSlatepackFieldButtonKey", + child: UnconstrainedBox( + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + _slateToggleFlag + ? TextFieldIconButton( + key: const Key( + "receiveViewClearSlatepackFieldButtonKey", + ), + onTap: () { + _receiveSlateController.text = ""; + setState(() { + _slateToggleFlag = false; + }); + }, + child: const XIcon(), + ) + : TextFieldIconButton( + key: const Key( + "receiveViewPasteSlatepackFieldButtonKey", + ), + onTap: _pasteSlatepack, + child: _receiveSlateController.text.isEmpty + ? const ClipboardIcon() + : const XIcon(), + ), + if (_receiveSlateController.text.isEmpty) + TextFieldIconButton( + semanticsLabel: + "Scan QR Button. Opens Camera For Scanning QR Code.", + key: const Key("sendViewScanQrButtonKey"), + onTap: _scanQr, + child: const QrCodeIcon(), ), - onTap: _pasteSlatepack, - child: - _receiveSlateController.text.isEmpty - ? const ClipboardIcon() - : const XIcon(), - ), - if (_receiveSlateController.text.isEmpty) - TextFieldIconButton( - semanticsLabel: - "Scan QR Button. Opens Camera For Scanning QR Code.", - key: const Key("sendViewScanQrButtonKey"), - onTap: _scanQr, - child: const QrCodeIcon(), - ), - ], + ], + ), + ), ), ), - ), - ), ), ), const SizedBox(height: 16), PrimaryButton( label: "Import", enabled: _slateToggleFlag, - onPressed: - !_slateToggleFlag - ? null - : () => - Navigator.of(context).pop(_receiveSlateController.text), + onPressed: !_slateToggleFlag + ? null + : () => Navigator.of(context).pop(_receiveSlateController.text), ), const SizedBox(height: 16), SecondaryButton( diff --git a/lib/pages/send_view/frost_ms/frost_send_view.dart b/lib/pages/send_view/frost_ms/frost_send_view.dart index 4b10141585..dd9e3466ea 100644 --- a/lib/pages/send_view/frost_ms/frost_send_view.dart +++ b/lib/pages/send_view/frost_ms/frost_send_view.dart @@ -164,10 +164,9 @@ class _FrostSendViewState extends ConsumerState { child: Text( "Ok", style: STextStyles.button(context).copyWith( - color: - Theme.of( - context, - ).extension()!.accentColorDark, + color: Theme.of( + context, + ).extension()!.accentColorDark, ), ), onPressed: () { @@ -242,59 +241,56 @@ class _FrostSendViewState extends ConsumerState { return ConditionalParent( condition: !Util.isDesktop, - builder: - (child) => Background( - child: Scaffold( - backgroundColor: - Theme.of(context).extension()!.background, - appBar: AppBar( - leading: AppBarBackButton( - onPressed: () async { - if (FocusScope.of(context).hasFocus) { - FocusScope.of(context).unfocus(); - await Future.delayed( - const Duration(milliseconds: 50), - ); - } - if (context.mounted) { - Navigator.of(context).pop(); - } - }, - ), - title: Text( - "Send ${coin.ticker}", - style: STextStyles.navBarTitle(context), - ), - ), - body: SafeArea( - child: LayoutBuilder( - builder: (builderContext, constraints) { - return SingleChildScrollView( - child: ConstrainedBox( - constraints: BoxConstraints( - // subtract top and bottom padding set in parent - minHeight: constraints.maxHeight, - ), - child: IntrinsicHeight( - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 16), - child: child, - ), - ), + builder: (child) => Background( + child: Scaffold( + backgroundColor: Theme.of( + context, + ).extension()!.background, + appBar: AppBar( + leading: AppBarBackButton( + onPressed: () async { + if (FocusScope.of(context).hasFocus) { + FocusScope.of(context).unfocus(); + await Future.delayed(const Duration(milliseconds: 50)); + } + if (context.mounted) { + Navigator.of(context).pop(); + } + }, + ), + title: Text( + "Send ${coin.ticker}", + style: STextStyles.navBarTitle(context), + ), + ), + body: SafeArea( + child: LayoutBuilder( + builder: (builderContext, constraints) { + return SingleChildScrollView( + child: ConstrainedBox( + constraints: BoxConstraints( + // subtract top and bottom padding set in parent + minHeight: constraints.maxHeight, + ), + child: IntrinsicHeight( + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 16), + child: child, ), - ); - }, - ), - ), + ), + ), + ); + }, ), ), + ), + ), child: ConditionalParent( condition: Util.isDesktop, - builder: - (child) => Padding( - padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 14), - child: child, - ), + builder: (child) => Padding( + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 14), + child: child, + ), child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ @@ -375,11 +371,10 @@ class _FrostSendViewState extends ConsumerState { for (int i = 0; i < recipientWidgetIndexes.length; i++) ConditionalParent( condition: recipientWidgetIndexes.length > 1, - builder: - (child) => Padding( - padding: const EdgeInsets.only(top: 8), - child: child, - ), + builder: (child) => Padding( + padding: const EdgeInsets.only(top: 8), + child: child, + ), child: Recipient( key: Key("recipientKey_${recipientWidgetIndexes[i]}"), index: recipientWidgetIndexes[i], @@ -388,21 +383,21 @@ class _FrostSendViewState extends ConsumerState { onChanged: () { _validateRecipientFormStates(); }, - remove: - i == 0 && recipientWidgetIndexes.length == 1 - ? null - : () { - ref - .read( - pRecipient( - recipientWidgetIndexes[i], - ).notifier, - ) - .state = null; - recipientWidgetIndexes.removeAt(i); - setState(() {}); - _validateRecipientFormStates(); - }, + remove: i == 0 && recipientWidgetIndexes.length == 1 + ? null + : () { + ref + .read( + pRecipient( + recipientWidgetIndexes[i], + ).notifier, + ) + .state = + null; + recipientWidgetIndexes.removeAt(i); + setState(() {}); + _validateRecipientFormStates(); + }, addAnotherRecipientTapped: () { // used for tracking recipient forms _greatestWidgetIndex++; @@ -443,17 +438,15 @@ class _FrostSendViewState extends ConsumerState { Text( "Coin control", style: STextStyles.w500_14(context).copyWith( - color: - Theme.of( - context, - ).extension()!.textSubtitle1, + color: Theme.of( + context, + ).extension()!.textSubtitle1, ), ), CustomTextButton( - text: - selectedUTXOs.isEmpty - ? "Select coins" - : "Selected coins (${selectedUTXOs.length})", + text: selectedUTXOs.isEmpty + ? "Select coins" + : "Selected coins (${selectedUTXOs.length})", onTap: () async { if (FocusScope.of(context).hasFocus) { FocusScope.of(context).unfocus(); @@ -506,32 +499,32 @@ class _FrostSendViewState extends ConsumerState { focusNode: _noteFocusNode, style: STextStyles.field(context), onChanged: (_) => setState(() {}), - decoration: standardInputDecoration( - "Type something...", - _noteFocusNode, - context, - ).copyWith( - suffixIcon: - noteController.text.isNotEmpty + decoration: + standardInputDecoration( + "Type something...", + _noteFocusNode, + context, + ).copyWith( + suffixIcon: noteController.text.isNotEmpty ? Padding( - padding: const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - children: [ - TextFieldIconButton( - child: const XIcon(), - onTap: () async { - setState(() { - noteController.text = ""; - }); - }, - ), - ], + padding: const EdgeInsets.only(right: 0), + child: UnconstrainedBox( + child: Row( + children: [ + TextFieldIconButton( + child: const XIcon(), + onTap: () async { + setState(() { + noteController.text = ""; + }); + }, + ), + ], + ), ), - ), - ) + ) : null, - ), + ), ), ), const SizedBox(height: 12), diff --git a/lib/pages/send_view/frost_ms/recipient.dart b/lib/pages/send_view/frost_ms/recipient.dart index 150eecb0b2..574097c445 100644 --- a/lib/pages/send_view/frost_ms/recipient.dart +++ b/lib/pages/send_view/frost_ms/recipient.dart @@ -244,8 +244,9 @@ class _RecipientState extends ConsumerState { ), CustomTextButton( text: isSingle ? "Add another recipient" : "Remove", - onTap: - isSingle ? widget.addAnotherRecipientTapped : widget.remove, + onTap: isSingle + ? widget.addAnotherRecipientTapped + : widget.remove, ), ], ), @@ -268,93 +269,92 @@ class _RecipientState extends ConsumerState { _addressIsEmpty = addressController.text.isEmpty; }); }, - decoration: standardInputDecoration( - "Enter ${widget.coin.ticker} address", - addressFocusNode, - context, - ).copyWith( - contentPadding: const EdgeInsets.only( - left: 16, - top: 6, - bottom: 8, - right: 5, - ), - suffixIcon: Padding( - padding: - _addressIsEmpty + decoration: + standardInputDecoration( + "Enter ${widget.coin.ticker} address", + addressFocusNode, + context, + ).copyWith( + contentPadding: const EdgeInsets.only( + left: 16, + top: 6, + bottom: 8, + right: 5, + ), + suffixIcon: Padding( + padding: _addressIsEmpty ? const EdgeInsets.only(right: 8) : const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - !_addressIsEmpty - ? TextFieldIconButton( - semanticsLabel: - "Clear Button. Clears The Address Field Input.", - key: const Key( - "sendViewClearAddressFieldButtonKey", + child: UnconstrainedBox( + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + !_addressIsEmpty + ? TextFieldIconButton( + semanticsLabel: + "Clear Button. Clears The Address Field Input.", + key: const Key( + "sendViewClearAddressFieldButtonKey", + ), + onTap: () { + addressController.text = ""; + + setState(() { + _addressIsEmpty = true; + }); + + _updateRecipientData(); + }, + child: const XIcon(), + ) + : TextFieldIconButton( + semanticsLabel: + "Paste Button. Pastes From Clipboard To Address Field Input.", + key: const Key( + "sendViewPasteAddressFieldButtonKey", + ), + onTap: () async { + final ClipboardData? data = await ref + .read(pClipboard) + .getData(Clipboard.kTextPlain); + if (data?.text != null && + data!.text!.isNotEmpty) { + String content = data.text!.trim(); + if (content.contains("\n")) { + content = content.substring( + 0, + content.indexOf("\n"), + ); + } + + addressController.text = content.trim(); + + setState(() { + _addressIsEmpty = + addressController.text.isEmpty; + }); + + _updateRecipientData(); + } + }, + child: _addressIsEmpty + ? const ClipboardIcon() + : const XIcon(), + ), + if (_addressIsEmpty) + TextFieldIconButton( + semanticsLabel: + "Scan QR Button. " + "Opens Camera For Scanning QR Code.", + key: const Key("sendViewScanQrButtonKey"), + onTap: _onQrTapped, + child: const QrCodeIcon(), ), - onTap: () { - addressController.text = ""; - - setState(() { - _addressIsEmpty = true; - }); - - _updateRecipientData(); - }, - child: const XIcon(), - ) - : TextFieldIconButton( - semanticsLabel: - "Paste Button. Pastes From Clipboard To Address Field Input.", - key: const Key( - "sendViewPasteAddressFieldButtonKey", - ), - onTap: () async { - final ClipboardData? data = await ref - .read(pClipboard) - .getData(Clipboard.kTextPlain); - if (data?.text != null && - data!.text!.isNotEmpty) { - String content = data.text!.trim(); - if (content.contains("\n")) { - content = content.substring( - 0, - content.indexOf("\n"), - ); - } - - addressController.text = content.trim(); - - setState(() { - _addressIsEmpty = - addressController.text.isEmpty; - }); - - _updateRecipientData(); - } - }, - child: - _addressIsEmpty - ? const ClipboardIcon() - : const XIcon(), - ), - if (_addressIsEmpty) - TextFieldIconButton( - semanticsLabel: - "Scan QR Button. " - "Opens Camera For Scanning QR Code.", - key: const Key("sendViewScanQrButtonKey"), - onTap: _onQrTapped, - child: const QrCodeIcon(), - ), - ], + ], + ), + ), ), ), - ), - ), ), ), SizedBox(height: isSingle ? 12 : 8), @@ -391,13 +391,12 @@ class _RecipientState extends ConsumerState { onChanged: (_) { _updateRecipientData(); }, - keyboardType: - Util.isDesktop - ? null - : const TextInputType.numberWithOptions( - signed: false, - decimal: true, - ), + keyboardType: Util.isDesktop + ? null + : const TextInputType.numberWithOptions( + signed: false, + decimal: true, + ), textAlign: TextAlign.right, inputFormatters: [ AmountInputFormatter( @@ -419,10 +418,9 @@ class _RecipientState extends ConsumerState { .watch(pAmountUnit(widget.coin)) .unitForCoin(widget.coin), style: STextStyles.smallMed14(context).copyWith( - color: - Theme.of( - context, - ).extension()!.accentColorDark, + color: Theme.of( + context, + ).extension()!.accentColorDark, ), ), ), diff --git a/lib/pages/send_view/token_send_view.dart b/lib/pages/send_view/token_send_view.dart index fdf78136e0..8149049219 100644 --- a/lib/pages/send_view/token_send_view.dart +++ b/lib/pages/send_view/token_send_view.dart @@ -249,24 +249,22 @@ class _TokenSendViewState extends ConsumerState { locale: ref.read(localeServiceChangeNotifierProvider).locale, ); if (baseAmount != null) { - final _price = - ref - .read(priceAnd24hChangeNotifierProvider) - .getTokenPrice(tokenContract.address) - ?.value; + final _price = ref + .read(priceAnd24hChangeNotifierProvider) + .getTokenPrice(tokenContract.address) + ?.value; if (_price == null || _price == Decimal.zero) { _amountToSend = Amount.zero; } else { - _amountToSend = - baseAmount <= Amount.zero - ? Amount.zero - : Amount.fromDecimal( - (baseAmount.decimal / _price).toDecimal( - scaleOnInfinitePrecision: tokenContract.decimals, - ), - fractionDigits: tokenContract.decimals, - ); + _amountToSend = baseAmount <= Amount.zero + ? Amount.zero + : Amount.fromDecimal( + (baseAmount.decimal / _price).toDecimal( + scaleOnInfinitePrecision: tokenContract.decimals, + ), + fractionDigits: tokenContract.decimals, + ); } if (_cachedAmountToSend != null && _cachedAmountToSend == _amountToSend) { return; @@ -305,11 +303,10 @@ class _TokenSendViewState extends ConsumerState { } _cachedAmountToSend = _amountToSend; - final price = - ref - .read(priceAnd24hChangeNotifierProvider) - .getTokenPrice(tokenContract.address) - ?.value; + final price = ref + .read(priceAnd24hChangeNotifierProvider) + .getTokenPrice(tokenContract.address) + ?.value; if (price != null && price > Decimal.zero) { baseAmountController.text = (_amountToSend!.decimal * price) @@ -496,8 +493,9 @@ class _TokenSendViewState extends ConsumerState { address: _address!, amount: amount, isChange: false, - addressType: - tokenWallet.cryptoCurrency.getAddressType(_address!)!, + addressType: tokenWallet.cryptoCurrency.getAddressType( + _address!, + )!, ), ], feeRateType: ref.read(feeRateTypeMobileStateProvider), @@ -518,14 +516,13 @@ class _TokenSendViewState extends ConsumerState { Navigator.of(context).push( RouteGenerator.getRoute( shouldUseMaterialRoute: RouteGenerator.useMaterialPageRoute, - builder: - (_) => ConfirmTransactionView( - txData: txData, - walletId: walletId, - isTokenTx: true, - onSuccess: clearSendForm, - routeOnSuccessName: TokenView.routeName, - ), + builder: (_) => ConfirmTransactionView( + txData: txData, + walletId: walletId, + isTokenTx: true, + onSuccess: clearSendForm, + routeOnSuccessName: TokenView.routeName, + ), settings: const RouteSettings( name: ConfirmTransactionView.routeName, ), @@ -555,10 +552,9 @@ class _TokenSendViewState extends ConsumerState { child: Text( "Ok", style: STextStyles.button(context).copyWith( - color: - Theme.of( - context, - ).extension()!.accentColorDark, + color: Theme.of( + context, + ).extension()!.accentColorDark, ), ), onPressed: () { @@ -699,10 +695,9 @@ class _TokenSendViewState extends ConsumerState { children: [ Container( decoration: BoxDecoration( - color: - Theme.of( - context, - ).extension()!.popupBG, + color: Theme.of( + context, + ).extension()!.popupBG, borderRadius: BorderRadius.circular( Constants.size.circularBorderRadius, ), @@ -835,85 +830,90 @@ class _TokenSendViewState extends ConsumerState { }, focusNode: _addressFocusNode, style: STextStyles.field(context), - decoration: standardInputDecoration( - "Enter ${tokenContract.symbol} address", - _addressFocusNode, - context, - ).copyWith( - contentPadding: const EdgeInsets.only( - left: 16, - top: 6, - bottom: 8, - right: 5, - ), - suffixIcon: Padding( - padding: - sendToController.text.isEmpty + decoration: + standardInputDecoration( + "Enter ${tokenContract.symbol} address", + _addressFocusNode, + context, + ).copyWith( + contentPadding: const EdgeInsets.only( + left: 16, + top: 6, + bottom: 8, + right: 5, + ), + suffixIcon: Padding( + padding: sendToController.text.isEmpty ? const EdgeInsets.only(right: 8) : const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceAround, - children: [ - _addressToggleFlag - ? TextFieldIconButton( - key: const Key( - "tokenSendViewClearAddressFieldButtonKey", + child: UnconstrainedBox( + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceAround, + children: [ + _addressToggleFlag + ? TextFieldIconButton( + key: const Key( + "tokenSendViewClearAddressFieldButtonKey", + ), + onTap: () { + sendToController.text = + ""; + _address = ""; + _updatePreviewButtonState( + _address, + _amountToSend, + ); + setState(() { + _addressToggleFlag = + false; + }); + }, + child: const XIcon(), + ) + : TextFieldIconButton( + key: const Key( + "tokenSendViewPasteAddressFieldButtonKey", + ), + onTap: + _onTokenSendViewPasteAddressFieldButtonPressed, + child: + sendToController + .text + .isEmpty + ? const ClipboardIcon() + : const XIcon(), + ), + if (sendToController.text.isEmpty) + TextFieldIconButton( + key: const Key( + "sendViewAddressBookButtonKey", + ), + onTap: () { + Navigator.of( + context, + ).pushNamed( + AddressBookView.routeName, + arguments: widget.coin, + ); + }, + child: + const AddressBookIcon(), ), - onTap: () { - sendToController.text = ""; - _address = ""; - _updatePreviewButtonState( - _address, - _amountToSend, - ); - setState(() { - _addressToggleFlag = false; - }); - }, - child: const XIcon(), - ) - : TextFieldIconButton( - key: const Key( - "tokenSendViewPasteAddressFieldButtonKey", + if (sendToController.text.isEmpty) + TextFieldIconButton( + key: const Key( + "sendViewScanQrButtonKey", + ), + onTap: + _onTokenSendViewScanQrButtonPressed, + child: const QrCodeIcon(), ), - onTap: - _onTokenSendViewPasteAddressFieldButtonPressed, - child: - sendToController - .text - .isEmpty - ? const ClipboardIcon() - : const XIcon(), - ), - if (sendToController.text.isEmpty) - TextFieldIconButton( - key: const Key( - "sendViewAddressBookButtonKey", - ), - onTap: () { - Navigator.of(context).pushNamed( - AddressBookView.routeName, - arguments: widget.coin, - ); - }, - child: const AddressBookIcon(), - ), - if (sendToController.text.isEmpty) - TextFieldIconButton( - key: const Key( - "sendViewScanQrButtonKey", - ), - onTap: - _onTokenSendViewScanQrButtonPressed, - child: const QrCodeIcon(), - ), - ], + ], + ), + ), ), ), - ), - ), ), ), Builder( @@ -935,14 +935,12 @@ class _TokenSendViewState extends ConsumerState { child: Text( error, textAlign: TextAlign.left, - style: STextStyles.label( - context, - ).copyWith( - color: - Theme.of(context) + style: STextStyles.label(context) + .copyWith( + color: Theme.of(context) .extension()! .textError, - ), + ), ), ), ); @@ -977,23 +975,21 @@ class _TokenSendViewState extends ConsumerState { autocorrect: Util.isDesktop ? false : true, enableSuggestions: Util.isDesktop ? false : true, style: STextStyles.smallMed14(context).copyWith( - color: - Theme.of( - context, - ).extension()!.textDark, + color: Theme.of( + context, + ).extension()!.textDark, ), key: const Key( "amountInputFieldCryptoTextFieldKey", ), controller: cryptoAmountController, focusNode: _cryptoFocus, - keyboardType: - Util.isDesktop - ? null - : const TextInputType.numberWithOptions( - signed: false, - decimal: true, - ), + keyboardType: Util.isDesktop + ? null + : const TextInputType.numberWithOptions( + signed: false, + decimal: true, + ), textAlign: TextAlign.right, inputFormatters: [ AmountInputFormatter( @@ -1026,14 +1022,12 @@ class _TokenSendViewState extends ConsumerState { ref .watch(pAmountUnit(coin)) .unitForContract(tokenContract), - style: STextStyles.smallMed14( - context, - ).copyWith( - color: - Theme.of(context) + style: STextStyles.smallMed14(context) + .copyWith( + color: Theme.of(context) .extension()! .accentColorDark, - ), + ), ), ), ), @@ -1044,26 +1038,25 @@ class _TokenSendViewState extends ConsumerState { if (Prefs.instance.externalCalls) TextField( autocorrect: Util.isDesktop ? false : true, - enableSuggestions: - Util.isDesktop ? false : true, + enableSuggestions: Util.isDesktop + ? false + : true, style: STextStyles.smallMed14(context).copyWith( - color: - Theme.of( - context, - ).extension()!.textDark, + color: Theme.of( + context, + ).extension()!.textDark, ), key: const Key( "amountInputFieldFiatTextFieldKey", ), controller: baseAmountController, focusNode: _baseFocus, - keyboardType: - Util.isDesktop - ? null - : const TextInputType.numberWithOptions( - signed: false, - decimal: true, - ), + keyboardType: Util.isDesktop + ? null + : const TextInputType.numberWithOptions( + signed: false, + decimal: true, + ), textAlign: TextAlign.right, inputFormatters: [ AmountInputFormatter( @@ -1098,14 +1091,12 @@ class _TokenSendViewState extends ConsumerState { (value) => value.currency, ), ), - style: STextStyles.smallMed14( - context, - ).copyWith( - color: - Theme.of(context) + style: STextStyles.smallMed14(context) + .copyWith( + color: Theme.of(context) .extension()! .accentColorDark, - ), + ), ), ), ), @@ -1124,41 +1115,42 @@ class _TokenSendViewState extends ConsumerState { ), child: TextField( autocorrect: Util.isDesktop ? false : true, - enableSuggestions: - Util.isDesktop ? false : true, + enableSuggestions: Util.isDesktop + ? false + : true, controller: noteController, focusNode: _noteFocusNode, style: STextStyles.field(context), onChanged: (_) => setState(() {}), - decoration: standardInputDecoration( - "Type something...", - _noteFocusNode, - context, - ).copyWith( - suffixIcon: - noteController.text.isNotEmpty + decoration: + standardInputDecoration( + "Type something...", + _noteFocusNode, + context, + ).copyWith( + suffixIcon: noteController.text.isNotEmpty ? Padding( - padding: const EdgeInsets.only( - right: 0, - ), - child: UnconstrainedBox( - child: Row( - children: [ - TextFieldIconButton( - child: const XIcon(), - onTap: () async { - setState(() { - noteController.text = - ""; - }); - }, - ), - ], + padding: const EdgeInsets.only( + right: 0, ), - ), - ) + child: UnconstrainedBox( + child: Row( + children: [ + TextFieldIconButton( + child: const XIcon(), + onTap: () async { + setState(() { + noteController.text = + ""; + }); + }, + ), + ], + ), + ), + ) : null, - ), + ), ), ), const SizedBox(height: 12), @@ -1172,8 +1164,9 @@ class _TokenSendViewState extends ConsumerState { children: [ TextField( autocorrect: Util.isDesktop ? false : true, - enableSuggestions: - Util.isDesktop ? false : true, + enableSuggestions: Util.isDesktop + ? false + : true, controller: feeController, readOnly: true, textInputAction: TextInputAction.none, @@ -1183,10 +1176,9 @@ class _TokenSendViewState extends ConsumerState { horizontal: 12, ), child: RawMaterialButton( - splashColor: - Theme.of( - context, - ).extension()!.highlight, + splashColor: Theme.of( + context, + ).extension()!.highlight, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular( Constants.size.circularBorderRadius, @@ -1201,19 +1193,21 @@ class _TokenSendViewState extends ConsumerState { top: Radius.circular(20), ), ), - builder: - (_) => TransactionFeeSelectionSheet( + builder: (_) => + TransactionFeeSelectionSheet( walletId: walletId, isToken: true, - amount: (Decimal.tryParse( - cryptoAmountController - .text, - ) ?? - Decimal.zero) - .toAmount( - fractionDigits: - tokenContract.decimals, - ), + amount: + (Decimal.tryParse( + cryptoAmountController + .text, + ) ?? + Decimal.zero) + .toAmount( + fractionDigits: + tokenContract + .decimals, + ), updateChosen: (String fee) { if (fee == "custom") { if (!isCustomFee.value) { @@ -1317,28 +1311,24 @@ class _TokenSendViewState extends ConsumerState { TextButton( onPressed: ref - .watch( - previewTokenTxButtonStateProvider - .state, - ) - .state - ? _previewTransaction - : null, + .watch( + previewTokenTxButtonStateProvider.state, + ) + .state + ? _previewTransaction + : null, style: ref - .watch( - previewTokenTxButtonStateProvider - .state, - ) - .state - ? Theme.of(context) - .extension()! - .getPrimaryEnabledButtonStyle(context) - : Theme.of(context) - .extension()! - .getPrimaryDisabledButtonStyle( - context, - ), + .watch( + previewTokenTxButtonStateProvider.state, + ) + .state + ? Theme.of(context) + .extension()! + .getPrimaryEnabledButtonStyle(context) + : Theme.of(context) + .extension()! + .getPrimaryDisabledButtonStyle(context), child: Text( "Preview", style: STextStyles.button(context), diff --git a/lib/pages/settings_views/global_settings_view/global_settings_view.dart b/lib/pages/settings_views/global_settings_view/global_settings_view.dart index 5dc6d4101f..718a8f8bcf 100644 --- a/lib/pages/settings_views/global_settings_view/global_settings_view.dart +++ b/lib/pages/settings_views/global_settings_view/global_settings_view.dart @@ -96,21 +96,19 @@ class GlobalSettingsView extends StatelessWidget { Navigator.push( context, RouteGenerator.getRoute( - shouldUseMaterialRoute: - RouteGenerator - .useMaterialPageRoute, - builder: - (_) => const LockscreenView( - showBackButton: true, - routeOnSuccess: - StackBackupView.routeName, - biometricsCancelButtonString: - "CANCEL", - biometricsLocalizedReason: - "Authenticate to access ${AppConfig.prefix} backup & restore settings", - biometricsAuthenticationTitle: - "${AppConfig.prefix} backup", - ), + shouldUseMaterialRoute: RouteGenerator + .useMaterialPageRoute, + builder: (_) => const LockscreenView( + showBackButton: true, + routeOnSuccess: + StackBackupView.routeName, + biometricsCancelButtonString: + "CANCEL", + biometricsLocalizedReason: + "Authenticate to access ${AppConfig.prefix} backup & restore settings", + biometricsAuthenticationTitle: + "${AppConfig.prefix} backup", + ), settings: const RouteSettings( name: "/swblockscreen", ), diff --git a/lib/pages/settings_views/global_settings_view/hidden_settings.dart b/lib/pages/settings_views/global_settings_view/hidden_settings.dart index 52b78cbcf0..5a4a3bb704 100644 --- a/lib/pages/settings_views/global_settings_view/hidden_settings.dart +++ b/lib/pages/settings_views/global_settings_view/hidden_settings.dart @@ -41,19 +41,17 @@ class HiddenSettings extends StatelessWidget { padding: const EdgeInsets.all(8.0), child: AppBarIconButton( size: 32, - color: - Theme.of( - context, - ).extension()!.textFieldDefaultBG, + color: Theme.of( + context, + ).extension()!.textFieldDefaultBG, shadows: const [], icon: SvgPicture.asset( Assets.svg.arrowLeft, width: 18, height: 18, - color: - Theme.of( - context, - ).extension()!.topNavIconPrimary, + color: Theme.of( + context, + ).extension()!.topNavIconPrimary, ), onPressed: Navigator.of(context).pop, ), @@ -81,8 +79,8 @@ class HiddenSettings extends StatelessWidget { ref .read(prefsChangeNotifierProvider) .advancedFiroFeatures = !ref - .read(prefsChangeNotifierProvider) - .advancedFiroFeatures; + .read(prefsChangeNotifierProvider) + .advancedFiroFeatures; }, child: RoundedWhiteContainer( child: Text( @@ -94,10 +92,9 @@ class HiddenSettings extends StatelessWidget { ? "Hide advanced Firo features" : "Show advanced Firo features", style: STextStyles.button(context).copyWith( - color: - Theme.of(context) - .extension()! - .accentColorDark, + color: Theme.of(context) + .extension()! + .accentColorDark, ), ), ), @@ -109,10 +106,9 @@ class HiddenSettings extends StatelessWidget { builder: (_, ref, __) { return GestureDetector( onTap: () async { - final notifs = - ref - .read(notificationsProvider) - .notifications; + final notifs = ref + .read(notificationsProvider) + .notifications; for (final n in notifs) { await ref @@ -137,10 +133,9 @@ class HiddenSettings extends StatelessWidget { child: Text( "Delete notifications", style: STextStyles.button(context).copyWith( - color: - Theme.of(context) - .extension()! - .accentColorDark, + color: Theme.of(context) + .extension()! + .accentColorDark, ), ), ), @@ -153,17 +148,17 @@ class HiddenSettings extends StatelessWidget { return GestureDetector( onTap: () async { ref - .read(prefsChangeNotifierProvider) - .logsPath = null; + .read(prefsChangeNotifierProvider) + .logsPath = + null; }, child: RoundedWhiteContainer( child: Text( "Reset log location", style: STextStyles.button(context).copyWith( - color: - Theme.of(context) - .extension()! - .accentColorDark, + color: Theme.of(context) + .extension()! + .accentColorDark, ), ), ), @@ -285,14 +280,14 @@ class HiddenSettings extends StatelessWidget { 6) { return GestureDetector( onTap: () async { - final familiarity = - ref - .read(prefsChangeNotifierProvider) - .familiarity; + final familiarity = ref + .read(prefsChangeNotifierProvider) + .familiarity; if (familiarity < 6) { ref - .read(prefsChangeNotifierProvider) - .familiarity = 6; + .read(prefsChangeNotifierProvider) + .familiarity = + 6; Constants.exchangeForExperiencedUsers(6); } @@ -300,14 +295,12 @@ class HiddenSettings extends StatelessWidget { child: RoundedWhiteContainer( child: Text( "Enable exchange", - style: STextStyles.button( - context, - ).copyWith( - color: - Theme.of(context) + style: STextStyles.button(context) + .copyWith( + color: Theme.of(context) .extension()! .accentColorDark, - ), + ), ), ), ); @@ -323,22 +316,18 @@ class HiddenSettings extends StatelessWidget { onTap: () async { await showDialog( context: context, - builder: - (_) => TorWarningDialog( - coin: Stellar( - CryptoCurrencyNetwork.main, - ), - ), + builder: (_) => TorWarningDialog( + coin: Stellar(CryptoCurrencyNetwork.main), + ), ); }, child: RoundedWhiteContainer( child: Text( "Show Tor warning popup", style: STextStyles.button(context).copyWith( - color: - Theme.of(context) - .extension()! - .accentColorDark, + color: Theme.of(context) + .extension()! + .accentColorDark, ), ), ), diff --git a/lib/pages/settings_views/global_settings_view/manage_nodes_views/add_edit_node_view.dart b/lib/pages/settings_views/global_settings_view/manage_nodes_views/add_edit_node_view.dart index e0ebd4c532..7245b11a4e 100644 --- a/lib/pages/settings_views/global_settings_view/manage_nodes_views/add_edit_node_view.dart +++ b/lib/pages/settings_views/global_settings_view/manage_nodes_views/add_edit_node_view.dart @@ -114,107 +114,102 @@ class _AddEditNodeViewState extends ConsumerState { context: context, useSafeArea: true, barrierDismissible: true, - builder: - (_) => - isDesktop - ? DesktopDialog( - maxWidth: 440, - maxHeight: 300, - child: Column( + builder: (_) => isDesktop + ? DesktopDialog( + maxWidth: 440, + maxHeight: 300, + child: Column( + children: [ + Padding( + padding: const EdgeInsets.only(top: 32), + child: Row( children: [ - Padding( - padding: const EdgeInsets.only(top: 32), - child: Row( - children: [ - const SizedBox(width: 32), - Text( - "Server currently unreachable", - style: STextStyles.desktopH3(context), - ), - ], - ), + const SizedBox(width: 32), + Text( + "Server currently unreachable", + style: STextStyles.desktopH3(context), ), - Expanded( - child: Padding( - padding: const EdgeInsets.only( - left: 32, - right: 32, - top: 16, - bottom: 32, - ), - child: Column( - children: [ - const Spacer(), - Text( - "Would you like to save this node anyways?", - style: STextStyles.desktopTextMedium( + ], + ), + ), + Expanded( + child: Padding( + padding: const EdgeInsets.only( + left: 32, + right: 32, + top: 16, + bottom: 32, + ), + child: Column( + children: [ + const Spacer(), + Text( + "Would you like to save this node anyways?", + style: STextStyles.desktopTextMedium(context), + ), + const Spacer(flex: 2), + Row( + children: [ + Expanded( + child: SecondaryButton( + label: "Cancel", + buttonHeight: isDesktop + ? ButtonHeight.l + : null, + onPressed: () => Navigator.of( context, - ), + rootNavigator: true, + ).pop(false), ), - const Spacer(flex: 2), - Row( - children: [ - Expanded( - child: SecondaryButton( - label: "Cancel", - buttonHeight: - isDesktop ? ButtonHeight.l : null, - onPressed: - () => Navigator.of( - context, - rootNavigator: true, - ).pop(false), - ), - ), - const SizedBox(width: 16), - Expanded( - child: PrimaryButton( - label: "Save", - buttonHeight: - isDesktop ? ButtonHeight.l : null, - onPressed: - () => Navigator.of( - context, - rootNavigator: true, - ).pop(true), - ), - ), - ], + ), + const SizedBox(width: 16), + Expanded( + child: PrimaryButton( + label: "Save", + buttonHeight: isDesktop + ? ButtonHeight.l + : null, + onPressed: () => Navigator.of( + context, + rootNavigator: true, + ).pop(true), ), - ], - ), + ), + ], ), - ), - ], - ), - ) - : StackDialog( - title: "Server currently unreachable", - message: "Would you like to save this node anyways?", - leftButton: TextButton( - onPressed: () async { - Navigator.of(context).pop(false); - }, - child: Text( - "Cancel", - style: STextStyles.button(context).copyWith( - color: - Theme.of( - context, - ).extension()!.accentColorDark, - ), + ], ), ), - rightButton: TextButton( - onPressed: () async { - Navigator.of(context).pop(true); - }, - style: Theme.of(context) - .extension()! - .getPrimaryEnabledButtonStyle(context), - child: Text("Save", style: STextStyles.button(context)), - ), ), + ], + ), + ) + : StackDialog( + title: "Server currently unreachable", + message: "Would you like to save this node anyways?", + leftButton: TextButton( + onPressed: () async { + Navigator.of(context).pop(false); + }, + child: Text( + "Cancel", + style: STextStyles.button(context).copyWith( + color: Theme.of( + context, + ).extension()!.accentColorDark, + ), + ), + ), + rightButton: TextButton( + onPressed: () async { + Navigator.of(context).pop(true); + }, + style: Theme.of(context) + .extension()! + .getPrimaryEnabledButtonStyle(context), + child: Text("Save", style: STextStyles.button(context)), + ), + ), ).then((value) { if (value is bool && value) { shouldSave = true; @@ -450,8 +445,9 @@ class _AddEditNodeViewState extends ConsumerState { saveEnabled = false; testConnectionEnabled = false; } else { - final node = - ref.read(nodeServiceChangeNotifierProvider).getNodeById(id: nodeId!)!; + final node = ref + .read(nodeServiceChangeNotifierProvider) + .getNodeById(id: nodeId!)!; testConnectionEnabled = node.host.isNotEmpty; saveEnabled = testConnectionEnabled && node.name.isNotEmpty; } @@ -468,205 +464,193 @@ class _AddEditNodeViewState extends ConsumerState { Widget build(BuildContext context) { final NodeModel? node = viewType == AddEditNodeViewType.edit && nodeId != null - ? ref.watch( - nodeServiceChangeNotifierProvider.select( - (value) => value.getNodeById(id: nodeId!), - ), - ) - : null; + ? ref.watch( + nodeServiceChangeNotifierProvider.select( + (value) => value.getNodeById(id: nodeId!), + ), + ) + : null; return ConditionalParent( condition: !isDesktop, - builder: - (child) => Background( - child: Scaffold( - backgroundColor: - Theme.of(context).extension()!.background, - appBar: AppBar( - leading: AppBarBackButton( - onPressed: () async { - if (FocusScope.of(context).hasFocus) { - FocusScope.of(context).unfocus(); - await Future.delayed( - const Duration(milliseconds: 75), - ); - } - if (context.mounted) { - Navigator.of(context).pop(); - } - }, - ), - title: Text( - viewType == AddEditNodeViewType.edit - ? "Edit node" - : "Add node", - style: STextStyles.navBarTitle(context), - ), - actions: [ - if (viewType == AddEditNodeViewType.add && - coin - is CryptonoteCurrency) // TODO: [prio=low] do something other than `coin is CryptonoteCurrency` in the future - Padding( - padding: const EdgeInsets.only( - top: 10, - bottom: 10, - right: 10, - ), - child: AspectRatio( - aspectRatio: 1, - child: AppBarIconButton( - key: const Key("qrNodeAppBarButtonKey"), - size: 36, - shadows: const [], - color: - Theme.of( - context, - ).extension()!.background, - icon: QrCodeIcon( - width: 20, - height: 20, - color: - Theme.of( - context, - ).extension()!.accentColorDark, - ), - onPressed: _scanQr, - ), + builder: (child) => Background( + child: Scaffold( + backgroundColor: Theme.of( + context, + ).extension()!.background, + appBar: AppBar( + leading: AppBarBackButton( + onPressed: () async { + if (FocusScope.of(context).hasFocus) { + FocusScope.of(context).unfocus(); + await Future.delayed(const Duration(milliseconds: 75)); + } + if (context.mounted) { + Navigator.of(context).pop(); + } + }, + ), + title: Text( + viewType == AddEditNodeViewType.edit ? "Edit node" : "Add node", + style: STextStyles.navBarTitle(context), + ), + actions: [ + if (viewType == AddEditNodeViewType.add && + coin + is CryptonoteCurrency) // TODO: [prio=low] do something other than `coin is CryptonoteCurrency` in the future + Padding( + padding: const EdgeInsets.only( + top: 10, + bottom: 10, + right: 10, + ), + child: AspectRatio( + aspectRatio: 1, + child: AppBarIconButton( + key: const Key("qrNodeAppBarButtonKey"), + size: 36, + shadows: const [], + color: Theme.of( + context, + ).extension()!.background, + icon: QrCodeIcon( + width: 20, + height: 20, + color: Theme.of( + context, + ).extension()!.accentColorDark, ), + onPressed: _scanQr, ), - if (viewType == AddEditNodeViewType.edit && - ref - .watch( - nodeServiceChangeNotifierProvider.select( - (value) => value.getNodesFor(coin), - ), - ) - .length > - 1) - Padding( - padding: const EdgeInsets.only( - top: 10, - bottom: 10, - right: 10, + ), + ), + if (viewType == AddEditNodeViewType.edit && + ref + .watch( + nodeServiceChangeNotifierProvider.select( + (value) => value.getNodesFor(coin), + ), + ) + .length > + 1) + Padding( + padding: const EdgeInsets.only( + top: 10, + bottom: 10, + right: 10, + ), + child: AspectRatio( + aspectRatio: 1, + child: AppBarIconButton( + key: const Key("deleteNodeAppBarButtonKey"), + size: 36, + shadows: const [], + color: Theme.of( + context, + ).extension()!.background, + icon: SvgPicture.asset( + Assets.svg.trash, + color: Theme.of( + context, + ).extension()!.accentColorDark, + width: 20, + height: 20, ), - child: AspectRatio( - aspectRatio: 1, - child: AppBarIconButton( - key: const Key("deleteNodeAppBarButtonKey"), - size: 36, - shadows: const [], - color: - Theme.of( - context, - ).extension()!.background, - icon: SvgPicture.asset( - Assets.svg.trash, - color: - Theme.of( - context, - ).extension()!.accentColorDark, - width: 20, - height: 20, - ), - onPressed: () async { - Navigator.popUntil( - context, - ModalRoute.withName( - widget.routeOnSuccessOrDelete, - ), - ); + onPressed: () async { + Navigator.popUntil( + context, + ModalRoute.withName(widget.routeOnSuccessOrDelete), + ); - await ref - .read(nodeServiceChangeNotifierProvider) - .delete(nodeId!, true); - }, - ), - ), + await ref + .read(nodeServiceChangeNotifierProvider) + .delete(nodeId!, true); + }, ), - ], - ), - body: SafeArea( - child: Padding( - padding: const EdgeInsets.only( - top: 12, - left: 12, - right: 12, - bottom: 12, - ), - child: LayoutBuilder( - builder: (context, constraints) { - return SingleChildScrollView( - child: Padding( - padding: const EdgeInsets.all(4), - child: ConstrainedBox( - constraints: BoxConstraints( - minHeight: constraints.maxHeight - 8, - ), - child: IntrinsicHeight(child: child), - ), - ), - ); - }, ), ), + ], + ), + body: SafeArea( + child: Padding( + padding: const EdgeInsets.only( + top: 12, + left: 12, + right: 12, + bottom: 12, + ), + child: LayoutBuilder( + builder: (context, constraints) { + return SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(4), + child: ConstrainedBox( + constraints: BoxConstraints( + minHeight: constraints.maxHeight - 8, + ), + child: IntrinsicHeight(child: child), + ), + ), + ); + }, ), ), ), + ), + ), child: ConditionalParent( condition: isDesktop, - builder: - (child) => DesktopDialog( - maxWidth: 580, - maxHeight: double.infinity, - child: Column( - mainAxisSize: MainAxisSize.min, + builder: (child) => DesktopDialog( + maxWidth: 580, + maxHeight: double.infinity, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + const SizedBox(height: 8), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - const SizedBox(height: 8), Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Row( - children: [ - const SizedBox(width: 8), - const AppBarBackButton(iconSize: 24, size: 40), - Text( - "Add new node", - style: STextStyles.desktopH3(context), - ), - ], + const SizedBox(width: 8), + const AppBarBackButton(iconSize: 24, size: 40), + Text( + "Add new node", + style: STextStyles.desktopH3(context), ), - if (coin - is CryptonoteCurrency) // TODO: [prio=low] do something other than `coin is CryptonoteCurrency` in the future - Padding( - padding: const EdgeInsets.only(right: 32), - child: AppBarIconButton( - size: 40, - color: - isDesktop - ? Theme.of(context) - .extension()! - .textFieldDefaultBG - : Theme.of( - context, - ).extension()!.background, - icon: const QrCodeIcon(width: 21, height: 21), - onPressed: _scanQr, - ), - ), ], ), - Padding( - padding: const EdgeInsets.only( - left: 32, - right: 32, - top: 16, - bottom: 32, + if (coin + is CryptonoteCurrency) // TODO: [prio=low] do something other than `coin is CryptonoteCurrency` in the future + Padding( + padding: const EdgeInsets.only(right: 32), + child: AppBarIconButton( + size: 40, + color: isDesktop + ? Theme.of( + context, + ).extension()!.textFieldDefaultBG + : Theme.of( + context, + ).extension()!.background, + icon: const QrCodeIcon(width: 21, height: 21), + onPressed: _scanQr, + ), ), - child: child, - ), ], ), - ), + Padding( + padding: const EdgeInsets.only( + left: 32, + right: 32, + top: 16, + bottom: 32, + ), + child: child, + ), + ], + ), + ), child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ @@ -704,37 +688,36 @@ class _AddEditNodeViewState extends ConsumerState { label: "Test connection", enabled: testConnectionEnabled, buttonHeight: isDesktop ? ButtonHeight.l : null, - onPressed: - testConnectionEnabled - ? () async { - final testPassed = await testNodeConnection( - context: context, - onSuccess: _onTestSuccess, - cryptoCurrency: coin, - nodeFormData: ref.read(nodeFormDataProvider), - ref: ref, - ); - if (context.mounted) { - if (testPassed) { - unawaited( - showFloatingFlushBar( - type: FlushBarType.success, - message: "Server ping success", - context: context, - ), - ); - } else { - unawaited( - showFloatingFlushBar( - type: FlushBarType.warning, - message: "Server unreachable", - context: context, - ), - ); - } + onPressed: testConnectionEnabled + ? () async { + final testPassed = await testNodeConnection( + context: context, + onSuccess: _onTestSuccess, + cryptoCurrency: coin, + nodeFormData: ref.read(nodeFormDataProvider), + ref: ref, + ); + if (context.mounted) { + if (testPassed) { + unawaited( + showFloatingFlushBar( + type: FlushBarType.success, + message: "Server ping success", + context: context, + ), + ); + } else { + unawaited( + showFloatingFlushBar( + type: FlushBarType.warning, + message: "Server unreachable", + context: context, + ), + ); } } - : null, + } + : null, ), ), if (isDesktop) const SizedBox(width: 16), @@ -752,14 +735,13 @@ class _AddEditNodeViewState extends ConsumerState { if (!isDesktop) const SizedBox(height: 16), if (!isDesktop) TextButton( - style: - saveEnabled - ? Theme.of(context) - .extension()! - .getPrimaryEnabledButtonStyle(context) - : Theme.of(context) - .extension()! - .getPrimaryDisabledButtonStyle(context), + style: saveEnabled + ? Theme.of(context) + .extension()! + .getPrimaryEnabledButtonStyle(context) + : Theme.of(context) + .extension()! + .getPrimaryDisabledButtonStyle(context), onPressed: saveEnabled ? attemptSave : null, child: Text("Save", style: STextStyles.button(context)), ), @@ -873,10 +855,12 @@ class _NodeFormState extends ConsumerState { onChanged?.call(canSave, canTestConnection); ref.read(nodeFormDataProvider).name = _nameController.text; ref.read(nodeFormDataProvider).host = _hostController.text; - ref.read(nodeFormDataProvider).login = - _usernameController.text.isEmpty ? null : _usernameController.text; - ref.read(nodeFormDataProvider).password = - _passwordController.text.isEmpty ? null : _passwordController.text; + ref.read(nodeFormDataProvider).login = _usernameController.text.isEmpty + ? null + : _usernameController.text; + ref.read(nodeFormDataProvider).password = _passwordController.text.isEmpty + ? null + : _passwordController.text; ref.read(nodeFormDataProvider).port = port; ref.read(nodeFormDataProvider).useSSL = _useSSL; ref.read(nodeFormDataProvider).isFailover = _isFailover; @@ -985,31 +969,32 @@ class _NodeFormState extends ConsumerState { controller: _nameController, focusNode: _nameFocusNode, style: STextStyles.field(context), - decoration: standardInputDecoration( - "Node name", - _nameFocusNode, - context, - ).copyWith( - suffixIcon: - !shouldBeReadOnly && _nameController.text.isNotEmpty + decoration: + standardInputDecoration( + "Node name", + _nameFocusNode, + context, + ).copyWith( + suffixIcon: + !shouldBeReadOnly && _nameController.text.isNotEmpty ? Padding( - padding: const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - children: [ - TextFieldIconButton( - child: const XIcon(), - onTap: () async { - _nameController.text = ""; - _updateState(); - }, - ), - ], + padding: const EdgeInsets.only(right: 0), + child: UnconstrainedBox( + child: Row( + children: [ + TextFieldIconButton( + child: const XIcon(), + onTap: () async { + _nameController.text = ""; + _updateState(); + }, + ), + ], + ), ), - ), - ) + ) : null, - ), + ), onChanged: (newValue) { _updateState(); setState(() {}); @@ -1030,31 +1015,32 @@ class _NodeFormState extends ConsumerState { controller: _hostController, focusNode: _hostFocusNode, style: STextStyles.field(context), - decoration: standardInputDecoration( - (widget.coin is! CryptonoteCurrency) ? "IP address" : "Url", - _hostFocusNode, - context, - ).copyWith( - suffixIcon: - !shouldBeReadOnly && _hostController.text.isNotEmpty + decoration: + standardInputDecoration( + (widget.coin is! CryptonoteCurrency) ? "IP address" : "Url", + _hostFocusNode, + context, + ).copyWith( + suffixIcon: + !shouldBeReadOnly && _hostController.text.isNotEmpty ? Padding( - padding: const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - children: [ - TextFieldIconButton( - child: const XIcon(), - onTap: () async { - _hostController.text = ""; - _updateState(); - }, - ), - ], + padding: const EdgeInsets.only(right: 0), + child: UnconstrainedBox( + child: Row( + children: [ + TextFieldIconButton( + child: const XIcon(), + onTap: () async { + _hostController.text = ""; + _updateState(); + }, + ), + ], + ), ), - ), - ) + ) : null, - ), + ), onChanged: (newValue) { // parse port hack try { @@ -1098,7 +1084,8 @@ class _NodeFormState extends ConsumerState { } else { enableSSLCheckbox = true; } - } else if (widget.coin is LibMoneroWallet || widget.coin is LibSalviumWallet) { + } else if (widget.coin is LibMoneroWallet || + widget.coin is LibSalviumWallet) { if (newValue.startsWith("https://")) { _useSSL = true; } else if (newValue.startsWith("http://")) { @@ -1139,31 +1126,28 @@ class _NodeFormState extends ConsumerState { inputFormatters: [FilteringTextInputFormatter.digitsOnly], keyboardType: TextInputType.number, style: STextStyles.field(context), - decoration: standardInputDecoration( - "Port", - _portFocusNode, - context, - ).copyWith( - suffixIcon: - !shouldBeReadOnly && _portController.text.isNotEmpty + decoration: standardInputDecoration("Port", _portFocusNode, context) + .copyWith( + suffixIcon: + !shouldBeReadOnly && _portController.text.isNotEmpty ? Padding( - padding: const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - children: [ - TextFieldIconButton( - child: const XIcon(), - onTap: () async { - _portController.text = ""; - _updateState(); - }, - ), - ], + padding: const EdgeInsets.only(right: 0), + child: UnconstrainedBox( + child: Row( + children: [ + TextFieldIconButton( + child: const XIcon(), + onTap: () async { + _portController.text = ""; + _updateState(); + }, + ), + ], + ), ), - ), - ) + ) : null, - ), + ), onChanged: (newValue) { _updateState(); setState(() {}); @@ -1184,31 +1168,32 @@ class _NodeFormState extends ConsumerState { enabled: enableField(_usernameController), focusNode: _usernameFocusNode, style: STextStyles.field(context), - decoration: standardInputDecoration( - "Login (optional)", - _usernameFocusNode, - context, - ).copyWith( - suffixIcon: - !shouldBeReadOnly && _usernameController.text.isNotEmpty + decoration: + standardInputDecoration( + "Login (optional)", + _usernameFocusNode, + context, + ).copyWith( + suffixIcon: + !shouldBeReadOnly && _usernameController.text.isNotEmpty ? Padding( - padding: const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - children: [ - TextFieldIconButton( - child: const XIcon(), - onTap: () async { - _usernameController.text = ""; - _updateState(); - }, - ), - ], + padding: const EdgeInsets.only(right: 0), + child: UnconstrainedBox( + child: Row( + children: [ + TextFieldIconButton( + child: const XIcon(), + onTap: () async { + _usernameController.text = ""; + _updateState(); + }, + ), + ], + ), ), - ), - ) + ) : null, - ), + ), onChanged: (newValue) { _updateState(); setState(() {}); @@ -1230,31 +1215,32 @@ class _NodeFormState extends ConsumerState { obscureText: true, focusNode: _passwordFocusNode, style: STextStyles.field(context), - decoration: standardInputDecoration( - "Password (optional)", - _passwordFocusNode, - context, - ).copyWith( - suffixIcon: - !shouldBeReadOnly && _passwordController.text.isNotEmpty + decoration: + standardInputDecoration( + "Password (optional)", + _passwordFocusNode, + context, + ).copyWith( + suffixIcon: + !shouldBeReadOnly && _passwordController.text.isNotEmpty ? Padding( - padding: const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - children: [ - TextFieldIconButton( - child: const XIcon(), - onTap: () async { - _passwordController.text = ""; - _updateState(); - }, - ), - ], + padding: const EdgeInsets.only(right: 0), + child: UnconstrainedBox( + child: Row( + children: [ + TextFieldIconButton( + child: const XIcon(), + onTap: () async { + _passwordController.text = ""; + _updateState(); + }, + ), + ], + ), ), - ), - ) + ) : null, - ), + ), onChanged: (newValue) { _updateState(); setState(() {}); @@ -1266,15 +1252,14 @@ class _NodeFormState extends ConsumerState { Row( children: [ GestureDetector( - onTap: - !shouldBeReadOnly && enableSSLCheckbox - ? () { - setState(() { - _useSSL = !_useSSL; - }); - _updateState(); - } - : null, + onTap: !shouldBeReadOnly && enableSSLCheckbox + ? () { + setState(() { + _useSSL = !_useSSL; + }); + _updateState(); + } + : null, child: Container( color: Colors.transparent, child: Row( @@ -1283,26 +1268,24 @@ class _NodeFormState extends ConsumerState { width: 20, height: 20, child: Checkbox( - fillColor: - !shouldBeReadOnly && enableSSLCheckbox - ? null - : MaterialStateProperty.all( - Theme.of(context) - .extension()! - .checkboxBGDisabled, - ), + fillColor: !shouldBeReadOnly && enableSSLCheckbox + ? null + : MaterialStateProperty.all( + Theme.of(context) + .extension()! + .checkboxBGDisabled, + ), materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, value: _useSSL, - onChanged: - !shouldBeReadOnly && enableSSLCheckbox - ? (newValue) { - setState(() { - _useSSL = newValue!; - }); - _updateState(); - } - : null, + onChanged: !shouldBeReadOnly && enableSSLCheckbox + ? (newValue) { + setState(() { + _useSSL = newValue!; + }); + _updateState(); + } + : null, ), ), const SizedBox(width: 12), @@ -1320,15 +1303,14 @@ class _NodeFormState extends ConsumerState { Row( children: [ GestureDetector( - onTap: - !widget.readOnly /*&& trustedCheckbox*/ - ? () { - setState(() { - _trusted = !_trusted; - }); - _updateState(); - } - : null, + onTap: !widget.readOnly /*&& trustedCheckbox*/ + ? () { + setState(() { + _trusted = !_trusted; + }); + _updateState(); + } + : null, child: Container( color: Colors.transparent, child: Row( @@ -1337,26 +1319,24 @@ class _NodeFormState extends ConsumerState { width: 20, height: 20, child: Checkbox( - fillColor: - !widget.readOnly - ? null - : MaterialStateProperty.all( - Theme.of(context) - .extension()! - .checkboxBGDisabled, - ), + fillColor: !widget.readOnly + ? null + : MaterialStateProperty.all( + Theme.of(context) + .extension()! + .checkboxBGDisabled, + ), materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, value: _trusted, - onChanged: - !widget.readOnly - ? (newValue) { - setState(() { - _trusted = newValue!; - }); - _updateState(); - } - : null, + onChanged: !widget.readOnly + ? (newValue) { + setState(() { + _trusted = newValue!; + }); + _updateState(); + } + : null, ), ), const SizedBox(width: 12), @@ -1373,9 +1353,7 @@ class _NodeFormState extends ConsumerState { if (widget.coin is! CryptonoteCurrency && widget.coin is! Epiccash && widget.coin is! Mimblewimblecoin) - const SizedBox( - height: 8, - ), + const SizedBox(height: 8), if (widget.coin is! CryptonoteCurrency && widget.coin is! Epiccash && widget.coin is! Mimblewimblecoin) @@ -1509,25 +1487,23 @@ class _NodeFormState extends ConsumerState { width: 20, height: 20, child: Checkbox( - fillColor: - !widget.readOnly - ? null - : MaterialStateProperty.all( - Theme.of( - context, - ).extension()!.checkboxBGDisabled, - ), + fillColor: !widget.readOnly + ? null + : MaterialStateProperty.all( + Theme.of( + context, + ).extension()!.checkboxBGDisabled, + ), materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, value: _forceNoTor, - onChanged: - !widget.readOnly - ? (newValue) { - setState(() { - _forceNoTor = newValue!; - }); - _updateState(); - } - : null, + onChanged: !widget.readOnly + ? (newValue) { + setState(() { + _forceNoTor = newValue!; + }); + _updateState(); + } + : null, ), ), const SizedBox(width: 12), @@ -1564,9 +1540,8 @@ class RadioTextButton extends StatelessWidget { Widget build(BuildContext context) { return ConditionalParent( condition: Util.isDesktop, - builder: - (child) => - MouseRegion(cursor: SystemMouseCursors.click, child: child), + builder: (child) => + MouseRegion(cursor: SystemMouseCursors.click, child: child), child: GestureDetector( onTap: () { if (value != groupValue) { @@ -1583,20 +1558,18 @@ class RadioTextButton extends StatelessWidget { width: 20, height: 20, child: Radio( - activeColor: - Theme.of( - context, - ).extension()!.radioButtonIconEnabled, + activeColor: Theme.of( + context, + ).extension()!.radioButtonIconEnabled, value: value, groupValue: groupValue, - onChanged: - !enabled - ? null - : (_) { - if (value != groupValue) { - onChanged.call(value); - } - }, + onChanged: !enabled + ? null + : (_) { + if (value != groupValue) { + onChanged.call(value); + } + }, ), ), const SizedBox(width: 14), diff --git a/lib/pages/settings_views/global_settings_view/manage_nodes_views/node_details_view.dart b/lib/pages/settings_views/global_settings_view/manage_nodes_views/node_details_view.dart index 481c3906d5..108b7bf53d 100644 --- a/lib/pages/settings_views/global_settings_view/manage_nodes_views/node_details_view.dart +++ b/lib/pages/settings_views/global_settings_view/manage_nodes_views/node_details_view.dart @@ -127,125 +127,113 @@ class _NodeDetailsViewState extends ConsumerState { return ConditionalParent( condition: !isDesktop, - builder: - (child) => Background( - child: Scaffold( - backgroundColor: - Theme.of(context).extension()!.background, - appBar: AppBar( - leading: AppBarBackButton( - onPressed: () async { - if (FocusScope.of(context).hasFocus) { - FocusScope.of(context).unfocus(); - await Future.delayed( - const Duration(milliseconds: 75), - ); - } - if (context.mounted) { - Navigator.of(context).pop(); - } - }, - ), - title: Text( - "Node details", - style: STextStyles.navBarTitle(context), - ), - actions: [ - // if (!nodeId.startsWith(DefaultNodes.defaultNodeIdPrefix)) - Padding( - padding: const EdgeInsets.only( - top: 10, - bottom: 10, - right: 10, - ), - child: AspectRatio( - aspectRatio: 1, - child: AppBarIconButton( - key: const Key("nodeDetailsEditNodeAppBarButtonKey"), - size: 36, - shadows: const [], - color: - Theme.of( - context, - ).extension()!.background, - icon: SvgPicture.asset( - Assets.svg.pencil, - color: - Theme.of( - context, - ).extension()!.accentColorDark, - width: 20, - height: 20, - ), - onPressed: () { - Navigator.of(context).pushNamed( - AddEditNodeView.routeName, - arguments: Tuple4( - AddEditNodeViewType.edit, - coin, - nodeId, - popRouteName, - ), - ); - }, - ), + builder: (child) => Background( + child: Scaffold( + backgroundColor: Theme.of( + context, + ).extension()!.background, + appBar: AppBar( + leading: AppBarBackButton( + onPressed: () async { + if (FocusScope.of(context).hasFocus) { + FocusScope.of(context).unfocus(); + await Future.delayed(const Duration(milliseconds: 75)); + } + if (context.mounted) { + Navigator.of(context).pop(); + } + }, + ), + title: Text( + "Node details", + style: STextStyles.navBarTitle(context), + ), + actions: [ + // if (!nodeId.startsWith(DefaultNodes.defaultNodeIdPrefix)) + Padding( + padding: const EdgeInsets.only(top: 10, bottom: 10, right: 10), + child: AspectRatio( + aspectRatio: 1, + child: AppBarIconButton( + key: const Key("nodeDetailsEditNodeAppBarButtonKey"), + size: 36, + shadows: const [], + color: Theme.of( + context, + ).extension()!.background, + icon: SvgPicture.asset( + Assets.svg.pencil, + color: Theme.of( + context, + ).extension()!.accentColorDark, + width: 20, + height: 20, ), - ), - ], - ), - body: SafeArea( - child: Padding( - padding: const EdgeInsets.only(top: 12, left: 12, right: 12), - child: LayoutBuilder( - builder: (context, constraints) { - return SingleChildScrollView( - child: Padding( - padding: const EdgeInsets.all(4), - child: ConstrainedBox( - constraints: BoxConstraints( - minHeight: constraints.maxHeight - 8, - ), - child: IntrinsicHeight(child: child), - ), + onPressed: () { + Navigator.of(context).pushNamed( + AddEditNodeView.routeName, + arguments: Tuple4( + AddEditNodeViewType.edit, + coin, + nodeId, + popRouteName, ), ); }, ), ), ), + ], + ), + body: SafeArea( + child: Padding( + padding: const EdgeInsets.only(top: 12, left: 12, right: 12), + child: LayoutBuilder( + builder: (context, constraints) { + return SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(4), + child: ConstrainedBox( + constraints: BoxConstraints( + minHeight: constraints.maxHeight - 8, + ), + child: IntrinsicHeight(child: child), + ), + ), + ); + }, + ), ), ), + ), + ), child: ConditionalParent( condition: isDesktop, - builder: - (child) => DesktopDialog( - maxWidth: 580, - maxHeight: double.infinity, - child: Column( - mainAxisSize: MainAxisSize.min, + builder: (child) => DesktopDialog( + maxWidth: 580, + maxHeight: double.infinity, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Row( children: [ - Row( - children: [ - const SizedBox(width: 8), - const AppBarBackButton(iconSize: 24, size: 40), - Text( - "Node details", - style: STextStyles.desktopH3(context), - ), - ], - ), - Padding( - padding: const EdgeInsets.only( - left: 32, - right: 32, - top: 16, - bottom: 32, - ), - child: child, - ), + const SizedBox(width: 8), + const AppBarBackButton(iconSize: 24, size: 40), + Text("Node details", style: STextStyles.desktopH3(context)), ], ), - ), + Padding( + padding: const EdgeInsets.only( + left: 32, + right: 32, + top: 16, + bottom: 32, + ), + child: child, + ), + ], + ), + ), child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ @@ -260,28 +248,27 @@ class _NodeDetailsViewState extends ConsumerState { if (isDesktop && canDelete) SizedBox( height: 56, - child: - _desktopReadOnly - ? null - : Row( - children: [ - Expanded( - child: DeleteButton( - label: "Delete node", - desktopMed: true, - onPressed: () async { - Navigator.of(context).pop(); + child: _desktopReadOnly + ? null + : Row( + children: [ + Expanded( + child: DeleteButton( + label: "Delete node", + desktopMed: true, + onPressed: () async { + Navigator.of(context).pop(); - await ref - .read(nodeServiceChangeNotifierProvider) - .delete(node!.id, true); - }, - ), + await ref + .read(nodeServiceChangeNotifierProvider) + .delete(node!.id, true); + }, ), - const SizedBox(width: 16), - const Spacer(), - ], - ), + ), + const SizedBox(width: 16), + const Spacer(), + ], + ), ), if (isDesktop && !_desktopReadOnly && canDelete) const SizedBox(height: 45), @@ -292,10 +279,9 @@ class _NodeDetailsViewState extends ConsumerState { label: "Test connection", buttonHeight: isDesktop ? ButtonHeight.l : null, onPressed: () async { - final node = - ref - .read(nodeServiceChangeNotifierProvider) - .getNodeById(id: nodeId)!; + final node = ref + .read(nodeServiceChangeNotifierProvider) + .getNodeById(id: nodeId)!; final TorPlainNetworkOption netOption; if (ref.read(nodeFormDataProvider).netOption != null) { @@ -307,17 +293,16 @@ class _NodeDetailsViewState extends ConsumerState { ); } - final nodeFormData = - NodeFormData() - ..useSSL = node.useSSL - ..trusted = node.trusted - ..name = node.name - ..host = node.host - ..login = node.loginName - ..port = node.port - ..isFailover = node.isFailover - ..netOption = netOption - ..forceNoTor = node.forceNoTor; + final nodeFormData = NodeFormData() + ..useSSL = node.useSSL + ..trusted = node.trusted + ..name = node.name + ..host = node.host + ..login = node.loginName + ..port = node.port + ..isFailover = node.isFailover + ..netOption = netOption + ..forceNoTor = node.forceNoTor; nodeFormData.password = await node.getPassword( ref.read(secureStoreProvider), ); @@ -359,52 +344,54 @@ class _NodeDetailsViewState extends ConsumerState { if (isDesktop) Expanded( child: - // !nodeId.startsWith(DefaultNodes.defaultNodeIdPrefix) - // ? - PrimaryButton( - label: _desktopReadOnly ? "Edit" : "Save", - buttonHeight: ButtonHeight.l, - onPressed: () async { - final shouldSave = _desktopReadOnly == false; - setState(() { - _desktopReadOnly = !_desktopReadOnly; - }); - - if (shouldSave) { - final editedNode = node!.copyWith( - host: ref.read(nodeFormDataProvider).host, - port: ref.read(nodeFormDataProvider).port, - name: ref.read(nodeFormDataProvider).name, - useSSL: ref.read(nodeFormDataProvider).useSSL, - trusted: ref.read(nodeFormDataProvider).trusted, - loginName: ref.read(nodeFormDataProvider).login, - isFailover: - ref.read(nodeFormDataProvider).isFailover, - torEnabled: - ref.read(nodeFormDataProvider).netOption == - TorPlainNetworkOption.tor || - ref.read(nodeFormDataProvider).netOption == - TorPlainNetworkOption.both, - clearnetEnabled: - ref.read(nodeFormDataProvider).netOption == - TorPlainNetworkOption.clear || - ref.read(nodeFormDataProvider).netOption == - TorPlainNetworkOption.both, - forceNoTor: - ref.read(nodeFormDataProvider).forceNoTor, - ); + // !nodeId.startsWith(DefaultNodes.defaultNodeIdPrefix) + // ? + PrimaryButton( + label: _desktopReadOnly ? "Edit" : "Save", + buttonHeight: ButtonHeight.l, + onPressed: () async { + final shouldSave = _desktopReadOnly == false; + setState(() { + _desktopReadOnly = !_desktopReadOnly; + }); - await ref - .read(nodeServiceChangeNotifierProvider) - .save( - editedNode, - ref.read(nodeFormDataProvider).password, - true, + if (shouldSave) { + final editedNode = node!.copyWith( + host: ref.read(nodeFormDataProvider).host, + port: ref.read(nodeFormDataProvider).port, + name: ref.read(nodeFormDataProvider).name, + useSSL: ref.read(nodeFormDataProvider).useSSL, + trusted: ref.read(nodeFormDataProvider).trusted, + loginName: ref.read(nodeFormDataProvider).login, + isFailover: ref + .read(nodeFormDataProvider) + .isFailover, + torEnabled: + ref.read(nodeFormDataProvider).netOption == + TorPlainNetworkOption.tor || + ref.read(nodeFormDataProvider).netOption == + TorPlainNetworkOption.both, + clearnetEnabled: + ref.read(nodeFormDataProvider).netOption == + TorPlainNetworkOption.clear || + ref.read(nodeFormDataProvider).netOption == + TorPlainNetworkOption.both, + forceNoTor: ref + .read(nodeFormDataProvider) + .forceNoTor, ); - await _notifyWalletsOfUpdatedNode(); - } - }, - ), + + await ref + .read(nodeServiceChangeNotifierProvider) + .save( + editedNode, + ref.read(nodeFormDataProvider).password, + true, + ); + await _notifyWalletsOfUpdatedNode(); + } + }, + ), // : Container() ), ], diff --git a/lib/pages/settings_views/global_settings_view/security_views/security_view.dart b/lib/pages/settings_views/global_settings_view/security_views/security_view.dart index 76331b0bb4..0486db53ae 100644 --- a/lib/pages/settings_views/global_settings_view/security_views/security_view.dart +++ b/lib/pages/settings_views/global_settings_view/security_views/security_view.dart @@ -61,54 +61,50 @@ class _SecurityViewState extends ConsumerState { Future _createDuressPin() async { final result = await showDialog( context: context, - builder: - (context) => StackDialogBase( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, + builder: (context) => StackDialogBase( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text("Enable duress PIN", style: STextStyles.pageTitleH2(context)), + const SizedBox(height: 8), + Row( children: [ - Text( - "Enable duress PIN", - style: STextStyles.pageTitleH2(context), + Flexible( + child: Text( + "When unlocking the app with a duress PIN, only wallets" + " marked as visible in duress mode will be loaded and" + " shown. Be aware that providing a duress PIN instead" + " of your real PIN to law enforcement, border agents," + " or other authorities may be considered deception and" + " could carry legal consequences depending on your" + " jurisdiction. Use with care and according to your" + " threat model.", + style: STextStyles.smallMed14(context), + ), ), - const SizedBox(height: 8), - Row( - children: [ - Flexible( - child: Text( - "When unlocking the app with a duress PIN, only wallets" - " marked as visible in duress mode will be loaded and" - " shown. Be aware that providing a duress PIN instead" - " of your real PIN to law enforcement, border agents," - " or other authorities may be considered deception and" - " could carry legal consequences depending on your" - " jurisdiction. Use with care and according to your" - " threat model.", - style: STextStyles.smallMed14(context), - ), - ), - ], + ], + ), + const SizedBox(height: 20), + Row( + children: [ + Expanded( + child: SecondaryButton( + label: "Cancel", + onPressed: () => Navigator.of(context).pop(false), + ), ), - const SizedBox(height: 20), - Row( - children: [ - Expanded( - child: SecondaryButton( - label: "Cancel", - onPressed: () => Navigator.of(context).pop(false), - ), - ), - const SizedBox(width: 8), - Expanded( - child: PrimaryButton( - label: "Ok", - onPressed: () => Navigator.of(context).pop(true), - ), - ), - ], + const SizedBox(width: 8), + Expanded( + child: PrimaryButton( + label: "Ok", + onPressed: () => Navigator.of(context).pop(true), + ), ), ], ), - ), + ], + ), + ), ); if (result == true && mounted) { @@ -116,14 +112,13 @@ class _SecurityViewState extends ConsumerState { context, RouteGenerator.getRoute( shouldUseMaterialRoute: RouteGenerator.useMaterialPageRoute, - builder: - (_) => const LockscreenView( - showBackButton: true, - routeOnSuccess: CreateDuressPinView.routeName, - biometricsCancelButtonString: "CANCEL", - biometricsLocalizedReason: "Authenticate to create duress PIN", - biometricsAuthenticationTitle: "Create duress PIN", - ), + builder: (_) => const LockscreenView( + showBackButton: true, + routeOnSuccess: CreateDuressPinView.routeName, + biometricsCancelButtonString: "CANCEL", + biometricsLocalizedReason: "Authenticate to create duress PIN", + biometricsAuthenticationTitle: "Create duress PIN", + ), settings: const RouteSettings(name: "/createDuressPinLockscreen"), ), ); @@ -133,66 +128,62 @@ class _SecurityViewState extends ConsumerState { Future _deleteDuressPin() async { await showDialog( context: context, - builder: - (context) => StackDialogBase( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, + builder: (context) => StackDialogBase( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text("Disable duress PIN", style: STextStyles.pageTitleH2(context)), + const SizedBox(height: 8), + Row( children: [ - Text( - "Disable duress PIN", - style: STextStyles.pageTitleH2(context), - ), - const SizedBox(height: 8), - Row( - children: [ - Flexible( - child: Text( - "Your duress pin will be deleted. " - "You will be asked to create a PIN when you enable this again. " - "Are you sure you want to continue?", + Flexible( + child: Text( + "Your duress pin will be deleted. " + "You will be asked to create a PIN when you enable this again. " + "Are you sure you want to continue?", - style: STextStyles.smallMed14(context), - ), - ), - ], + style: STextStyles.smallMed14(context), + ), ), - const SizedBox(height: 20), - Row( - children: [ - Expanded( - child: SecondaryButton( - label: "Cancel", - onPressed: Navigator.of(context).pop, - ), - ), - const SizedBox(width: 8), - Expanded( - child: PrimaryButton( - label: "Ok", - onPressed: () async { - try { - await ref - .read(secureStoreProvider) - .delete(key: kDuressPinKey); - } catch (e, s) { - Logging.instance.f( - "dpin delete failed!!", - error: e, - stackTrace: s, - ); - } + ], + ), + const SizedBox(height: 20), + Row( + children: [ + Expanded( + child: SecondaryButton( + label: "Cancel", + onPressed: Navigator.of(context).pop, + ), + ), + const SizedBox(width: 8), + Expanded( + child: PrimaryButton( + label: "Ok", + onPressed: () async { + try { + await ref + .read(secureStoreProvider) + .delete(key: kDuressPinKey); + } catch (e, s) { + Logging.instance.f( + "dpin delete failed!!", + error: e, + stackTrace: s, + ); + } - if (context.mounted) { - Navigator.of(context).pop(); - } - }, - ), - ), - ], + if (context.mounted) { + Navigator.of(context).pop(); + } + }, + ), ), ], ), - ), + ], + ), + ), ); ref.read(prefsChangeNotifierProvider).hasDuressPin = false; @@ -235,15 +226,14 @@ class _SecurityViewState extends ConsumerState { RouteGenerator.getRoute( shouldUseMaterialRoute: RouteGenerator.useMaterialPageRoute, - builder: - (_) => const LockscreenView( - showBackButton: true, - routeOnSuccess: ChangePinView.routeName, - biometricsCancelButtonString: "CANCEL", - biometricsLocalizedReason: - "Authenticate to change PIN", - biometricsAuthenticationTitle: "Change PIN", - ), + builder: (_) => const LockscreenView( + showBackButton: true, + routeOnSuccess: ChangePinView.routeName, + biometricsCancelButtonString: "CANCEL", + biometricsLocalizedReason: + "Authenticate to change PIN", + biometricsAuthenticationTitle: "Change PIN", + ), settings: const RouteSettings( name: "/changepinlockscreen", ), @@ -312,8 +302,9 @@ class _SecurityViewState extends ConsumerState { ), onValueChanged: (newValue) { ref - .read(prefsChangeNotifierProvider) - .useBiometrics = newValue; + .read(prefsChangeNotifierProvider) + .useBiometrics = + newValue; }, ), ), @@ -358,8 +349,9 @@ class _SecurityViewState extends ConsumerState { ), onValueChanged: (newValue) { ref - .read(prefsChangeNotifierProvider) - .randomizePIN = newValue; + .read(prefsChangeNotifierProvider) + .randomizePIN = + newValue; }, ), ), @@ -405,8 +397,9 @@ class _SecurityViewState extends ConsumerState { ), onValueChanged: (newValue) { ref - .read(prefsChangeNotifierProvider) - .autoPin = newValue; + .read(prefsChangeNotifierProvider) + .autoPin = + newValue; }, ), ), @@ -508,8 +501,9 @@ class _SecurityViewState extends ConsumerState { ), onChanged: (newValue) { ref - .read(prefsChangeNotifierProvider) - .biometricsDuress = newValue; + .read(prefsChangeNotifierProvider) + .biometricsDuress = + newValue; }, ), ), @@ -536,17 +530,15 @@ class _SecurityViewState extends ConsumerState { RouteGenerator.getRoute( shouldUseMaterialRoute: RouteGenerator.useMaterialPageRoute, - builder: - (_) => const LockscreenView( - showBackButton: true, - routeOnSuccess: - AutoLockTimeoutSettingsView.routeName, - biometricsCancelButtonString: "CANCEL", - biometricsLocalizedReason: - "Authenticate to change auto lock settings", - biometricsAuthenticationTitle: - "Auto lock settings", - ), + builder: (_) => const LockscreenView( + showBackButton: true, + routeOnSuccess: + AutoLockTimeoutSettingsView.routeName, + biometricsCancelButtonString: "CANCEL", + biometricsLocalizedReason: + "Authenticate to change auto lock settings", + biometricsAuthenticationTitle: "Auto lock settings", + ), settings: const RouteSettings( name: "/autoLockTimeoutSettingsLockScreen", ), diff --git a/lib/pages/settings_views/global_settings_view/stack_backup_views/auto_backup_view.dart b/lib/pages/settings_views/global_settings_view/stack_backup_views/auto_backup_view.dart index 57785f5f43..849f10be09 100644 --- a/lib/pages/settings_views/global_settings_view/stack_backup_views/auto_backup_view.dart +++ b/lib/pages/settings_views/global_settings_view/stack_backup_views/auto_backup_view.dart @@ -101,8 +101,9 @@ class _AutoBackupViewState extends ConsumerState { child: Text( "Back", style: STextStyles.button(context).copyWith( - color: - Theme.of(context).extension()!.accentColorDark, + color: Theme.of( + context, + ).extension()!.accentColorDark, ), ), onPressed: () { @@ -155,8 +156,9 @@ class _AutoBackupViewState extends ConsumerState { child: Text( "Back", style: STextStyles.button(context).copyWith( - color: - Theme.of(context).extension()!.accentColorDark, + color: Theme.of( + context, + ).extension()!.accentColorDark, ), ), onPressed: () { @@ -313,14 +315,13 @@ class _AutoBackupViewState extends ConsumerState { TextSpan( text: "stackwallet.com.", style: STextStyles.richLink(context), - recognizer: - TapGestureRecognizer() - ..onTap = () { - launchUrl( - Uri.parse("https://stackwallet.com"), - mode: LaunchMode.externalApplication, - ); - }, + recognizer: TapGestureRecognizer() + ..onTap = () { + launchUrl( + Uri.parse("https://stackwallet.com"), + mode: LaunchMode.externalApplication, + ); + }, ), ], ), diff --git a/lib/pages/settings_views/global_settings_view/stack_backup_views/create_auto_backup_view.dart b/lib/pages/settings_views/global_settings_view/stack_backup_views/create_auto_backup_view.dart index 5616ccd9d2..d19a0d409f 100644 --- a/lib/pages/settings_views/global_settings_view/stack_backup_views/create_auto_backup_view.dart +++ b/lib/pages/settings_views/global_settings_view/stack_backup_views/create_auto_backup_view.dart @@ -155,34 +155,32 @@ class _EnableAutoBackupViewState extends ConsumerState { TextField( autocorrect: Util.isDesktop ? false : true, enableSuggestions: Util.isDesktop ? false : true, - onTap: - Platform.isAndroid || Platform.isIOS - ? null - : () async { - try { - await stackFileSystem - .prepareStorage(); - - if (mounted) { - await stackFileSystem.pickDir( - context, - ); - } - - if (mounted) { - setState(() { - fileLocationController.text = - stackFileSystem.dirPath ?? ""; - }); - } - } catch (e, s) { - Logging.instance.e( - "$e\n$s", - error: e, - stackTrace: s, + onTap: Platform.isAndroid || Platform.isIOS + ? null + : () async { + try { + await stackFileSystem.prepareStorage(); + + if (mounted) { + await stackFileSystem.pickDir( + context, ); } - }, + + if (mounted) { + setState(() { + fileLocationController.text = + stackFileSystem.dirPath ?? ""; + }); + } + } catch (e, s) { + Logging.instance.e( + "$e\n$s", + error: e, + stackTrace: s, + ); + } + }, controller: fileLocationController, style: STextStyles.field(context), decoration: InputDecoration( @@ -194,10 +192,9 @@ class _EnableAutoBackupViewState extends ConsumerState { const SizedBox(width: 16), SvgPicture.asset( Assets.svg.folder, - color: - Theme.of(context) - .extension()! - .textDark3, + color: Theme.of( + context, + ).extension()!.textDark3, width: 16, height: 16, ), @@ -232,41 +229,41 @@ class _EnableAutoBackupViewState extends ConsumerState { obscureText: hidePassword, enableSuggestions: false, autocorrect: false, - decoration: standardInputDecoration( - "Create passphrase", - passwordFocusNode, - context, - ).copyWith( - suffixIcon: UnconstrainedBox( - child: Row( - children: [ - const SizedBox(width: 16), - GestureDetector( - key: const Key( - "createBackupPasswordFieldShowPasswordButtonKey", - ), - onTap: () async { - setState(() { - hidePassword = !hidePassword; - }); - }, - child: SvgPicture.asset( - hidePassword - ? Assets.svg.eye - : Assets.svg.eyeSlash, - color: - Theme.of(context) + decoration: + standardInputDecoration( + "Create passphrase", + passwordFocusNode, + context, + ).copyWith( + suffixIcon: UnconstrainedBox( + child: Row( + children: [ + const SizedBox(width: 16), + GestureDetector( + key: const Key( + "createBackupPasswordFieldShowPasswordButtonKey", + ), + onTap: () async { + setState(() { + hidePassword = !hidePassword; + }); + }, + child: SvgPicture.asset( + hidePassword + ? Assets.svg.eye + : Assets.svg.eyeSlash, + color: Theme.of(context) .extension()! .textDark3, - width: 16, - height: 16, - ), + width: 16, + height: 16, + ), + ), + const SizedBox(width: 12), + ], ), - const SizedBox(width: 12), - ], + ), ), - ), - ), onChanged: (newValue) { if (newValue.isEmpty) { setState(() { @@ -317,13 +314,12 @@ class _EnableAutoBackupViewState extends ConsumerState { right: 12, top: passwordFeedback.isNotEmpty ? 4 : 0, ), - child: - passwordFeedback.isNotEmpty - ? Text( - passwordFeedback, - style: STextStyles.infoSmall(context), - ) - : null, + child: passwordFeedback.isNotEmpty + ? Text( + passwordFeedback, + style: STextStyles.infoSmall(context), + ) + : null, ), if (passwordFocusNode.hasFocus || passwordRepeatFocusNode.hasFocus || @@ -339,26 +335,23 @@ class _EnableAutoBackupViewState extends ConsumerState { width: MediaQuery.of(context).size.width - 32 - 24, height: 5, - fillColor: - passwordStrength < 0.51 - ? Theme.of(context) - .extension()! - .accentColorRed - : passwordStrength < 1 - ? Theme.of(context) - .extension()! - .accentColorYellow - : Theme.of(context) - .extension()! - .accentColorGreen, - backgroundColor: - Theme.of(context) - .extension()! - .buttonBackSecondary, - percent: - passwordStrength < 0.25 - ? 0.03 - : passwordStrength, + fillColor: passwordStrength < 0.51 + ? Theme.of( + context, + ).extension()!.accentColorRed + : passwordStrength < 1 + ? Theme.of(context) + .extension()! + .accentColorYellow + : Theme.of(context) + .extension()! + .accentColorGreen, + backgroundColor: Theme.of( + context, + ).extension()!.buttonBackSecondary, + percent: passwordStrength < 0.25 + ? 0.03 + : passwordStrength, ), ), const SizedBox(height: 10), @@ -374,41 +367,41 @@ class _EnableAutoBackupViewState extends ConsumerState { obscureText: hidePassword, enableSuggestions: false, autocorrect: false, - decoration: standardInputDecoration( - "Confirm passphrase", - passwordRepeatFocusNode, - context, - ).copyWith( - suffixIcon: UnconstrainedBox( - child: Row( - children: [ - const SizedBox(width: 16), - GestureDetector( - key: const Key( - "createBackupPasswordFieldShowPasswordButtonKey", - ), - onTap: () async { - setState(() { - hidePassword = !hidePassword; - }); - }, - child: SvgPicture.asset( - hidePassword - ? Assets.svg.eye - : Assets.svg.eyeSlash, - color: - Theme.of(context) + decoration: + standardInputDecoration( + "Confirm passphrase", + passwordRepeatFocusNode, + context, + ).copyWith( + suffixIcon: UnconstrainedBox( + child: Row( + children: [ + const SizedBox(width: 16), + GestureDetector( + key: const Key( + "createBackupPasswordFieldShowPasswordButtonKey", + ), + onTap: () async { + setState(() { + hidePassword = !hidePassword; + }); + }, + child: SvgPicture.asset( + hidePassword + ? Assets.svg.eye + : Assets.svg.eyeSlash, + color: Theme.of(context) .extension()! .textDark3, - width: 16, - height: 16, - ), + width: 16, + height: 16, + ), + ), + const SizedBox(width: 12), + ], ), - const SizedBox(width: 12), - ], + ), ), - ), - ), onChanged: (newValue) { setState(() {}); // TODO: ? check if passwords match? @@ -425,17 +418,17 @@ class _EnableAutoBackupViewState extends ConsumerState { children: [ TextField( autocorrect: Util.isDesktop ? false : true, - enableSuggestions: - Util.isDesktop ? false : true, + enableSuggestions: Util.isDesktop + ? false + : true, readOnly: true, textInputAction: TextInputAction.none, ), Positioned.fill( child: RawMaterialButton( - splashColor: - Theme.of( - context, - ).extension()!.highlight, + splashColor: Theme.of( + context, + ).extension()!.highlight, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular( Constants.size.circularBorderRadius, @@ -450,9 +443,8 @@ class _EnableAutoBackupViewState extends ConsumerState { top: Radius.circular(20), ), ), - builder: - (_) => - const BackupFrequencyTypeSelectSheet(), + builder: (_) => + const BackupFrequencyTypeSelectSheet(), ); }, child: Padding( @@ -466,10 +458,11 @@ class _EnableAutoBackupViewState extends ConsumerState { Text( Format.prettyFrequencyType( ref.watch( - prefsChangeNotifierProvider.select( - (value) => - value.backupFrequencyType, - ), + prefsChangeNotifierProvider + .select( + (value) => value + .backupFrequencyType, + ), ), ), style: STextStyles.itemSubtitle12( @@ -482,10 +475,9 @@ class _EnableAutoBackupViewState extends ConsumerState { ), child: SvgPicture.asset( Assets.svg.chevronDown, - color: - Theme.of(context) - .extension()! - .textSubtitle2, + color: Theme.of(context) + .extension()! + .textSubtitle2, width: 12, height: 6, ), @@ -500,207 +492,208 @@ class _EnableAutoBackupViewState extends ConsumerState { const Spacer(), const SizedBox(height: 10), TextButton( - style: - shouldEnableCreate - ? Theme.of(context) - .extension()! - .getPrimaryEnabledButtonStyle(context) - : Theme.of(context) - .extension()! - .getPrimaryDisabledButtonStyle(context), - onPressed: - !shouldEnableCreate - ? null - : () async { - final String pathToSave = - fileLocationController.text; - final String passphrase = - passwordController.text; - final String repeatPassphrase = - passwordRepeatController.text; - - if (pathToSave.isEmpty) { - showFloatingFlushBar( - type: FlushBarType.warning, - message: "Directory not chosen", - context: context, - ); - return; - } - if (!(await Directory( - pathToSave, - ).exists())) { - showFloatingFlushBar( - type: FlushBarType.warning, - message: "Directory does not exist", - context: context, - ); - return; - } - if (passphrase.isEmpty) { - showFloatingFlushBar( - type: FlushBarType.warning, - message: "A passphrase is required", - context: context, - ); - return; - } - if (passphrase != repeatPassphrase) { - showFloatingFlushBar( - type: FlushBarType.warning, - message: "Passphrase does not match", - context: context, - ); - return; - } - - showDialog( + style: shouldEnableCreate + ? Theme.of(context) + .extension()! + .getPrimaryEnabledButtonStyle(context) + : Theme.of(context) + .extension()! + .getPrimaryDisabledButtonStyle(context), + onPressed: !shouldEnableCreate + ? null + : () async { + final String pathToSave = + fileLocationController.text; + final String passphrase = + passwordController.text; + final String repeatPassphrase = + passwordRepeatController.text; + + if (pathToSave.isEmpty) { + showFloatingFlushBar( + type: FlushBarType.warning, + message: "Directory not chosen", context: context, - barrierDismissible: false, - builder: - (_) => const StackDialog( - title: - "Encrypting initial backup", - message: - "This shouldn't take long", - ), ); - - // make sure the dialog is able to be displayed for at least some time - final fut = Future.delayed( - const Duration(milliseconds: 300), + return; + } + if (!(await Directory( + pathToSave, + ).exists())) { + showFloatingFlushBar( + type: FlushBarType.warning, + message: "Directory does not exist", + context: context, + ); + return; + } + if (passphrase.isEmpty) { + showFloatingFlushBar( + type: FlushBarType.warning, + message: "A passphrase is required", + context: context, + ); + return; + } + if (passphrase != repeatPassphrase) { + showFloatingFlushBar( + type: FlushBarType.warning, + message: "Passphrase does not match", + context: context, ); + return; + } - String adkString; - int adkVersion; - try { - final adk = await compute( - generateAdk, - passphrase, - ); - adkString = Format.uint8listToString( - adk.item2, - ); - adkVersion = adk.item1; - } on Exception catch (e, s) { - final String err = - getErrorMessageFromSWBException(e); - Logging.instance.e( - "$err\n$s", - error: e, - stackTrace: s, - ); - // pop encryption progress dialog - Navigator.of(context).pop(); - showFloatingFlushBar( - type: FlushBarType.warning, - message: err, - context: context, - ); - return; - } catch (e, s) { - Logging.instance.e( - "", - error: e, - stackTrace: s, - ); - // pop encryption progress dialog - Navigator.of(context).pop(); - showFloatingFlushBar( - type: FlushBarType.warning, - message: "$e", - context: context, - ); - return; - } + showDialog( + context: context, + barrierDismissible: false, + builder: (_) => const StackDialog( + title: "Encrypting initial backup", + message: "This shouldn't take long", + ), + ); + + // make sure the dialog is able to be displayed for at least some time + final fut = Future.delayed( + const Duration(milliseconds: 300), + ); - await secureStore.write( - key: "auto_adk_string", - value: adkString, + String adkString; + int adkVersion; + try { + final adk = await compute( + generateAdk, + passphrase, + ); + adkString = Format.uint8listToString( + adk.item2, + ); + adkVersion = adk.item1; + } on Exception catch (e, s) { + final String err = + getErrorMessageFromSWBException(e); + Logging.instance.e( + "$err\n$s", + error: e, + stackTrace: s, + ); + // pop encryption progress dialog + Navigator.of(context).pop(); + showFloatingFlushBar( + type: FlushBarType.warning, + message: err, + context: context, ); - await secureStore.write( - key: "auto_adk_version_string", - value: adkVersion.toString(), + return; + } catch (e, s) { + Logging.instance.e( + "", + error: e, + stackTrace: s, ); + // pop encryption progress dialog + Navigator.of(context).pop(); + showFloatingFlushBar( + type: FlushBarType.warning, + message: "$e", + context: context, + ); + return; + } - final DateTime now = DateTime.now(); - final String fileToSave = - createAutoBackupFilename( - pathToSave, - now, - ); + await secureStore.write( + key: "auto_adk_string", + value: adkString, + ); + await secureStore.write( + key: "auto_adk_version_string", + value: adkVersion.toString(), + ); - final backup = await SWB - .createStackWalletJSON( - secureStorage: secureStore, - ); + final DateTime now = DateTime.now(); + final String fileToSave = + createAutoBackupFilename( + pathToSave, + now, + ); - final bool result = await SWB - .encryptStackWalletWithADK( - fileToSave, - adkString, - jsonEncode(backup), - adkVersion, - ); + final backup = await SWB + .createStackWalletJSON( + secureStorage: secureStore, + ); - // this future should already be complete unless there was an error encrypting - await Future.wait([fut]); - - if (mounted) { - // pop encryption progress dialog - Navigator.of(context).pop(); - - if (result) { - ref - .read(prefsChangeNotifierProvider) - .autoBackupLocation = pathToSave; - ref - .read(prefsChangeNotifierProvider) - .lastAutoBackup = now; - - ref - .read(prefsChangeNotifierProvider) - .isAutoBackupEnabled = true; - - await showDialog( - context: context, - barrierDismissible: false, - builder: - (_) => - Platform.isAndroid - ? StackOkDialog( - title: - "${AppConfig.prefix} Auto Backup enabled and saved to:", - message: fileToSave, - ) - : const StackOkDialog( - title: - "${AppConfig.prefix} Auto Backup enabled!", - ), - ); - if (mounted) { - passwordController.text = ""; - passwordRepeatController.text = ""; - - Navigator.of(context).popUntil( - ModalRoute.withName( - AutoBackupView.routeName, - ), - ); - } - } else { - await showDialog( - context: context, - barrierDismissible: false, - builder: - (_) => const StackOkDialog( + final bool result = await SWB + .encryptStackWalletWithADK( + fileToSave, + adkString, + jsonEncode(backup), + adkVersion, + ); + + // this future should already be complete unless there was an error encrypting + await Future.wait([fut]); + + if (mounted) { + // pop encryption progress dialog + Navigator.of(context).pop(); + + if (result) { + ref + .read( + prefsChangeNotifierProvider, + ) + .autoBackupLocation = + pathToSave; + ref + .read( + prefsChangeNotifierProvider, + ) + .lastAutoBackup = + now; + + ref + .read( + prefsChangeNotifierProvider, + ) + .isAutoBackupEnabled = + true; + + await showDialog( + context: context, + barrierDismissible: false, + builder: (_) => Platform.isAndroid + ? StackOkDialog( title: - "Failed to enable Auto Backup", + "${AppConfig.prefix} Auto Backup enabled and saved to:", + message: fileToSave, + ) + : const StackOkDialog( + title: + "${AppConfig.prefix} Auto Backup enabled!", ), + ); + if (mounted) { + passwordController.text = ""; + passwordRepeatController.text = ""; + + Navigator.of(context).popUntil( + ModalRoute.withName( + AutoBackupView.routeName, + ), ); } + } else { + await showDialog( + context: context, + barrierDismissible: false, + builder: (_) => const StackOkDialog( + title: + "Failed to enable Auto Backup", + ), + ); } - }, + } + }, child: Text( "Enable Auto Backup", style: STextStyles.button(context), diff --git a/lib/pages/settings_views/global_settings_view/stack_backup_views/create_backup_view.dart b/lib/pages/settings_views/global_settings_view/stack_backup_views/create_backup_view.dart index a04f0de247..57a8017733 100644 --- a/lib/pages/settings_views/global_settings_view/stack_backup_views/create_backup_view.dart +++ b/lib/pages/settings_views/global_settings_view/stack_backup_views/create_backup_view.dart @@ -117,8 +117,9 @@ class _RestoreFromFileViewState extends State { builder: (child) { return Background( child: Scaffold( - backgroundColor: - Theme.of(context).extension()!.background, + backgroundColor: Theme.of( + context, + ).extension()!.background, appBar: AppBar( leading: AppBarBackButton( onPressed: () async { @@ -168,12 +169,12 @@ class _RestoreFromFileViewState extends State { padding: const EdgeInsets.only(bottom: 10), child: Text( "Choose file location", - style: STextStyles.desktopTextExtraExtraSmall( - context, - ).copyWith( - color: - Theme.of(context).extension()!.textDark3, - ), + style: STextStyles.desktopTextExtraExtraSmall(context) + .copyWith( + color: Theme.of( + context, + ).extension()!.textDark3, + ), ), ), child, @@ -191,31 +192,26 @@ class _RestoreFromFileViewState extends State { child: TextField( autocorrect: Util.isDesktop ? false : true, enableSuggestions: Util.isDesktop ? false : true, - onTap: - Platform.isAndroid || Platform.isIOS - ? null - : () async { - try { - await stackFileSystem.prepareStorage(); - - if (mounted) { - await stackFileSystem.pickDir(context); - } + onTap: Platform.isAndroid || Platform.isIOS + ? null + : () async { + try { + await stackFileSystem.prepareStorage(); - if (mounted) { - setState(() { - fileLocationController.text = - stackFileSystem.dirPath ?? ""; - }); - } - } catch (e, s) { - Logging.instance.e( - "", - error: e, - stackTrace: s, - ); + if (mounted) { + await stackFileSystem.pickDir(context); } - }, + + if (mounted) { + setState(() { + fileLocationController.text = + stackFileSystem.dirPath ?? ""; + }); + } + } catch (e, s) { + Logging.instance.e("", error: e, stackTrace: s); + } + }, controller: fileLocationController, style: STextStyles.field(context), decoration: InputDecoration( @@ -227,10 +223,9 @@ class _RestoreFromFileViewState extends State { const SizedBox(width: 16), SvgPicture.asset( Assets.svg.folder, - color: - Theme.of( - context, - ).extension()!.textDark3, + color: Theme.of( + context, + ).extension()!.textDark3, width: 16, height: 16, ), @@ -263,12 +258,12 @@ class _RestoreFromFileViewState extends State { padding: const EdgeInsets.only(bottom: 10.0), child: Text( "Create a passphrase", - style: STextStyles.desktopTextExtraExtraSmall( - context, - ).copyWith( - color: - Theme.of(context).extension()!.textDark3, - ), + style: STextStyles.desktopTextExtraExtraSmall(context) + .copyWith( + color: Theme.of( + context, + ).extension()!.textDark3, + ), textAlign: TextAlign.left, ), ), @@ -284,41 +279,44 @@ class _RestoreFromFileViewState extends State { obscureText: hidePassword, enableSuggestions: false, autocorrect: false, - decoration: standardInputDecoration( - "Create passphrase", - passwordFocusNode, - context, - ).copyWith( - labelStyle: - isDesktop ? STextStyles.fieldLabel(context) : null, - suffixIcon: UnconstrainedBox( - child: Row( - children: [ - const SizedBox(width: 16), - GestureDetector( - key: const Key( - "createBackupPasswordFieldShowPasswordButtonKey", - ), - onTap: () async { - setState(() { - hidePassword = !hidePassword; - }); - }, - child: SvgPicture.asset( - hidePassword ? Assets.svg.eye : Assets.svg.eyeSlash, - color: - Theme.of( + decoration: + standardInputDecoration( + "Create passphrase", + passwordFocusNode, + context, + ).copyWith( + labelStyle: isDesktop + ? STextStyles.fieldLabel(context) + : null, + suffixIcon: UnconstrainedBox( + child: Row( + children: [ + const SizedBox(width: 16), + GestureDetector( + key: const Key( + "createBackupPasswordFieldShowPasswordButtonKey", + ), + onTap: () async { + setState(() { + hidePassword = !hidePassword; + }); + }, + child: SvgPicture.asset( + hidePassword + ? Assets.svg.eye + : Assets.svg.eyeSlash, + color: Theme.of( context, ).extension()!.textDark3, - width: 16, - height: 16, - ), + width: 16, + height: 16, + ), + ), + const SizedBox(width: 12), + ], ), - const SizedBox(width: 12), - ], + ), ), - ), - ), onChanged: (newValue) { if (newValue.isEmpty) { setState(() { @@ -365,13 +363,12 @@ class _RestoreFromFileViewState extends State { right: 12, top: passwordFeedback.isNotEmpty ? 4 : 0, ), - child: - passwordFeedback.isNotEmpty - ? Text( - passwordFeedback, - style: STextStyles.infoSmall(context), - ) - : null, + child: passwordFeedback.isNotEmpty + ? Text( + passwordFeedback, + style: STextStyles.infoSmall(context), + ) + : null, ), if (passwordFocusNode.hasFocus || passwordRepeatFocusNode.hasFocus || @@ -382,22 +379,20 @@ class _RestoreFromFileViewState extends State { key: const Key("createStackBackUpProgressBar"), width: MediaQuery.of(context).size.width - 32 - 24, height: 5, - fillColor: - passwordStrength < 0.51 - ? Theme.of( - context, - ).extension()!.accentColorRed - : passwordStrength < 1 - ? Theme.of( - context, - ).extension()!.accentColorYellow - : Theme.of( - context, - ).extension()!.accentColorGreen, - backgroundColor: - Theme.of( - context, - ).extension()!.buttonBackSecondary, + fillColor: passwordStrength < 0.51 + ? Theme.of( + context, + ).extension()!.accentColorRed + : passwordStrength < 1 + ? Theme.of( + context, + ).extension()!.accentColorYellow + : Theme.of( + context, + ).extension()!.accentColorGreen, + backgroundColor: Theme.of( + context, + ).extension()!.buttonBackSecondary, percent: passwordStrength < 0.25 ? 0.03 : passwordStrength, ), ), @@ -414,41 +409,44 @@ class _RestoreFromFileViewState extends State { obscureText: hidePassword, enableSuggestions: false, autocorrect: false, - decoration: standardInputDecoration( - "Confirm passphrase", - passwordRepeatFocusNode, - context, - ).copyWith( - labelStyle: - isDesktop ? STextStyles.fieldLabel(context) : null, - suffixIcon: UnconstrainedBox( - child: Row( - children: [ - const SizedBox(width: 16), - GestureDetector( - key: const Key( - "createBackupPasswordFieldShowPasswordButtonKey", - ), - onTap: () async { - setState(() { - hidePassword = !hidePassword; - }); - }, - child: SvgPicture.asset( - hidePassword ? Assets.svg.eye : Assets.svg.eyeSlash, - color: - Theme.of( + decoration: + standardInputDecoration( + "Confirm passphrase", + passwordRepeatFocusNode, + context, + ).copyWith( + labelStyle: isDesktop + ? STextStyles.fieldLabel(context) + : null, + suffixIcon: UnconstrainedBox( + child: Row( + children: [ + const SizedBox(width: 16), + GestureDetector( + key: const Key( + "createBackupPasswordFieldShowPasswordButtonKey", + ), + onTap: () async { + setState(() { + hidePassword = !hidePassword; + }); + }, + child: SvgPicture.asset( + hidePassword + ? Assets.svg.eye + : Assets.svg.eyeSlash, + color: Theme.of( context, ).extension()!.textDark3, - width: 16, - height: 16, - ), + width: 16, + height: 16, + ), + ), + const SizedBox(width: 12), + ], ), - const SizedBox(width: 12), - ], + ), ), - ), - ), onChanged: (newValue) { setState(() {}); // TODO: ? check if passwords match? @@ -459,20 +457,18 @@ class _RestoreFromFileViewState extends State { if (!isDesktop) const Spacer(), !isDesktop ? Consumer( - builder: (context, ref, __) { - return TextButton( - style: - shouldEnableCreate - ? Theme.of(context) + builder: (context, ref, __) { + return TextButton( + style: shouldEnableCreate + ? Theme.of(context) .extension()! .getPrimaryEnabledButtonStyle(context) - : Theme.of(context) + : Theme.of(context) .extension()! .getPrimaryDisabledButtonStyle(context), - onPressed: - !shouldEnableCreate - ? null - : () async { + onPressed: !shouldEnableCreate + ? null + : () async { final String pathToSave = fileLocationController.text; final String passphrase = @@ -525,11 +521,10 @@ class _RestoreFromFileViewState extends State { showDialog( context: context, barrierDismissible: false, - builder: - (_) => const StackDialog( - title: "Encrypting backup", - message: "This shouldn't take long", - ), + builder: (_) => const StackDialog( + title: "Encrypting backup", + message: "This shouldn't take long", + ), ), ); // make sure the dialog is able to be displayed for at least 1 second @@ -560,17 +555,15 @@ class _RestoreFromFileViewState extends State { await showDialog( context: context, barrierDismissible: false, - builder: - (_) => - Platform.isAndroid - ? StackOkDialog( - title: "Backup saved to:", - message: fileToSave, - ) - : const StackOkDialog( - title: - "Backup creation succeeded", - ), + builder: (_) => Platform.isAndroid + ? StackOkDialog( + title: "Backup saved to:", + message: fileToSave, + ) + : const StackOkDialog( + title: + "Backup creation succeeded", + ), ); passwordController.text = ""; passwordRepeatController.text = ""; @@ -579,34 +572,32 @@ class _RestoreFromFileViewState extends State { await showDialog( context: context, barrierDismissible: false, - builder: - (_) => const StackOkDialog( - title: "Backup creation failed", - ), + builder: (_) => const StackOkDialog( + title: "Backup creation failed", + ), ); } } }, - child: Text( - "Create backup", - style: STextStyles.button(context), - ), - ); - }, - ) + child: Text( + "Create backup", + style: STextStyles.button(context), + ), + ); + }, + ) : Row( - children: [ - Consumer( - builder: (context, ref, __) { - return PrimaryButton( - width: 183, - buttonHeight: ButtonHeight.m, - label: "Create backup", - enabled: shouldEnableCreate, - onPressed: - !shouldEnableCreate - ? null - : () async { + children: [ + Consumer( + builder: (context, ref, __) { + return PrimaryButton( + width: 183, + buttonHeight: ButtonHeight.m, + label: "Create backup", + enabled: shouldEnableCreate, + onPressed: !shouldEnableCreate + ? null + : () async { final String pathToSave = fileLocationController.text; final String passphrase = @@ -831,26 +822,25 @@ class _RestoreFromFileViewState extends State { await showDialog( context: context, barrierDismissible: false, - builder: - (_) => const StackOkDialog( - title: "Backup creation failed", - ), + builder: (_) => const StackOkDialog( + title: "Backup creation failed", + ), ); } } }, - ); - }, - ), - const SizedBox(width: 16), - SecondaryButton( - width: 183, - buttonHeight: ButtonHeight.m, - label: "Cancel", - onPressed: () {}, - ), - ], - ), + ); + }, + ), + const SizedBox(width: 16), + SecondaryButton( + width: 183, + buttonHeight: ButtonHeight.m, + label: "Cancel", + onPressed: () {}, + ), + ], + ), ], ), ), diff --git a/lib/pages/settings_views/global_settings_view/stack_backup_views/edit_auto_backup_view.dart b/lib/pages/settings_views/global_settings_view/stack_backup_views/edit_auto_backup_view.dart index 5ad7eab467..53455e8146 100644 --- a/lib/pages/settings_views/global_settings_view/stack_backup_views/edit_auto_backup_view.dart +++ b/lib/pages/settings_views/global_settings_view/stack_backup_views/edit_auto_backup_view.dart @@ -140,11 +140,10 @@ class _EditAutoBackupViewState extends ConsumerState { showDialog( context: context, barrierDismissible: false, - builder: - (_) => const StackDialog( - title: "Updating Auto Backup", - message: "This shouldn't take long", - ), + builder: (_) => const StackDialog( + title: "Updating Auto Backup", + message: "This shouldn't take long", + ), ), ); // make sure the dialog is able to be displayed for at least 1 second @@ -219,16 +218,14 @@ class _EditAutoBackupViewState extends ConsumerState { await showDialog( context: context, barrierDismissible: false, - builder: - (_) => - Platform.isAndroid - ? StackOkDialog( - title: "${AppConfig.prefix} Auto Backup saved to:", - message: fileToSave, - ) - : const StackOkDialog( - title: "${AppConfig.prefix} Auto Backup saved", - ), + builder: (_) => Platform.isAndroid + ? StackOkDialog( + title: "${AppConfig.prefix} Auto Backup saved to:", + message: fileToSave, + ) + : const StackOkDialog( + title: "${AppConfig.prefix} Auto Backup saved", + ), ); if (mounted) { passwordController.text = ""; @@ -244,8 +241,8 @@ class _EditAutoBackupViewState extends ConsumerState { await showDialog( context: context, barrierDismissible: false, - builder: - (_) => const StackOkDialog(title: "Failed to update Auto Backup"), + builder: (_) => + const StackOkDialog(title: "Failed to update Auto Backup"), ); } } @@ -262,8 +259,9 @@ class _EditAutoBackupViewState extends ConsumerState { fileLocationController.text = ref.read(prefsChangeNotifierProvider).autoBackupLocation ?? ""; - _currentDropDownValue = - ref.read(prefsChangeNotifierProvider).backupFrequencyType; + _currentDropDownValue = ref + .read(prefsChangeNotifierProvider) + .backupFrequencyType; passwordFocusNode = FocusNode(); passwordRepeatFocusNode = FocusNode(); @@ -302,44 +300,45 @@ class _EditAutoBackupViewState extends ConsumerState { return ConditionalParent( condition: !isDesktop, - builder: - (child) => Background( - child: Scaffold( - backgroundColor: - Theme.of(context).extension()!.background, - appBar: AppBar( - leading: AppBarBackButton( - onPressed: () { - Navigator.of(context).pop(); - }, - ), - title: Text( - "Edit Auto Backup", - style: STextStyles.navBarTitle(context), - ), - ), - body: SafeArea( - child: Padding( - padding: const EdgeInsets.all(16), - child: LayoutBuilder( - builder: (context, constraints) { - return SingleChildScrollView( - child: ConstrainedBox( - constraints: BoxConstraints( - minHeight: constraints.maxHeight, - ), - child: IntrinsicHeight(child: child), - ), - ); - }, - ), - ), + builder: (child) => Background( + child: Scaffold( + backgroundColor: Theme.of( + context, + ).extension()!.background, + appBar: AppBar( + leading: AppBarBackButton( + onPressed: () { + Navigator.of(context).pop(); + }, + ), + title: Text( + "Edit Auto Backup", + style: STextStyles.navBarTitle(context), + ), + ), + body: SafeArea( + child: Padding( + padding: const EdgeInsets.all(16), + child: LayoutBuilder( + builder: (context, constraints) { + return SingleChildScrollView( + child: ConstrainedBox( + constraints: BoxConstraints( + minHeight: constraints.maxHeight, + ), + child: IntrinsicHeight(child: child), + ), + ); + }, ), ), ), + ), + ), child: Column( - crossAxisAlignment: - isDesktop ? CrossAxisAlignment.start : CrossAxisAlignment.stretch, + crossAxisAlignment: isDesktop + ? CrossAxisAlignment.start + : CrossAxisAlignment.stretch, children: [ if (!isDesktop) Text("Create your backup", style: STextStyles.smallMed12(context)), @@ -356,27 +355,26 @@ class _EditAutoBackupViewState extends ConsumerState { TextField( autocorrect: Util.isDesktop ? false : true, enableSuggestions: Util.isDesktop ? false : true, - onTap: - Platform.isAndroid || Platform.isIOS - ? null - : () async { - try { - await stackFileSystem.prepareStorage(); - - if (mounted) { - await stackFileSystem.pickDir(context); - } - - if (mounted) { - setState(() { - fileLocationController.text = - stackFileSystem.dirPath ?? ""; - }); - } - } catch (e, s) { - Logging.instance.e("$e\n$s", error: e, stackTrace: s); + onTap: Platform.isAndroid || Platform.isIOS + ? null + : () async { + try { + await stackFileSystem.prepareStorage(); + + if (mounted) { + await stackFileSystem.pickDir(context); + } + + if (mounted) { + setState(() { + fileLocationController.text = + stackFileSystem.dirPath ?? ""; + }); } - }, + } catch (e, s) { + Logging.instance.e("$e\n$s", error: e, stackTrace: s); + } + }, controller: fileLocationController, style: STextStyles.field(context), decoration: InputDecoration( @@ -388,10 +386,9 @@ class _EditAutoBackupViewState extends ConsumerState { const SizedBox(width: 16), SvgPicture.asset( Assets.svg.folder, - color: - Theme.of( - context, - ).extension()!.textDark3, + color: Theme.of( + context, + ).extension()!.textDark3, width: 16, height: 16, ), @@ -433,40 +430,44 @@ class _EditAutoBackupViewState extends ConsumerState { obscureText: hidePassword, enableSuggestions: false, autocorrect: false, - decoration: standardInputDecoration( - "Create passphrase", - passwordFocusNode, - context, - ).copyWith( - labelStyle: isDesktop ? STextStyles.fieldLabel(context) : null, - suffixIcon: UnconstrainedBox( - child: Row( - children: [ - const SizedBox(width: 16), - GestureDetector( - key: const Key( - "createBackupPasswordFieldShowPasswordButtonKey", - ), - onTap: () async { - setState(() { - hidePassword = !hidePassword; - }); - }, - child: SvgPicture.asset( - hidePassword ? Assets.svg.eye : Assets.svg.eyeSlash, - color: - Theme.of( + decoration: + standardInputDecoration( + "Create passphrase", + passwordFocusNode, + context, + ).copyWith( + labelStyle: isDesktop + ? STextStyles.fieldLabel(context) + : null, + suffixIcon: UnconstrainedBox( + child: Row( + children: [ + const SizedBox(width: 16), + GestureDetector( + key: const Key( + "createBackupPasswordFieldShowPasswordButtonKey", + ), + onTap: () async { + setState(() { + hidePassword = !hidePassword; + }); + }, + child: SvgPicture.asset( + hidePassword + ? Assets.svg.eye + : Assets.svg.eyeSlash, + color: Theme.of( context, ).extension()!.textDark3, - width: 16, - height: 16, - ), + width: 16, + height: 16, + ), + ), + const SizedBox(width: 12), + ], ), - const SizedBox(width: 12), - ], + ), ), - ), - ), onChanged: (newValue) { if (newValue.isEmpty) { setState(() { @@ -513,13 +514,12 @@ class _EditAutoBackupViewState extends ConsumerState { right: 12, top: passwordFeedback.isNotEmpty ? 4 : 0, ), - child: - passwordFeedback.isNotEmpty - ? Text( - passwordFeedback, - style: STextStyles.infoSmall(context), - ) - : null, + child: passwordFeedback.isNotEmpty + ? Text( + passwordFeedback, + style: STextStyles.infoSmall(context), + ) + : null, ), if (passwordFocusNode.hasFocus || passwordRepeatFocusNode.hasFocus || @@ -528,27 +528,22 @@ class _EditAutoBackupViewState extends ConsumerState { padding: const EdgeInsets.only(left: 12, right: 12, top: 10), child: ProgressBar( key: const Key("createStackBackUpProgressBar"), - width: - isDesktop - ? 492 - : MediaQuery.of(context).size.width - 32 - 24, + width: isDesktop + ? 492 + : MediaQuery.of(context).size.width - 32 - 24, height: 5, - fillColor: - passwordStrength < 0.51 - ? Theme.of( - context, - ).extension()!.accentColorRed - : passwordStrength < 1 - ? Theme.of( - context, - ).extension()!.accentColorYellow - : Theme.of( - context, - ).extension()!.accentColorGreen, - backgroundColor: - Theme.of( - context, - ).extension()!.buttonBackSecondary, + fillColor: passwordStrength < 0.51 + ? Theme.of(context).extension()!.accentColorRed + : passwordStrength < 1 + ? Theme.of( + context, + ).extension()!.accentColorYellow + : Theme.of( + context, + ).extension()!.accentColorGreen, + backgroundColor: Theme.of( + context, + ).extension()!.buttonBackSecondary, percent: passwordStrength < 0.25 ? 0.03 : passwordStrength, ), ), @@ -565,40 +560,44 @@ class _EditAutoBackupViewState extends ConsumerState { obscureText: hidePassword, enableSuggestions: false, autocorrect: false, - decoration: standardInputDecoration( - "Confirm passphrase", - passwordRepeatFocusNode, - context, - ).copyWith( - labelStyle: isDesktop ? STextStyles.fieldLabel(context) : null, - suffixIcon: UnconstrainedBox( - child: Row( - children: [ - const SizedBox(width: 16), - GestureDetector( - key: const Key( - "createBackupPasswordFieldShowPasswordButtonKey", - ), - onTap: () async { - setState(() { - hidePassword = !hidePassword; - }); - }, - child: SvgPicture.asset( - hidePassword ? Assets.svg.eye : Assets.svg.eyeSlash, - color: - Theme.of( + decoration: + standardInputDecoration( + "Confirm passphrase", + passwordRepeatFocusNode, + context, + ).copyWith( + labelStyle: isDesktop + ? STextStyles.fieldLabel(context) + : null, + suffixIcon: UnconstrainedBox( + child: Row( + children: [ + const SizedBox(width: 16), + GestureDetector( + key: const Key( + "createBackupPasswordFieldShowPasswordButtonKey", + ), + onTap: () async { + setState(() { + hidePassword = !hidePassword; + }); + }, + child: SvgPicture.asset( + hidePassword + ? Assets.svg.eye + : Assets.svg.eyeSlash, + color: Theme.of( context, ).extension()!.textDark3, - width: 16, - height: 16, - ), + width: 16, + height: 16, + ), + ), + const SizedBox(width: 12), + ], ), - const SizedBox(width: 12), - ], + ), ), - ), - ), onChanged: (newValue) { setState(() {}); // TODO: ? check if passwords match? @@ -608,13 +607,13 @@ class _EditAutoBackupViewState extends ConsumerState { SizedBox(height: isDesktop ? 24 : 32), Text( "Auto Backup frequency", - style: - isDesktop - ? STextStyles.desktopTextExtraSmall(context).copyWith( - color: - Theme.of(context).extension()!.textDark3, - ) - : STextStyles.smallMed12(context), + style: isDesktop + ? STextStyles.desktopTextExtraSmall(context).copyWith( + color: Theme.of( + context, + ).extension()!.textDark3, + ) + : STextStyles.smallMed12(context), ), const SizedBox(height: 10), if (isDesktop) @@ -653,8 +652,9 @@ class _EditAutoBackupViewState extends ConsumerState { .backupFrequencyType != value) { ref - .read(prefsChangeNotifierProvider) - .backupFrequencyType = value; + .read(prefsChangeNotifierProvider) + .backupFrequencyType = + value; } setState(() { _currentDropDownValue = value; @@ -666,18 +666,18 @@ class _EditAutoBackupViewState extends ConsumerState { Assets.svg.chevronDown, width: 10, height: 5, - color: - Theme.of(context).extension()!.textDark3, + color: Theme.of( + context, + ).extension()!.textDark3, ), ), dropdownStyleData: DropdownStyleData( offset: const Offset(0, -10), elevation: 0, decoration: BoxDecoration( - color: - Theme.of( - context, - ).extension()!.textFieldDefaultBG, + color: Theme.of( + context, + ).extension()!.textFieldDefaultBG, borderRadius: BorderRadius.circular( Constants.size.circularBorderRadius, ), @@ -699,8 +699,9 @@ class _EditAutoBackupViewState extends ConsumerState { ), Positioned.fill( child: RawMaterialButton( - splashColor: - Theme.of(context).extension()!.highlight, + splashColor: Theme.of( + context, + ).extension()!.highlight, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular( Constants.size.circularBorderRadius, @@ -737,10 +738,9 @@ class _EditAutoBackupViewState extends ConsumerState { padding: const EdgeInsets.only(right: 4.0), child: SvgPicture.asset( Assets.svg.chevronDown, - color: - Theme.of( - context, - ).extension()!.textSubtitle2, + color: Theme.of( + context, + ).extension()!.textSubtitle2, width: 12, height: 6, ), @@ -777,14 +777,13 @@ class _EditAutoBackupViewState extends ConsumerState { ), if (!isDesktop) TextButton( - style: - shouldEnableCreate - ? Theme.of(context) - .extension()! - .getPrimaryEnabledButtonStyle(context) - : Theme.of(context) - .extension()! - .getPrimaryDisabledButtonStyle(context), + style: shouldEnableCreate + ? Theme.of(context) + .extension()! + .getPrimaryEnabledButtonStyle(context) + : Theme.of(context) + .extension()! + .getPrimaryDisabledButtonStyle(context), onPressed: !shouldEnableCreate ? null : onSavePressed, child: Text("Save", style: STextStyles.button(context)), ), diff --git a/lib/pages/settings_views/global_settings_view/stack_backup_views/helpers/swb_file_system.dart b/lib/pages/settings_views/global_settings_view/stack_backup_views/helpers/swb_file_system.dart index 9954cb0b7f..fa773bb6b0 100644 --- a/lib/pages/settings_views/global_settings_view/stack_backup_views/helpers/swb_file_system.dart +++ b/lib/pages/settings_views/global_settings_view/stack_backup_views/helpers/swb_file_system.dart @@ -80,10 +80,9 @@ class SWBFileSystem { if (Platform.isIOS) { chosenPath = startPath?.path; } else { - final String path = - Platform.isWindows - ? startPath!.path.replaceAll("/", "\\") - : startPath!.path; + final String path = Platform.isWindows + ? startPath!.path.replaceAll("/", "\\") + : startPath!.path; chosenPath = await FilePicker.platform.getDirectoryPath( dialogTitle: "Choose Backup location", initialDirectory: path, diff --git a/lib/pages/settings_views/global_settings_view/stack_backup_views/restore_from_encrypted_string_view.dart b/lib/pages/settings_views/global_settings_view/stack_backup_views/restore_from_encrypted_string_view.dart index 5aded8ec62..6083a65f58 100644 --- a/lib/pages/settings_views/global_settings_view/stack_backup_views/restore_from_encrypted_string_view.dart +++ b/lib/pages/settings_views/global_settings_view/stack_backup_views/restore_from_encrypted_string_view.dart @@ -73,8 +73,9 @@ class _RestoreFromEncryptedStringViewState onWillPop: _onWillPop, child: Background( child: Scaffold( - backgroundColor: - Theme.of(context).extension()!.background, + backgroundColor: Theme.of( + context, + ).extension()!.background, appBar: AppBar( leading: AppBarBackButton( onPressed: () async { @@ -120,41 +121,41 @@ class _RestoreFromEncryptedStringViewState obscureText: hidePassword, enableSuggestions: false, autocorrect: false, - decoration: standardInputDecoration( - "Enter password", - passwordFocusNode, - context, - ).copyWith( - suffixIcon: UnconstrainedBox( - child: Row( - children: [ - const SizedBox(width: 16), - GestureDetector( - key: const Key( - "restoreFromFilePasswordFieldShowPasswordButtonKey", - ), - onTap: () async { - setState(() { - hidePassword = !hidePassword; - }); - }, - child: SvgPicture.asset( - hidePassword - ? Assets.svg.eye - : Assets.svg.eyeSlash, - color: - Theme.of(context) + decoration: + standardInputDecoration( + "Enter password", + passwordFocusNode, + context, + ).copyWith( + suffixIcon: UnconstrainedBox( + child: Row( + children: [ + const SizedBox(width: 16), + GestureDetector( + key: const Key( + "restoreFromFilePasswordFieldShowPasswordButtonKey", + ), + onTap: () async { + setState(() { + hidePassword = !hidePassword; + }); + }, + child: SvgPicture.asset( + hidePassword + ? Assets.svg.eye + : Assets.svg.eyeSlash, + color: Theme.of(context) .extension()! .textDark3, - width: 16, - height: 16, - ), + width: 16, + height: 16, + ), + ), + const SizedBox(width: 12), + ], ), - const SizedBox(width: 12), - ], + ), ), - ), - ), onChanged: (newValue) { setState(() {}); }, @@ -163,114 +164,105 @@ class _RestoreFromEncryptedStringViewState const SizedBox(height: 16), const Spacer(), TextButton( - style: - passwordController.text.isEmpty - ? Theme.of(context) - .extension()! - .getPrimaryEnabledButtonStyle(context) - : Theme.of(context) - .extension()! - .getPrimaryDisabledButtonStyle( - context, - ), - onPressed: - passwordController.text.isEmpty - ? null - : () async { - final String passphrase = - passwordController.text; + style: passwordController.text.isEmpty + ? Theme.of(context) + .extension()! + .getPrimaryEnabledButtonStyle(context) + : Theme.of(context) + .extension()! + .getPrimaryDisabledButtonStyle(context), + onPressed: passwordController.text.isEmpty + ? null + : () async { + final String passphrase = + passwordController.text; - if (FocusScope.of(context).hasFocus) { - FocusScope.of(context).unfocus(); - await Future.delayed( - const Duration(milliseconds: 75), - ); - } + if (FocusScope.of(context).hasFocus) { + FocusScope.of(context).unfocus(); + await Future.delayed( + const Duration(milliseconds: 75), + ); + } - bool shouldPop = false; - showDialog( - barrierDismissible: false, - context: context, - builder: - (_) => WillPopScope( - onWillPop: () async { - return shouldPop; - }, - child: Column( - crossAxisAlignment: - CrossAxisAlignment - .stretch, - mainAxisAlignment: - MainAxisAlignment.center, - children: [ - Material( - color: Colors.transparent, - child: Center( - child: Text( - "Decrypting ${AppConfig.prefix} backup file", - style: STextStyles.pageTitleH2( - context, - ).copyWith( - color: - Theme.of( - context, - ) - .extension< - StackColors - >()! - .textWhite, - ), + bool shouldPop = false; + showDialog( + barrierDismissible: false, + context: context, + builder: (_) => WillPopScope( + onWillPop: () async { + return shouldPop; + }, + child: Column( + crossAxisAlignment: + CrossAxisAlignment.stretch, + mainAxisAlignment: + MainAxisAlignment.center, + children: [ + Material( + color: Colors.transparent, + child: Center( + child: Text( + "Decrypting ${AppConfig.prefix} backup file", + style: + STextStyles.pageTitleH2( + context, + ).copyWith( + color: + Theme.of(context) + .extension< + StackColors + >()! + .textWhite, ), - ), - ), - const SizedBox(height: 64), - const Center( - child: LoadingIndicator( - width: 100, - ), - ), - ], + ), ), ), - ); - - final String? - jsonString = await compute( - SWB.decryptStackWalletStringWithPassphrase, - Tuple2(widget.encrypted, passphrase), - debugLabel: - "stack wallet decryption compute", - ); + const SizedBox(height: 64), + const Center( + child: LoadingIndicator( + width: 100, + ), + ), + ], + ), + ), + ); - if (mounted) { - // pop LoadingIndicator - shouldPop = true; - Navigator.of(context).pop(); + final String? jsonString = await compute( + SWB.decryptStackWalletStringWithPassphrase, + Tuple2(widget.encrypted, passphrase), + debugLabel: + "stack wallet decryption compute", + ); - passwordController.text = ""; + if (mounted) { + // pop LoadingIndicator + shouldPop = true; + Navigator.of(context).pop(); - if (jsonString == null) { - showFloatingFlushBar( - type: FlushBarType.warning, - message: - "Failed to decrypt backup file", - context: context, - ); - return; - } + passwordController.text = ""; - Navigator.of(context).push( - RouteGenerator.getRoute( - builder: - (_) => - StackRestoreProgressView( - jsonString: jsonString, - fromFile: true, - ), - ), + if (jsonString == null) { + showFloatingFlushBar( + type: FlushBarType.warning, + message: + "Failed to decrypt backup file", + context: context, ); + return; } - }, + + Navigator.of(context).push( + RouteGenerator.getRoute( + builder: (_) => + StackRestoreProgressView( + jsonString: jsonString, + fromFile: true, + ), + ), + ); + } + }, child: Text( "Restore", style: STextStyles.button(context), diff --git a/lib/pages/settings_views/global_settings_view/stack_backup_views/restore_from_file_view.dart b/lib/pages/settings_views/global_settings_view/stack_backup_views/restore_from_file_view.dart index d0ce73db15..ed9b2f795a 100644 --- a/lib/pages/settings_views/global_settings_view/stack_backup_views/restore_from_file_view.dart +++ b/lib/pages/settings_views/global_settings_view/stack_backup_views/restore_from_file_view.dart @@ -89,8 +89,9 @@ class _RestoreFromFileViewState extends ConsumerState { builder: (child) { return Background( child: Scaffold( - backgroundColor: - Theme.of(context).extension()!.background, + backgroundColor: Theme.of( + context, + ).extension()!.background, appBar: AppBar( leading: AppBarBackButton( onPressed: () async { @@ -140,12 +141,12 @@ class _RestoreFromFileViewState extends ConsumerState { padding: const EdgeInsets.only(bottom: 10.0), child: Text( "Choose file location", - style: STextStyles.desktopTextExtraExtraSmall( - context, - ).copyWith( - color: - Theme.of(context).extension()!.textDark3, - ), + style: STextStyles.desktopTextExtraExtraSmall(context) + .copyWith( + color: Theme.of( + context, + ).extension()!.textDark3, + ), textAlign: TextAlign.left, ), ), @@ -187,10 +188,9 @@ class _RestoreFromFileViewState extends ConsumerState { const SizedBox(width: 16), SvgPicture.asset( Assets.svg.folder, - color: - Theme.of( - context, - ).extension()!.textDark3, + color: Theme.of( + context, + ).extension()!.textDark3, width: 16, height: 16, ), @@ -215,12 +215,12 @@ class _RestoreFromFileViewState extends ConsumerState { padding: const EdgeInsets.only(bottom: 10.0), child: Text( "Enter passphrase", - style: STextStyles.desktopTextExtraExtraSmall( - context, - ).copyWith( - color: - Theme.of(context).extension()!.textDark3, - ), + style: STextStyles.desktopTextExtraExtraSmall(context) + .copyWith( + color: Theme.of( + context, + ).extension()!.textDark3, + ), textAlign: TextAlign.left, ), ), @@ -236,41 +236,44 @@ class _RestoreFromFileViewState extends ConsumerState { obscureText: hidePassword, enableSuggestions: false, autocorrect: false, - decoration: standardInputDecoration( - "Enter passphrase", - passwordFocusNode, - context, - ).copyWith( - labelStyle: - isDesktop ? STextStyles.fieldLabel(context) : null, - suffixIcon: UnconstrainedBox( - child: Row( - children: [ - const SizedBox(width: 16), - GestureDetector( - key: const Key( - "restoreFromFilePasswordFieldShowPasswordButtonKey", - ), - onTap: () async { - setState(() { - hidePassword = !hidePassword; - }); - }, - child: SvgPicture.asset( - hidePassword ? Assets.svg.eye : Assets.svg.eyeSlash, - color: - Theme.of( + decoration: + standardInputDecoration( + "Enter passphrase", + passwordFocusNode, + context, + ).copyWith( + labelStyle: isDesktop + ? STextStyles.fieldLabel(context) + : null, + suffixIcon: UnconstrainedBox( + child: Row( + children: [ + const SizedBox(width: 16), + GestureDetector( + key: const Key( + "restoreFromFilePasswordFieldShowPasswordButtonKey", + ), + onTap: () async { + setState(() { + hidePassword = !hidePassword; + }); + }, + child: SvgPicture.asset( + hidePassword + ? Assets.svg.eye + : Assets.svg.eyeSlash, + color: Theme.of( context, ).extension()!.textDark3, - width: 16, - height: 16, - ), + width: 16, + height: 16, + ), + ), + const SizedBox(width: 12), + ], ), - const SizedBox(width: 12), - ], + ), ), - ), - ), onChanged: (newValue) { setState(() {}); }, @@ -280,20 +283,20 @@ class _RestoreFromFileViewState extends ConsumerState { if (!isDesktop) const Spacer(), !isDesktop ? TextButton( - style: - passwordController.text.isEmpty || - fileLocationController.text.isEmpty - ? Theme.of(context) + style: + passwordController.text.isEmpty || + fileLocationController.text.isEmpty + ? Theme.of(context) .extension()! .getPrimaryDisabledButtonStyle(context) - : Theme.of(context) + : Theme.of(context) .extension()! .getPrimaryEnabledButtonStyle(context), - onPressed: - passwordController.text.isEmpty || - fileLocationController.text.isEmpty - ? null - : () async { + onPressed: + passwordController.text.isEmpty || + fileLocationController.text.isEmpty + ? null + : () async { final String fileToRestore = fileLocationController.text; final String passphrase = passwordController.text; @@ -319,42 +322,38 @@ class _RestoreFromFileViewState extends ConsumerState { showDialog( barrierDismissible: false, context: context, - builder: - (_) => WillPopScope( - onWillPop: () async { - return shouldPop; - }, - child: Column( - crossAxisAlignment: - CrossAxisAlignment.stretch, - mainAxisAlignment: - MainAxisAlignment.center, - children: [ - Material( - color: Colors.transparent, - child: Center( - child: Text( - "Decrypting ${AppConfig.prefix} backup file", - style: STextStyles.pageTitleH2( + builder: (_) => WillPopScope( + onWillPop: () async { + return shouldPop; + }, + child: Column( + crossAxisAlignment: + CrossAxisAlignment.stretch, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Material( + color: Colors.transparent, + child: Center( + child: Text( + "Decrypting ${AppConfig.prefix} backup file", + style: + STextStyles.pageTitleH2( context, ).copyWith( - color: - Theme.of(context) - .extension< - StackColors - >()! - .textWhite, + color: Theme.of(context) + .extension()! + .textWhite, ), - ), - ), ), - const SizedBox(height: 64), - const Center( - child: LoadingIndicator(width: 100), - ), - ], + ), ), - ), + const SizedBox(height: 64), + const Center( + child: LoadingIndicator(width: 100), + ), + ], + ), + ), ), ); @@ -382,31 +381,30 @@ class _RestoreFromFileViewState extends ConsumerState { await Navigator.of(context).push( RouteGenerator.getRoute( - builder: - (_) => StackRestoreProgressView( - jsonString: jsonString, - shouldPushToHome: true, - ), + builder: (_) => StackRestoreProgressView( + jsonString: jsonString, + shouldPushToHome: true, + ), ), ); } }, - child: Text("Restore", style: STextStyles.button(context)), - ) + child: Text("Restore", style: STextStyles.button(context)), + ) : Row( - children: [ - PrimaryButton( - width: 183, - buttonHeight: ButtonHeight.m, - label: "Restore", - enabled: - !(passwordController.text.isEmpty || - fileLocationController.text.isEmpty), - onPressed: - passwordController.text.isEmpty || - fileLocationController.text.isEmpty - ? null - : () async { + children: [ + PrimaryButton( + width: 183, + buttonHeight: ButtonHeight.m, + label: "Restore", + enabled: + !(passwordController.text.isEmpty || + fileLocationController.text.isEmpty), + onPressed: + passwordController.text.isEmpty || + fileLocationController.text.isEmpty + ? null + : () async { final String fileToRestore = fileLocationController.text; final String passphrase = @@ -433,45 +431,41 @@ class _RestoreFromFileViewState extends ConsumerState { showDialog( barrierDismissible: false, context: context, - builder: - (_) => WillPopScope( - onWillPop: () async { - return shouldPop; - }, - child: Column( - crossAxisAlignment: - CrossAxisAlignment.stretch, - mainAxisAlignment: - MainAxisAlignment.center, - children: [ - Material( - color: Colors.transparent, - child: Center( - child: Text( - "Decrypting ${AppConfig.prefix} backup file", - style: - STextStyles.pageTitleH2( - context, - ).copyWith( - color: - Theme.of(context) - .extension< - StackColors - >()! - .textWhite, - ), - ), - ), - ), - const SizedBox(height: 64), - const Center( - child: LoadingIndicator( - width: 100, - ), + builder: (_) => WillPopScope( + onWillPop: () async { + return shouldPop; + }, + child: Column( + crossAxisAlignment: + CrossAxisAlignment.stretch, + mainAxisAlignment: + MainAxisAlignment.center, + children: [ + Material( + color: Colors.transparent, + child: Center( + child: Text( + "Decrypting ${AppConfig.prefix} backup file", + style: + STextStyles.pageTitleH2( + context, + ).copyWith( + color: Theme.of(context) + .extension< + StackColors + >()! + .textWhite, + ), ), - ], + ), ), - ), + const SizedBox(height: 64), + const Center( + child: LoadingIndicator(width: 100), + ), + ], + ), + ), ), ); @@ -571,16 +565,16 @@ class _RestoreFromFileViewState extends ConsumerState { ); } }, - ), - const SizedBox(width: 16), - SecondaryButton( - width: 183, - buttonHeight: ButtonHeight.m, - label: "Cancel", - onPressed: () {}, - ), - ], - ), + ), + const SizedBox(width: 16), + SecondaryButton( + width: 183, + buttonHeight: ButtonHeight.m, + label: "Cancel", + onPressed: () {}, + ), + ], + ), ], ), ), diff --git a/lib/pages/settings_views/global_settings_view/stack_backup_views/sub_widgets/restoring_wallet_card.dart b/lib/pages/settings_views/global_settings_view/stack_backup_views/sub_widgets/restoring_wallet_card.dart index f38104ccd7..ad86afdd17 100644 --- a/lib/pages/settings_views/global_settings_view/stack_backup_views/sub_widgets/restoring_wallet_card.dart +++ b/lib/pages/settings_views/global_settings_view/stack_backup_views/sub_widgets/restoring_wallet_card.dart @@ -30,10 +30,7 @@ import '../sub_views/recovery_phrase_view.dart'; import 'restoring_item_card.dart'; class RestoringWalletCard extends ConsumerStatefulWidget { - const RestoringWalletCard({ - super.key, - required this.provider, - }); + const RestoringWalletCard({super.key, required this.provider}); final ChangeNotifierProvider provider; @@ -50,8 +47,9 @@ class _RestoringWalletCardState extends ConsumerState { case StackRestoringStatus.waiting: return SvgPicture.asset( Assets.svg.loader, - color: - Theme.of(context).extension()!.buttonBackSecondary, + color: Theme.of( + context, + ).extension()!.buttonBackSecondary, ); case StackRestoringStatus.restoring: return const LoadingIndicator(); @@ -81,8 +79,9 @@ class _RestoringWalletCardState extends ConsumerState { @override Widget build(BuildContext context) { final coin = ref.watch(provider.select((value) => value.coin)); - final restoringStatus = - ref.watch(provider.select((value) => value.restoringState)); + final restoringStatus = ref.watch( + provider.select((value) => value.restoringState), + ); return !Util.isDesktop ? RestoringItemCard( left: SizedBox( @@ -93,9 +92,7 @@ class _RestoringWalletCardState extends ConsumerState { color: ref.watch(pCoinColor(coin)), child: Center( child: SvgPicture.file( - File( - ref.watch(coinIconProvider(coin)), - ), + File(ref.watch(coinIconProvider(coin))), height: 20, width: 20, ), @@ -106,7 +103,9 @@ class _RestoringWalletCardState extends ConsumerState { ? () async { final wallet = ref.read(provider).wallet!; - ref.read(stackRestoringUIStateProvider).update( + ref + .read(stackRestoringUIStateProvider) + .update( walletId: wallet.walletId, restoringStatus: StackRestoringStatus.restoring, ); @@ -115,10 +114,12 @@ class _RestoringWalletCardState extends ConsumerState { await wallet.recover(isRescan: true); if (mounted) { - final address = - await wallet.getCurrentReceivingAddress(); + final address = await wallet + .getCurrentReceivingAddress(); - ref.read(stackRestoringUIStateProvider).update( + ref + .read(stackRestoringUIStateProvider) + .update( walletId: wallet.walletId, restoringStatus: StackRestoringStatus.success, address: address!.value, @@ -126,7 +127,9 @@ class _RestoringWalletCardState extends ConsumerState { } } catch (_) { if (mounted) { - ref.read(stackRestoringUIStateProvider).update( + ref + .read(stackRestoringUIStateProvider) + .update( walletId: wallet.walletId, restoringStatus: StackRestoringStatus.failed, ); @@ -149,30 +152,27 @@ class _RestoringWalletCardState extends ConsumerState { style: STextStyles.errorSmall(context), ) : ref.watch(provider.select((value) => value.address)) != null - ? Text( - ref.watch(provider.select((value) => value.address))!, - style: STextStyles.infoSmall(context), - ) - : null, + ? Text( + ref.watch(provider.select((value) => value.address))!, + style: STextStyles.infoSmall(context), + ) + : null, button: restoringStatus == StackRestoringStatus.failed ? Container( height: 20, decoration: BoxDecoration( - color: Theme.of(context) - .extension()! - .buttonBackSecondary, - borderRadius: BorderRadius.circular( - 1000, - ), + color: Theme.of( + context, + ).extension()!.buttonBackSecondary, + borderRadius: BorderRadius.circular(1000), ), child: RawMaterialButton( materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - splashColor: - Theme.of(context).extension()!.highlight, + splashColor: Theme.of( + context, + ).extension()!.highlight, shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular( - 1000, - ), + borderRadius: BorderRadius.circular(1000), ), onPressed: () async { final mnemonic = ref.read(provider).mnemonic; @@ -193,9 +193,9 @@ class _RestoringWalletCardState extends ConsumerState { child: Text( "Show recovery phrase", style: STextStyles.infoSmall(context).copyWith( - color: Theme.of(context) - .extension()! - .accentColorDark, + color: Theme.of( + context, + ).extension()!.accentColorDark, ), ), ), @@ -216,11 +216,7 @@ class _RestoringWalletCardState extends ConsumerState { color: ref.watch(pCoinColor(coin)), child: Center( child: SvgPicture.file( - File( - ref.watch( - coinIconProvider(coin), - ), - ), + File(ref.watch(coinIconProvider(coin))), height: 20, width: 20, ), @@ -231,7 +227,9 @@ class _RestoringWalletCardState extends ConsumerState { ? () async { final wallet = ref.read(provider).wallet!; - ref.read(stackRestoringUIStateProvider).update( + ref + .read(stackRestoringUIStateProvider) + .update( walletId: wallet.walletId, restoringStatus: StackRestoringStatus.restoring, ); @@ -264,10 +262,12 @@ class _RestoringWalletCardState extends ConsumerState { await wallet.recover(isRescan: true); if (mounted) { - final address = - await wallet.getCurrentReceivingAddress(); + final address = await wallet + .getCurrentReceivingAddress(); - ref.read(stackRestoringUIStateProvider).update( + ref + .read(stackRestoringUIStateProvider) + .update( walletId: wallet.walletId, restoringStatus: StackRestoringStatus.success, address: address!.value, @@ -275,7 +275,9 @@ class _RestoringWalletCardState extends ConsumerState { } } catch (_) { if (mounted) { - ref.read(stackRestoringUIStateProvider).update( + ref + .read(stackRestoringUIStateProvider) + .update( walletId: wallet.walletId, restoringStatus: StackRestoringStatus.failed, ); @@ -298,31 +300,27 @@ class _RestoringWalletCardState extends ConsumerState { style: STextStyles.errorSmall(context), ) : ref.watch(provider.select((value) => value.address)) != null - ? Text( - ref.watch(provider.select((value) => value.address))!, - style: STextStyles.infoSmall(context), - ) - : null, + ? Text( + ref.watch(provider.select((value) => value.address))!, + style: STextStyles.infoSmall(context), + ) + : null, button: restoringStatus == StackRestoringStatus.failed ? Container( height: 20, decoration: BoxDecoration( - color: Theme.of(context) - .extension()! - .buttonBackSecondary, - borderRadius: BorderRadius.circular( - 1000, - ), + color: Theme.of( + context, + ).extension()!.buttonBackSecondary, + borderRadius: BorderRadius.circular(1000), ), child: RawMaterialButton( materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - splashColor: Theme.of(context) - .extension()! - .highlight, + splashColor: Theme.of( + context, + ).extension()!.highlight, shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular( - 1000, - ), + borderRadius: BorderRadius.circular(1000), ), onPressed: () async { final mnemonic = ref.read(provider).mnemonic; @@ -343,9 +341,9 @@ class _RestoringWalletCardState extends ConsumerState { child: Text( "Show recovery phrase", style: STextStyles.infoSmall(context).copyWith( - color: Theme.of(context) - .extension()! - .accentColorDark, + color: Theme.of( + context, + ).extension()!.accentColorDark, ), ), ), diff --git a/lib/pages/settings_views/sub_widgets/view_only_wallet_data_widget.dart b/lib/pages/settings_views/sub_widgets/view_only_wallet_data_widget.dart index 2659860879..d3e78e93c7 100644 --- a/lib/pages/settings_views/sub_widgets/view_only_wallet_data_widget.dart +++ b/lib/pages/settings_views/sub_widgets/view_only_wallet_data_widget.dart @@ -7,10 +7,7 @@ import '../../../widgets/detail_item.dart'; import '../../wallet_view/transaction_views/transaction_details_view.dart'; class ViewOnlyWalletDataWidget extends StatelessWidget { - const ViewOnlyWalletDataWidget({ - super.key, - required this.data, - }); + const ViewOnlyWalletDataWidget({super.key, required this.data}); final ViewOnlyWalletData data; @@ -18,69 +15,51 @@ class ViewOnlyWalletDataWidget extends StatelessWidget { Widget build(BuildContext context) { return switch (data) { final CryptonoteViewOnlyWalletData e => Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - DetailItem( - title: "Address", - detail: e.address, - button: Util.isDesktop - ? IconCopyButton( - data: e.address, - ) - : SimpleCopyButton( - data: e.address, - ), - ), - const SizedBox( - height: 16, - ), - DetailItem( - title: "Private view key", - detail: e.privateViewKey, - button: Util.isDesktop - ? IconCopyButton( - data: e.privateViewKey, - ) - : SimpleCopyButton( - data: e.privateViewKey, - ), - ), - ], - ), + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + DetailItem( + title: "Address", + detail: e.address, + button: Util.isDesktop + ? IconCopyButton(data: e.address) + : SimpleCopyButton(data: e.address), + ), + const SizedBox(height: 16), + DetailItem( + title: "Private view key", + detail: e.privateViewKey, + button: Util.isDesktop + ? IconCopyButton(data: e.privateViewKey) + : SimpleCopyButton(data: e.privateViewKey), + ), + ], + ), final AddressViewOnlyWalletData e => Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - DetailItem( - title: "Address", - detail: e.address, - button: Util.isDesktop - ? IconCopyButton( - data: e.address, - ) - : SimpleCopyButton( - data: e.address, - ), - ), - ], - ), + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + DetailItem( + title: "Address", + detail: e.address, + button: Util.isDesktop + ? IconCopyButton(data: e.address) + : SimpleCopyButton(data: e.address), + ), + ], + ), final ExtendedKeysViewOnlyWalletData e => Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - ...e.xPubs.map( - (xPub) => DetailItem( - title: xPub.path, - detail: xPub.encoded, - button: Util.isDesktop - ? IconCopyButton( - data: xPub.encoded, - ) - : SimpleCopyButton( - data: xPub.encoded, - ), - ), + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + ...e.xPubs.map( + (xPub) => DetailItem( + title: xPub.path, + detail: xPub.encoded, + button: Util.isDesktop + ? IconCopyButton(data: xPub.encoded) + : SimpleCopyButton(data: xPub.encoded), ), - ], - ), + ), + ], + ), }; } } diff --git a/lib/pages/settings_views/wallet_settings_view/wallet_settings_view.dart b/lib/pages/settings_views/wallet_settings_view/wallet_settings_view.dart index b1b4854511..b92c469fb8 100644 --- a/lib/pages/settings_views/wallet_settings_view/wallet_settings_view.dart +++ b/lib/pages/settings_views/wallet_settings_view/wallet_settings_view.dart @@ -115,8 +115,9 @@ class _WalletSettingsViewState extends ConsumerState { _currentSyncStatus = widget.initialSyncStatus; // _currentNodeStatus = widget.initialNodeStatus; - eventBus = - widget.eventBus != null ? widget.eventBus! : GlobalEventBus.instance; + eventBus = widget.eventBus != null + ? widget.eventBus! + : GlobalEventBus.instance; _syncStatusSubscription = eventBus .on() @@ -296,12 +297,12 @@ class _WalletSettingsViewState extends ConsumerState { keys: results[0]!, prevGen: results[2] == null || - results[3] == null - ? null - : ( - config: results[3]!, - keys: results[2]!, - ), + results[3] == null + ? null + : ( + config: results[3]!, + keys: results[2]!, + ), ); } } else { @@ -312,30 +313,29 @@ class _WalletSettingsViewState extends ConsumerState { .isViewOnly) { // TODO: is something needed here? } else { - mnemonic = - await wallet - .getMnemonicAsWords(); + mnemonic = await wallet + .getMnemonicAsWords(); } } } - KeyDataInterface? keyData; - if (wallet - is ViewOnlyOptionInterface && - wallet.isViewOnly) { - keyData = - await wallet - .getViewOnlyWalletData(); - } else if (wallet - is ExtendedKeysInterface) { - keyData = await wallet.getXPrivs(); - } else if (wallet - is LibMoneroWallet) { - keyData = await wallet.getKeys(); - } else if (wallet - is LibSalviumWallet) { - keyData = await wallet.getKeys(); - } + KeyDataInterface? keyData; + if (wallet + is ViewOnlyOptionInterface && + wallet.isViewOnly) { + keyData = await wallet + .getViewOnlyWalletData(); + } else if (wallet + is ExtendedKeysInterface) { + keyData = await wallet + .getXPrivs(); + } else if (wallet + is LibMoneroWallet) { + keyData = await wallet.getKeys(); + } else if (wallet + is LibSalviumWallet) { + keyData = await wallet.getKeys(); + } if (context.mounted) { if (keyData != null && @@ -348,26 +348,22 @@ class _WalletSettingsViewState extends ConsumerState { shouldUseMaterialRoute: RouteGenerator .useMaterialPageRoute, - builder: - (_) => LockscreenView( - routeOnSuccessArguments: - ( - walletId: - walletId, - keyData: - keyData, - ), - showBackButton: true, - routeOnSuccess: - MobileKeyDataView - .routeName, - biometricsCancelButtonString: - "CANCEL", - biometricsLocalizedReason: - "Authenticate to view recovery data", - biometricsAuthenticationTitle: - "View recovery data", - ), + builder: (_) => LockscreenView( + routeOnSuccessArguments: ( + walletId: walletId, + keyData: keyData, + ), + showBackButton: true, + routeOnSuccess: + MobileKeyDataView + .routeName, + biometricsCancelButtonString: + "CANCEL", + biometricsLocalizedReason: + "Authenticate to view recovery data", + biometricsAuthenticationTitle: + "View recovery data", + ), settings: const RouteSettings( name: "/viewRecoveryDataLockscreen", @@ -381,27 +377,26 @@ class _WalletSettingsViewState extends ConsumerState { shouldUseMaterialRoute: RouteGenerator .useMaterialPageRoute, - builder: - (_) => LockscreenView( - routeOnSuccessArguments: ( - walletId: walletId, - mnemonic: - mnemonic ?? [], - frostWalletData: - frostWalletData, - keyData: keyData, - ), - showBackButton: true, - routeOnSuccess: - WalletBackupView - .routeName, - biometricsCancelButtonString: - "CANCEL", - biometricsLocalizedReason: - "Authenticate to view recovery phrase", - biometricsAuthenticationTitle: - "View recovery phrase", - ), + builder: (_) => LockscreenView( + routeOnSuccessArguments: ( + walletId: walletId, + mnemonic: + mnemonic ?? [], + frostWalletData: + frostWalletData, + keyData: keyData, + ), + showBackButton: true, + routeOnSuccess: + WalletBackupView + .routeName, + biometricsCancelButtonString: + "CANCEL", + biometricsLocalizedReason: + "Authenticate to view recovery phrase", + biometricsAuthenticationTitle: + "View recovery phrase", + ), settings: const RouteSettings( name: "/viewRecoverPhraseLockscreen", @@ -489,23 +484,20 @@ class _WalletSettingsViewState extends ConsumerState { useSafeArea: false, barrierDismissible: true, context: context, - builder: - (_) => StackOkDialog( - title: - "Are you sure you want to clear " - "${coin.prettyName} electrumx cache?", - onOkPressed: (value) { - result = value; - }, - leftButton: SecondaryButton( - label: "Cancel", - onPressed: () { - Navigator.of( - context, - ).pop(); - }, - ), - ), + builder: (_) => StackOkDialog( + title: + "Are you sure you want to clear " + "${coin.prettyName} electrumx cache?", + onOkPressed: (value) { + result = value; + }, + leftButton: SecondaryButton( + label: "Cancel", + onPressed: () { + Navigator.of(context).pop(); + }, + ), + ), ); if (result == "OK" && @@ -578,8 +570,11 @@ class _WalletSettingsViewState extends ConsumerState { // .getWallet(walletId) // .isActiveWallet = false; ref - .read(transactionFilterProvider.state) - .state = null; + .read( + transactionFilterProvider.state, + ) + .state = + null; Navigator.of(context).popUntil( ModalRoute.withName(HomeView.routeName), @@ -591,10 +586,9 @@ class _WalletSettingsViewState extends ConsumerState { child: Text( "Log out", style: STextStyles.button(context).copyWith( - color: - Theme.of(context) - .extension()! - .accentColorDark, + color: Theme.of(context) + .extension()! + .accentColorDark, ), ), ); @@ -666,8 +660,9 @@ class _EpiBoxInfoFormState extends ConsumerState { enableSuggestions: Util.isDesktop ? false : true, controller: portController, decoration: const InputDecoration(hintText: "Port"), - keyboardType: - Util.isDesktop ? null : const TextInputType.numberWithOptions(), + keyboardType: Util.isDesktop + ? null + : const TextInputType.numberWithOptions(), ), const SizedBox(height: 8), TextButton( @@ -696,8 +691,9 @@ class _EpiBoxInfoFormState extends ConsumerState { child: Text( "Save", style: STextStyles.button(context).copyWith( - color: - Theme.of(context).extension()!.accentColorDark, + color: Theme.of( + context, + ).extension()!.accentColorDark, ), ), ), @@ -708,10 +704,7 @@ class _EpiBoxInfoFormState extends ConsumerState { } class MwcMqsInfoForm extends ConsumerStatefulWidget { - const MwcMqsInfoForm({ - super.key, - required this.walletId, - }); + const MwcMqsInfoForm({super.key, required this.walletId}); final String walletId; @@ -756,20 +749,17 @@ class _MwcmqsInfoFormState extends ConsumerState { controller: hostController, decoration: const InputDecoration(hintText: "Host"), ), - const SizedBox( - height: 8, - ), + const SizedBox(height: 8), TextField( autocorrect: Util.isDesktop ? false : true, enableSuggestions: Util.isDesktop ? false : true, controller: portController, decoration: const InputDecoration(hintText: "Port"), - keyboardType: - Util.isDesktop ? null : const TextInputType.numberWithOptions(), - ), - const SizedBox( - height: 8, + keyboardType: Util.isDesktop + ? null + : const TextInputType.numberWithOptions(), ), + const SizedBox(height: 8), TextButton( onPressed: () async { try { @@ -796,8 +786,9 @@ class _MwcmqsInfoFormState extends ConsumerState { child: Text( "Save", style: STextStyles.button(context).copyWith( - color: - Theme.of(context).extension()!.accentColorDark, + color: Theme.of( + context, + ).extension()!.accentColorDark, ), ), ), diff --git a/lib/pages/settings_views/wallet_settings_view/wallet_settings_wallet_settings/wallet_settings_wallet_settings_view.dart b/lib/pages/settings_views/wallet_settings_view/wallet_settings_wallet_settings/wallet_settings_wallet_settings_view.dart index 7792fb2e13..6baac5b352 100644 --- a/lib/pages/settings_views/wallet_settings_view/wallet_settings_wallet_settings/wallet_settings_wallet_settings_view.dart +++ b/lib/pages/settings_views/wallet_settings_view/wallet_settings_wallet_settings/wallet_settings_wallet_settings_view.dart @@ -560,65 +560,59 @@ class _WalletSettingsWalletSettingsViewState showDialog( barrierDismissible: true, context: context, - builder: - (_) => StackDialog( - title: - "Do you want to delete ${ref.read(pWalletName(widget.walletId))}?", - leftButton: TextButton( - style: Theme.of(context) - .extension()! - .getSecondaryEnabledButtonStyle(context), - onPressed: () { - Navigator.pop(context); - }, - child: Text( - "Cancel", - style: STextStyles.button(context).copyWith( - color: - Theme.of(context) - .extension()! - .accentColorDark, - ), - ), + builder: (_) => StackDialog( + title: + "Do you want to delete ${ref.read(pWalletName(widget.walletId))}?", + leftButton: TextButton( + style: Theme.of(context) + .extension()! + .getSecondaryEnabledButtonStyle(context), + onPressed: () { + Navigator.pop(context); + }, + child: Text( + "Cancel", + style: STextStyles.button(context).copyWith( + color: Theme.of( + context, + ).extension()!.accentColorDark, ), - rightButton: TextButton( - style: Theme.of(context) - .extension()! - .getPrimaryEnabledButtonStyle(context), - onPressed: () { - Navigator.pop(context); - Navigator.push( - context, - RouteGenerator.getRoute( - shouldUseMaterialRoute: - RouteGenerator.useMaterialPageRoute, - builder: - (_) => LockscreenView( - routeOnSuccessArguments: - widget.walletId, - showBackButton: true, - routeOnSuccess: - DeleteWalletWarningView - .routeName, - biometricsCancelButtonString: - "CANCEL", - biometricsLocalizedReason: - "Authenticate to delete wallet", - biometricsAuthenticationTitle: - "Delete wallet", - ), - settings: const RouteSettings( - name: "/deleteWalletLockscreen", - ), - ), - ); - }, - child: Text( - "Delete", - style: STextStyles.button(context), + ), + ), + rightButton: TextButton( + style: Theme.of(context) + .extension()! + .getPrimaryEnabledButtonStyle(context), + onPressed: () { + Navigator.pop(context); + Navigator.push( + context, + RouteGenerator.getRoute( + shouldUseMaterialRoute: + RouteGenerator.useMaterialPageRoute, + builder: (_) => LockscreenView( + routeOnSuccessArguments: widget.walletId, + showBackButton: true, + routeOnSuccess: + DeleteWalletWarningView.routeName, + biometricsCancelButtonString: "CANCEL", + biometricsLocalizedReason: + "Authenticate to delete wallet", + biometricsAuthenticationTitle: + "Delete wallet", + ), + settings: const RouteSettings( + name: "/deleteWalletLockscreen", + ), ), - ), + ); + }, + child: Text( + "Delete", + style: STextStyles.button(context), ), + ), + ), ); }, child: Padding( diff --git a/lib/pages/spark_names/confirm_spark_name_transaction_view.dart b/lib/pages/spark_names/confirm_spark_name_transaction_view.dart index 3282b1f1fb..40a820b8ee 100644 --- a/lib/pages/spark_names/confirm_spark_name_transaction_view.dart +++ b/lib/pages/spark_names/confirm_spark_name_transaction_view.dart @@ -219,10 +219,9 @@ class _ConfirmSparkNameTransactionViewState child: Text( "Ok", style: STextStyles.button(context).copyWith( - color: - Theme.of( - context, - ).extension()!.accentColorDark, + color: Theme.of( + context, + ).extension()!.accentColorDark, ), ), onPressed: () { @@ -267,81 +266,76 @@ class _ConfirmSparkNameTransactionViewState return ConditionalParent( condition: !isDesktop, - builder: - (child) => Background( - child: Scaffold( - backgroundColor: - Theme.of(context).extension()!.background, - appBar: AppBar( - backgroundColor: - Theme.of(context).extension()!.background, - leading: AppBarBackButton( - onPressed: () async { - // if (FocusScope.of(context).hasFocus) { - // FocusScope.of(context).unfocus(); - // await Future.delayed(Duration(milliseconds: 50)); - // } - Navigator.of(context).pop(); - }, - ), - title: Text( - "Confirm transaction", - style: STextStyles.navBarTitle(context), - ), - ), - body: SafeArea( - child: LayoutBuilder( - builder: (builderContext, constraints) { - return Padding( - padding: const EdgeInsets.only( - left: 12, - top: 12, - right: 12, + builder: (child) => Background( + child: Scaffold( + backgroundColor: Theme.of( + context, + ).extension()!.background, + appBar: AppBar( + backgroundColor: Theme.of( + context, + ).extension()!.background, + leading: AppBarBackButton( + onPressed: () async { + // if (FocusScope.of(context).hasFocus) { + // FocusScope.of(context).unfocus(); + // await Future.delayed(Duration(milliseconds: 50)); + // } + Navigator.of(context).pop(); + }, + ), + title: Text( + "Confirm transaction", + style: STextStyles.navBarTitle(context), + ), + ), + body: SafeArea( + child: LayoutBuilder( + builder: (builderContext, constraints) { + return Padding( + padding: const EdgeInsets.only(left: 12, top: 12, right: 12), + child: SingleChildScrollView( + child: ConstrainedBox( + constraints: BoxConstraints( + minHeight: constraints.maxHeight - 24, ), - child: SingleChildScrollView( - child: ConstrainedBox( - constraints: BoxConstraints( - minHeight: constraints.maxHeight - 24, - ), - child: IntrinsicHeight( - child: Padding( - padding: const EdgeInsets.all(4), - child: child, - ), - ), + child: IntrinsicHeight( + child: Padding( + padding: const EdgeInsets.all(4), + child: child, ), ), - ); - }, - ), - ), + ), + ), + ); + }, ), ), + ), + ), child: ConditionalParent( condition: isDesktop, - builder: - (child) => Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - mainAxisSize: MainAxisSize.min, + builder: (child) => Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + mainAxisSize: MainAxisSize.min, + children: [ + Row( children: [ - Row( - children: [ - AppBarBackButton( - size: 40, - iconSize: 24, - onPressed: - () => - Navigator.of(context, rootNavigator: true).pop(), - ), - Text( - "Confirm transaction", - style: STextStyles.desktopH3(context), - ), - ], + AppBarBackButton( + size: 40, + iconSize: 24, + onPressed: () => + Navigator.of(context, rootNavigator: true).pop(), + ), + Text( + "Confirm transaction", + style: STextStyles.desktopH3(context), ), - Flexible(child: SingleChildScrollView(child: child)), ], ), + Flexible(child: SingleChildScrollView(child: child)), + ], + ), child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, mainAxisSize: isDesktop ? MainAxisSize.min : MainAxisSize.max, @@ -487,18 +481,18 @@ class _ConfirmSparkNameTransactionViewState ), child: RoundedWhiteContainer( padding: const EdgeInsets.all(0), - borderColor: - Theme.of(context).extension()!.background, + borderColor: Theme.of( + context, + ).extension()!.background, child: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.stretch, children: [ Container( decoration: BoxDecoration( - color: - Theme.of( - context, - ).extension()!.background, + color: Theme.of( + context, + ).extension()!.background, borderRadius: BorderRadius.only( topLeft: Radius.circular( Constants.size.circularBorderRadius, @@ -550,24 +544,23 @@ class _ConfirmSparkNameTransactionViewState const SizedBox(height: 2), SelectableText( widget.txData.sparkNameInfo!.name, - style: STextStyles.desktopTextExtraExtraSmall( - context, - ).copyWith( - color: - Theme.of( + style: + STextStyles.desktopTextExtraExtraSmall( + context, + ).copyWith( + color: Theme.of( context, ).extension()!.textDark, - ), + ), ), ], ), ), Container( height: 1, - color: - Theme.of( - context, - ).extension()!.background, + color: Theme.of( + context, + ).extension()!.background, ), Padding( padding: const EdgeInsets.all(12), @@ -584,14 +577,14 @@ class _ConfirmSparkNameTransactionViewState const SizedBox(height: 2), SelectableText( widget.txData.sparkNameInfo!.additionalInfo, - style: STextStyles.desktopTextExtraExtraSmall( - context, - ).copyWith( - color: - Theme.of( + style: + STextStyles.desktopTextExtraExtraSmall( + context, + ).copyWith( + color: Theme.of( context, ).extension()!.textDark, - ), + ), ), ], ), @@ -609,14 +602,12 @@ class _ConfirmSparkNameTransactionViewState children: [ SelectableText( "Note (optional)", - style: STextStyles.desktopTextExtraSmall( - context, - ).copyWith( - color: - Theme.of(context) + style: STextStyles.desktopTextExtraSmall(context) + .copyWith( + color: Theme.of(context) .extension()! .textFieldActiveSearchIconRight, - ), + ), textAlign: TextAlign.left, ), const SizedBox(height: 10), @@ -631,49 +622,48 @@ class _ConfirmSparkNameTransactionViewState enableSuggestions: isDesktop ? false : true, controller: noteController, focusNode: _noteFocusNode, - style: STextStyles.desktopTextExtraSmall( - context, - ).copyWith( - color: - Theme.of( + style: STextStyles.desktopTextExtraSmall(context) + .copyWith( + color: Theme.of( context, ).extension()!.textFieldActiveText, - height: 1.8, - ), + height: 1.8, + ), onChanged: (_) => setState(() {}), - decoration: standardInputDecoration( - "Type something...", - _noteFocusNode, - context, - desktopMed: true, - ).copyWith( - contentPadding: const EdgeInsets.only( - left: 16, - top: 11, - bottom: 12, - right: 5, - ), - suffixIcon: - noteController.text.isNotEmpty + decoration: + standardInputDecoration( + "Type something...", + _noteFocusNode, + context, + desktopMed: true, + ).copyWith( + contentPadding: const EdgeInsets.only( + left: 16, + top: 11, + bottom: 12, + right: 5, + ), + suffixIcon: noteController.text.isNotEmpty ? Padding( - padding: const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - children: [ - TextFieldIconButton( - child: const XIcon(), - onTap: () async { - setState( - () => noteController.text = "", - ); - }, - ), - ], + padding: const EdgeInsets.only(right: 0), + child: UnconstrainedBox( + child: Row( + children: [ + TextFieldIconButton( + child: const XIcon(), + onTap: () async { + setState( + () => + noteController.text = "", + ); + }, + ), + ], + ), ), - ), - ) + ) : null, - ), + ), ), ), const SizedBox(height: 20), @@ -697,10 +687,9 @@ class _ConfirmSparkNameTransactionViewState horizontal: 16, vertical: 18, ), - color: - Theme.of( - context, - ).extension()!.textFieldDefaultBG, + color: Theme.of( + context, + ).extension()!.textFieldDefaultBG, child: Builder( builder: (context) { final externalCalls = ref.watch( @@ -711,21 +700,17 @@ class _ConfirmSparkNameTransactionViewState String fiatAmount = "N/A"; if (externalCalls) { - final price = - ref - .read(priceAnd24hChangeNotifierProvider) - .getPrice(coin) - ?.value; + final price = ref + .read(priceAnd24hChangeNotifierProvider) + .getPrice(coin) + ?.value; if (price != null && price > Decimal.zero) { fiatAmount = (amountWithoutChange.decimal * price) .toAmount(fractionDigits: 2) .fiatString( - locale: - ref - .read( - localeServiceChangeNotifierProvider, - ) - .locale, + locale: ref + .read(localeServiceChangeNotifierProvider) + .locale, ); } } @@ -770,10 +755,9 @@ class _ConfirmSparkNameTransactionViewState horizontal: 16, vertical: 18, ), - color: - Theme.of( - context, - ).extension()!.textFieldDefaultBG, + color: Theme.of( + context, + ).extension()!.textFieldDefaultBG, child: SelectableText( widget.txData.recipients!.first.address, style: STextStyles.itemSubtitle(context), @@ -797,10 +781,9 @@ class _ConfirmSparkNameTransactionViewState horizontal: 16, vertical: 18, ), - color: - Theme.of( - context, - ).extension()!.textFieldDefaultBG, + color: Theme.of( + context, + ).extension()!.textFieldDefaultBG, child: SelectableText( ref.watch(pAmountFormatter(coin)).format(fee!), style: STextStyles.itemSubtitle(context), @@ -827,10 +810,9 @@ class _ConfirmSparkNameTransactionViewState horizontal: 16, vertical: 18, ), - color: - Theme.of( - context, - ).extension()!.textFieldDefaultBG, + color: Theme.of( + context, + ).extension()!.textFieldDefaultBG, child: SelectableText( "~${fee!.raw.toInt() ~/ widget.txData.vSize!}", style: STextStyles.itemSubtitle(context), @@ -840,64 +822,52 @@ class _ConfirmSparkNameTransactionViewState if (!isDesktop) const Spacer(), SizedBox(height: isDesktop ? 23 : 12), Padding( - padding: - isDesktop - ? const EdgeInsets.symmetric(horizontal: 32) - : const EdgeInsets.all(0), + padding: isDesktop + ? const EdgeInsets.symmetric(horizontal: 32) + : const EdgeInsets.all(0), child: RoundedContainer( - padding: - isDesktop - ? const EdgeInsets.symmetric( - horizontal: 16, - vertical: 18, - ) - : const EdgeInsets.all(12), - color: - Theme.of( - context, - ).extension()!.snackBarBackSuccess, + padding: isDesktop + ? const EdgeInsets.symmetric(horizontal: 16, vertical: 18) + : const EdgeInsets.all(12), + color: Theme.of( + context, + ).extension()!.snackBarBackSuccess, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( isDesktop ? "Total amount to send" : "Total amount", - style: - isDesktop - ? STextStyles.desktopTextExtraExtraSmall( - context, - ).copyWith( - color: - Theme.of(context) - .extension()! - .textConfirmTotalAmount, - ) - : STextStyles.titleBold12(context).copyWith( - color: - Theme.of(context) - .extension()! - .textConfirmTotalAmount, - ), + style: isDesktop + ? STextStyles.desktopTextExtraExtraSmall( + context, + ).copyWith( + color: Theme.of(context) + .extension()! + .textConfirmTotalAmount, + ) + : STextStyles.titleBold12(context).copyWith( + color: Theme.of(context) + .extension()! + .textConfirmTotalAmount, + ), ), SelectableText( ref .watch(pAmountFormatter(coin)) .format(amountWithoutChange + fee!), - style: - isDesktop - ? STextStyles.desktopTextExtraExtraSmall( - context, - ).copyWith( - color: - Theme.of(context) - .extension()! - .textConfirmTotalAmount, - ) - : STextStyles.itemSubtitle12(context).copyWith( - color: - Theme.of(context) - .extension()! - .textConfirmTotalAmount, - ), + style: isDesktop + ? STextStyles.desktopTextExtraExtraSmall( + context, + ).copyWith( + color: Theme.of(context) + .extension()! + .textConfirmTotalAmount, + ) + : STextStyles.itemSubtitle12(context).copyWith( + color: Theme.of(context) + .extension()! + .textConfirmTotalAmount, + ), textAlign: TextAlign.right, ), ], @@ -906,10 +876,9 @@ class _ConfirmSparkNameTransactionViewState ), SizedBox(height: isDesktop ? 28 : 16), Padding( - padding: - isDesktop - ? const EdgeInsets.symmetric(horizontal: 32) - : const EdgeInsets.all(0), + padding: isDesktop + ? const EdgeInsets.symmetric(horizontal: 32) + : const EdgeInsets.all(0), child: PrimaryButton( label: "Send", buttonHeight: isDesktop ? ButtonHeight.l : null, @@ -919,28 +888,27 @@ class _ConfirmSparkNameTransactionViewState if (isDesktop) { unlocked = await showDialog( context: context, - builder: - (context) => DesktopDialog( - maxWidth: 580, - maxHeight: double.infinity, - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - const Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [DesktopDialogCloseButton()], - ), - Padding( - padding: const EdgeInsets.only( - left: 32, - right: 32, - bottom: 32, - ), - child: DesktopAuthSend(coin: coin), - ), - ], + builder: (context) => DesktopDialog( + maxWidth: 580, + maxHeight: double.infinity, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + const Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [DesktopDialogCloseButton()], ), - ), + Padding( + padding: const EdgeInsets.only( + left: 32, + right: 32, + bottom: 32, + ), + child: DesktopAuthSend(coin: coin), + ), + ], + ), + ), ); } else { unlocked = await Navigator.push( @@ -948,18 +916,16 @@ class _ConfirmSparkNameTransactionViewState RouteGenerator.getRoute( shouldUseMaterialRoute: RouteGenerator.useMaterialPageRoute, - builder: - (_) => const LockscreenView( - showBackButton: true, - popOnSuccess: true, - routeOnSuccessArguments: true, - routeOnSuccess: "", - biometricsCancelButtonString: "CANCEL", - biometricsLocalizedReason: - "Authenticate to send transaction", - biometricsAuthenticationTitle: - "Confirm Transaction", - ), + builder: (_) => const LockscreenView( + showBackButton: true, + popOnSuccess: true, + routeOnSuccessArguments: true, + routeOnSuccess: "", + biometricsCancelButtonString: "CANCEL", + biometricsLocalizedReason: + "Authenticate to send transaction", + biometricsAuthenticationTitle: "Confirm Transaction", + ), settings: const RouteSettings( name: "/confirmsendlockscreen", ), @@ -975,10 +941,9 @@ class _ConfirmSparkNameTransactionViewState unawaited( showFloatingFlushBar( type: FlushBarType.warning, - message: - Util.isDesktop - ? "Invalid passphrase" - : "Invalid PIN", + message: Util.isDesktop + ? "Invalid passphrase" + : "Invalid PIN", context: context, ), ); diff --git a/lib/pages/spark_names/sub_widgets/spark_name_details.dart b/lib/pages/spark_names/sub_widgets/spark_name_details.dart index 372f7484e6..b6f17eee71 100644 --- a/lib/pages/spark_names/sub_widgets/spark_name_details.dart +++ b/lib/pages/spark_names/sub_widgets/spark_name_details.dart @@ -81,37 +81,36 @@ class _SparkNameDetailsViewState extends ConsumerState { if (Util.isDesktop) { await showDialog( context: context, - builder: - (context) => SDialog( - child: SizedBox( - width: 580, - child: Column( + builder: (context) => SDialog( + child: SizedBox( + width: 580, + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Padding( - padding: const EdgeInsets.only(left: 32), - child: Text( - "Renew name", - style: STextStyles.desktopH3(context), - ), - ), - const DesktopDialogCloseButton(), - ], - ), Padding( - padding: const EdgeInsets.symmetric(horizontal: 32), - child: BuySparkNameView( - walletId: widget.walletId, - name: name.name, - nameToRenew: name, + padding: const EdgeInsets.only(left: 32), + child: Text( + "Renew name", + style: STextStyles.desktopH3(context), ), ), + const DesktopDialogCloseButton(), ], ), - ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 32), + child: BuySparkNameView( + walletId: widget.walletId, + name: name.name, + nameToRenew: name, + ), + ), + ], ), + ), + ), ); } else { await Navigator.of(context).pushNamed( @@ -143,9 +142,9 @@ class _SparkNameDetailsViewState extends ConsumerState { final db = ref.read(pDrift(widget.walletId)); - _nameStream = - (db.select(db.sparkNames) - ..where((e) => e.name.equals(name.name))).watchSingleOrNull(); + _nameStream = (db.select( + db.sparkNames, + )..where((e) => e.name.equals(name.name))).watchSingleOrNull(); } @override @@ -159,38 +158,37 @@ class _SparkNameDetailsViewState extends ConsumerState { return ConditionalParent( condition: !Util.isDesktop, - builder: - (child) => Background( - child: Scaffold( - backgroundColor: Colors.transparent, - appBar: AppBar( - backgroundColor: Colors.transparent, - // Theme.of(context).extension()!.background, - leading: const AppBarBackButton(), - title: Text( - "Spark name details", - style: STextStyles.navBarTitle(context), - ), - ), - body: SafeArea( - child: LayoutBuilder( - builder: (context, constraints) { - return Padding( - padding: const EdgeInsets.symmetric(horizontal: 16), - child: SingleChildScrollView( - child: ConstrainedBox( - constraints: BoxConstraints( - minHeight: constraints.maxHeight, - ), - child: IntrinsicHeight(child: child), - ), + builder: (child) => Background( + child: Scaffold( + backgroundColor: Colors.transparent, + appBar: AppBar( + backgroundColor: Colors.transparent, + // Theme.of(context).extension()!.background, + leading: const AppBarBackButton(), + title: Text( + "Spark name details", + style: STextStyles.navBarTitle(context), + ), + ), + body: SafeArea( + child: LayoutBuilder( + builder: (context, constraints) { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 16), + child: SingleChildScrollView( + child: ConstrainedBox( + constraints: BoxConstraints( + minHeight: constraints.maxHeight, ), - ); - }, - ), - ), + child: IntrinsicHeight(child: child), + ), + ), + ); + }, ), ), + ), + ), child: ConditionalParent( condition: Util.isDesktop, builder: (child) { @@ -221,10 +219,9 @@ class _SparkNameDetailsViewState extends ConsumerState { child: RoundedContainer( padding: EdgeInsets.zero, color: Colors.transparent, - borderColor: - Theme.of( - context, - ).extension()!.textFieldDefaultBG, + borderColor: Theme.of( + context, + ).extension()!.textFieldDefaultBG, child: child, ), ), @@ -244,19 +241,17 @@ class _SparkNameDetailsViewState extends ConsumerState { children: [ RoundedContainer( padding: const EdgeInsets.all(12), - color: - Util.isDesktop - ? Colors.transparent - : Theme.of(context).extension()!.popupBG, + color: Util.isDesktop + ? Colors.transparent + : Theme.of(context).extension()!.popupBG, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ SelectableText( name.name, - style: - Util.isDesktop - ? STextStyles.pageTitleH2(context) - : STextStyles.w500_14(context), + style: Util.isDesktop + ? STextStyles.pageTitleH2(context) + : STextStyles.w500_14(context), ), ], ), @@ -264,14 +259,12 @@ class _SparkNameDetailsViewState extends ConsumerState { const _Div(), RoundedContainer( - padding: - Util.isDesktop - ? const EdgeInsets.all(16) - : const EdgeInsets.all(12), - color: - Util.isDesktop - ? Colors.transparent - : Theme.of(context).extension()!.popupBG, + padding: Util.isDesktop + ? const EdgeInsets.all(16) + : const EdgeInsets.all(12), + color: Util.isDesktop + ? Colors.transparent + : Theme.of(context).extension()!.popupBG, child: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, @@ -282,10 +275,9 @@ class _SparkNameDetailsViewState extends ConsumerState { Text( "Address", style: STextStyles.w500_14(context).copyWith( - color: - Theme.of( - context, - ).extension()!.textSubtitle1, + color: Theme.of( + context, + ).extension()!.textSubtitle1, ), ), Util.isDesktop @@ -309,74 +301,69 @@ class _SparkNameDetailsViewState extends ConsumerState { return (label != null && label!.value.isNotEmpty) ? Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const _Div(), + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const _Div(), - RoundedContainer( - padding: - Util.isDesktop - ? const EdgeInsets.all(16) - : const EdgeInsets.all(12), - color: - Util.isDesktop - ? Colors.transparent - : Theme.of( + RoundedContainer( + padding: Util.isDesktop + ? const EdgeInsets.all(16) + : const EdgeInsets.all(12), + color: Util.isDesktop + ? Colors.transparent + : Theme.of( context, ).extension()!.popupBG, - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - Text( - "Address label", - style: STextStyles.w500_14( - context, - ).copyWith( - color: - Theme.of(context) - .extension()! - .textSubtitle1, + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Text( + "Address label", + style: STextStyles.w500_14(context) + .copyWith( + color: Theme.of(context) + .extension()! + .textSubtitle1, + ), ), - ), - Util.isDesktop - ? tvd.IconCopyButton( - data: label!.value, - ) - : SimpleCopyButton( - data: label!.value, - ), - ], - ), - const SizedBox(height: 4), - SelectableText( - label!.value, - style: STextStyles.w500_14(context), - ), - ], + Util.isDesktop + ? tvd.IconCopyButton( + data: label!.value, + ) + : SimpleCopyButton( + data: label!.value, + ), + ], + ), + const SizedBox(height: 4), + SelectableText( + label!.value, + style: STextStyles.w500_14(context), + ), + ], + ), ), - ), - ], - ) + ], + ) : const SizedBox(width: 0, height: 0); }, ), const _Div(), RoundedContainer( - padding: - Util.isDesktop - ? const EdgeInsets.all(16) - : const EdgeInsets.all(12), - color: - Util.isDesktop - ? Colors.transparent - : Theme.of(context).extension()!.popupBG, + padding: Util.isDesktop + ? const EdgeInsets.all(16) + : const EdgeInsets.all(12), + color: Util.isDesktop + ? Colors.transparent + : Theme.of(context).extension()!.popupBG, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ @@ -387,10 +374,9 @@ class _SparkNameDetailsViewState extends ConsumerState { Text( "Expiry", style: STextStyles.w500_14(context).copyWith( - color: - Theme.of( - context, - ).extension()!.textSubtitle1, + color: Theme.of( + context, + ).extension()!.textSubtitle1, ), ), const SizedBox(height: 4), @@ -405,8 +391,9 @@ class _SparkNameDetailsViewState extends ConsumerState { if (remaining < _remainingMagic) PrimaryButton( label: "Renew", - buttonHeight: - Util.isDesktop ? ButtonHeight.xs : ButtonHeight.l, + buttonHeight: Util.isDesktop + ? ButtonHeight.xs + : ButtonHeight.l, onPressed: _renew, ), ], @@ -414,14 +401,12 @@ class _SparkNameDetailsViewState extends ConsumerState { ), const _Div(), RoundedContainer( - padding: - Util.isDesktop - ? const EdgeInsets.all(16) - : const EdgeInsets.all(12), - color: - Util.isDesktop - ? Colors.transparent - : Theme.of(context).extension()!.popupBG, + padding: Util.isDesktop + ? const EdgeInsets.all(16) + : const EdgeInsets.all(12), + color: Util.isDesktop + ? Colors.transparent + : Theme.of(context).extension()!.popupBG, child: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, @@ -429,10 +414,9 @@ class _SparkNameDetailsViewState extends ConsumerState { Text( "Additional info", style: STextStyles.w500_14(context).copyWith( - color: - Theme.of( - context, - ).extension()!.textSubtitle1, + color: Theme.of( + context, + ).extension()!.textSubtitle1, ), ), const SizedBox(height: 4), diff --git a/lib/pages/special/firo_rescan_recovery_error_dialog.dart b/lib/pages/special/firo_rescan_recovery_error_dialog.dart index 1b8675db6b..ec14dc9b70 100644 --- a/lib/pages/special/firo_rescan_recovery_error_dialog.dart +++ b/lib/pages/special/firo_rescan_recovery_error_dialog.dart @@ -65,21 +65,20 @@ class _FiroRescanRecoveryErrorViewState final result = await showDialog( context: context, barrierDismissible: false, - builder: - (context) => Navigator( - initialRoute: DesktopDeleteWalletDialog.routeName, - onGenerateRoute: RouteGenerator.generateRoute, - onGenerateInitialRoutes: (_, __) { - return [ - RouteGenerator.generateRoute( - RouteSettings( - name: DesktopDeleteWalletDialog.routeName, - arguments: widget.walletId, - ), - ), - ]; - }, - ), + builder: (context) => Navigator( + initialRoute: DesktopDeleteWalletDialog.routeName, + onGenerateRoute: RouteGenerator.generateRoute, + onGenerateInitialRoutes: (_, __) { + return [ + RouteGenerator.generateRoute( + RouteSettings( + name: DesktopDeleteWalletDialog.routeName, + arguments: widget.walletId, + ), + ), + ]; + }, + ), ); if (result == true) { @@ -100,8 +99,9 @@ class _FiroRescanRecoveryErrorViewState builder: (child) { return Background( child: Scaffold( - backgroundColor: - Theme.of(context).extension()!.background, + backgroundColor: Theme.of( + context, + ).extension()!.background, appBar: AppBar( automaticallyImplyLeading: false, actions: [ @@ -120,18 +120,16 @@ class _FiroRescanRecoveryErrorViewState key: const Key("walletViewRadioButton"), size: 36, shadows: const [], - color: - Theme.of( - context, - ).extension()!.background, + color: Theme.of( + context, + ).extension()!.background, icon: SvgPicture.asset( Assets.svg.trash, width: 20, height: 20, - color: - Theme.of( - context, - ).extension()!.topNavIconPrimary, + color: Theme.of( + context, + ).extension()!.topNavIconPrimary, ), onPressed: () async { final walletName = ref.read( @@ -140,71 +138,60 @@ class _FiroRescanRecoveryErrorViewState await showDialog( barrierDismissible: true, context: context, - builder: - (_) => StackDialog( - title: "Do you want to delete $walletName?", - leftButton: TextButton( - style: Theme.of(context) + builder: (_) => StackDialog( + title: "Do you want to delete $walletName?", + leftButton: TextButton( + style: Theme.of(context) + .extension()! + .getSecondaryEnabledButtonStyle(context), + onPressed: () { + Navigator.pop(context); + }, + child: Text( + "Cancel", + style: STextStyles.button(context).copyWith( + color: Theme.of(context) .extension()! - .getSecondaryEnabledButtonStyle( - context, - ), - onPressed: () { - Navigator.pop(context); - }, - child: Text( - "Cancel", - style: STextStyles.button( - context, - ).copyWith( - color: - Theme.of(context) - .extension()! - .accentColorDark, - ), - ), + .accentColorDark, ), - rightButton: TextButton( - style: Theme.of(context) - .extension()! - .getPrimaryEnabledButtonStyle( - context, - ), - onPressed: () { - Navigator.pop(context); - Navigator.push( - context, - RouteGenerator.getRoute( - shouldUseMaterialRoute: - RouteGenerator - .useMaterialPageRoute, - builder: - (_) => LockscreenView( - routeOnSuccessArguments: - widget.walletId, - showBackButton: true, - routeOnSuccess: - DeleteWalletWarningView - .routeName, - biometricsCancelButtonString: - "CANCEL", - biometricsLocalizedReason: - "Authenticate to delete wallet", - biometricsAuthenticationTitle: - "Delete wallet", - ), - settings: const RouteSettings( - name: "/deleteWalletLockscreen", - ), - ), - ); - }, - child: Text( - "Delete", - style: STextStyles.button(context), + ), + ), + rightButton: TextButton( + style: Theme.of(context) + .extension()! + .getPrimaryEnabledButtonStyle(context), + onPressed: () { + Navigator.pop(context); + Navigator.push( + context, + RouteGenerator.getRoute( + shouldUseMaterialRoute: + RouteGenerator.useMaterialPageRoute, + builder: (_) => LockscreenView( + routeOnSuccessArguments: + widget.walletId, + showBackButton: true, + routeOnSuccess: + DeleteWalletWarningView.routeName, + biometricsCancelButtonString: + "CANCEL", + biometricsLocalizedReason: + "Authenticate to delete wallet", + biometricsAuthenticationTitle: + "Delete wallet", + ), + settings: const RouteSettings( + name: "/deleteWalletLockscreen", + ), ), - ), + ); + }, + child: Text( + "Delete", + style: STextStyles.button(context), ), + ), + ), ); }, ), @@ -232,20 +219,18 @@ class _FiroRescanRecoveryErrorViewState Util.isDesktop ? const SizedBox(height: 60) : const Spacer(), BranchedParent( condition: Util.isDesktop, - conditionBranchBuilder: - (children) => Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.stretch, - children: children, - ), - otherBranchBuilder: - (children) => Row( - children: [ - Expanded(child: children[0]), - children[1], - Expanded(child: children[2]), - ], - ), + conditionBranchBuilder: (children) => Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: children, + ), + otherBranchBuilder: (children) => Row( + children: [ + Expanded(child: children[0]), + children[1], + Expanded(child: children[2]), + ], + ), children: [ SecondaryButton( label: "Show mnemonic", @@ -255,21 +240,20 @@ class _FiroRescanRecoveryErrorViewState await showDialog( context: context, barrierDismissible: false, - builder: - (context) => Navigator( - initialRoute: UnlockWalletKeysDesktop.routeName, - onGenerateRoute: RouteGenerator.generateRoute, - onGenerateInitialRoutes: (_, __) { - return [ - RouteGenerator.generateRoute( - RouteSettings( - name: UnlockWalletKeysDesktop.routeName, - arguments: widget.walletId, - ), - ), - ]; - }, - ), + builder: (context) => Navigator( + initialRoute: UnlockWalletKeysDesktop.routeName, + onGenerateRoute: RouteGenerator.generateRoute, + onGenerateInitialRoutes: (_, __) { + return [ + RouteGenerator.generateRoute( + RouteSettings( + name: UnlockWalletKeysDesktop.routeName, + arguments: widget.walletId, + ), + ), + ]; + }, + ), ); } else { final wallet = ref @@ -294,22 +278,20 @@ class _FiroRescanRecoveryErrorViewState RouteGenerator.getRoute( shouldUseMaterialRoute: RouteGenerator.useMaterialPageRoute, - builder: - (_) => LockscreenView( - routeOnSuccessArguments: ( - walletId: widget.walletId, - mnemonic: mnemonic, - keyData: keyData, - ), - showBackButton: true, - routeOnSuccess: - WalletBackupView.routeName, - biometricsCancelButtonString: "CANCEL", - biometricsLocalizedReason: - "Authenticate to view recovery phrase", - biometricsAuthenticationTitle: - "View recovery phrase", - ), + builder: (_) => LockscreenView( + routeOnSuccessArguments: ( + walletId: widget.walletId, + mnemonic: mnemonic, + keyData: keyData, + ), + showBackButton: true, + routeOnSuccess: WalletBackupView.routeName, + biometricsCancelButtonString: "CANCEL", + biometricsLocalizedReason: + "Authenticate to view recovery phrase", + biometricsAuthenticationTitle: + "View recovery phrase", + ), settings: const RouteSettings( name: "/viewRecoverPhraseLockscreen", ), diff --git a/lib/pages/token_view/my_tokens_view.dart b/lib/pages/token_view/my_tokens_view.dart index 10e84751b2..e0b1822ea3 100644 --- a/lib/pages/token_view/my_tokens_view.dart +++ b/lib/pages/token_view/my_tokens_view.dart @@ -66,80 +66,73 @@ class _MyTokensViewState extends ConsumerState { return ConditionalParent( condition: !isDesktop, - builder: - (child) => Background( - child: Scaffold( - backgroundColor: - Theme.of(context).extension()!.background, - appBar: AppBar( - backgroundColor: - Theme.of(context).extension()!.background, - leading: AppBarBackButton( - onPressed: () async { - if (FocusScope.of(context).hasFocus) { - FocusScope.of(context).unfocus(); - await Future.delayed( - const Duration(milliseconds: 75), - ); - } - if (mounted) { - Navigator.of(context).pop(); - } - }, - ), - title: Text( - "${ref.watch(pWalletName(widget.walletId))} Tokens", - style: STextStyles.navBarTitle(context), - ), - actions: [ - Padding( - padding: const EdgeInsets.only( - top: 10, - bottom: 10, - right: 20, + builder: (child) => Background( + child: Scaffold( + backgroundColor: Theme.of( + context, + ).extension()!.background, + appBar: AppBar( + backgroundColor: Theme.of( + context, + ).extension()!.background, + leading: AppBarBackButton( + onPressed: () async { + if (FocusScope.of(context).hasFocus) { + FocusScope.of(context).unfocus(); + await Future.delayed(const Duration(milliseconds: 75)); + } + if (mounted) { + Navigator.of(context).pop(); + } + }, + ), + title: Text( + "${ref.watch(pWalletName(widget.walletId))} Tokens", + style: STextStyles.navBarTitle(context), + ), + actions: [ + Padding( + padding: const EdgeInsets.only(top: 10, bottom: 10, right: 20), + child: AspectRatio( + aspectRatio: 1, + child: AppBarIconButton( + key: const Key("addTokenAppBarIconButtonKey"), + size: 36, + shadows: const [], + color: Theme.of( + context, + ).extension()!.background, + icon: SvgPicture.asset( + Assets.svg.circlePlusFilled, + color: Theme.of( + context, + ).extension()!.topNavIconPrimary, + width: 20, + height: 20, ), - child: AspectRatio( - aspectRatio: 1, - child: AppBarIconButton( - key: const Key("addTokenAppBarIconButtonKey"), - size: 36, - shadows: const [], - color: - Theme.of( - context, - ).extension()!.background, - icon: SvgPicture.asset( - Assets.svg.circlePlusFilled, - color: - Theme.of( - context, - ).extension()!.topNavIconPrimary, - width: 20, - height: 20, - ), - onPressed: () async { - final result = await Navigator.of(context).pushNamed( - EditWalletTokensView.routeName, - arguments: widget.walletId, - ); + onPressed: () async { + final result = await Navigator.of(context).pushNamed( + EditWalletTokensView.routeName, + arguments: widget.walletId, + ); - if (mounted && result == 42) { - setState(() {}); - } - }, - ), - ), + if (mounted && result == 42) { + setState(() {}); + } + }, ), - ], - ), - body: SafeArea( - child: Padding( - padding: const EdgeInsets.only(left: 12, top: 12, right: 12), - child: child, ), ), + ], + ), + body: SafeArea( + child: Padding( + padding: const EdgeInsets.only(left: 12, top: 12, right: 12), + child: child, ), ), + ), + ), child: Column( children: [ Padding( @@ -166,57 +159,55 @@ class _MyTokensViewState extends ConsumerState { _searchString = value; }); }, - style: - isDesktop - ? STextStyles.desktopTextExtraSmall( + style: isDesktop + ? STextStyles.desktopTextExtraSmall( + context, + ).copyWith( + color: Theme.of( context, - ).copyWith( - color: - Theme.of(context) - .extension()! - .textFieldActiveText, - height: 1.8, - ) - : STextStyles.field(context), - decoration: standardInputDecoration( - "Search...", - searchFieldFocusNode, - context, - desktopMed: isDesktop, - ).copyWith( - prefixIcon: Padding( - padding: EdgeInsets.symmetric( - horizontal: isDesktop ? 12 : 10, - vertical: isDesktop ? 18 : 16, - ), - child: SvgPicture.asset( - Assets.svg.search, - width: isDesktop ? 20 : 16, - height: isDesktop ? 20 : 16, - ), - ), - suffixIcon: - _searchController.text.isNotEmpty + ).extension()!.textFieldActiveText, + height: 1.8, + ) + : STextStyles.field(context), + decoration: + standardInputDecoration( + "Search...", + searchFieldFocusNode, + context, + desktopMed: isDesktop, + ).copyWith( + prefixIcon: Padding( + padding: EdgeInsets.symmetric( + horizontal: isDesktop ? 12 : 10, + vertical: isDesktop ? 18 : 16, + ), + child: SvgPicture.asset( + Assets.svg.search, + width: isDesktop ? 20 : 16, + height: isDesktop ? 20 : 16, + ), + ), + suffixIcon: _searchController.text.isNotEmpty ? Padding( - padding: const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - children: [ - TextFieldIconButton( - child: const XIcon(), - onTap: () async { - setState(() { - _searchController.text = ""; - _searchString = ""; - }); - }, - ), - ], + padding: const EdgeInsets.only(right: 0), + child: UnconstrainedBox( + child: Row( + children: [ + TextFieldIconButton( + child: const XIcon(), + onTap: () async { + setState(() { + _searchController.text = ""; + _searchString = ""; + }); + }, + ), + ], + ), ), - ), - ) + ) : null, - ), + ), ), ), ), diff --git a/lib/pages/token_view/sub_widgets/my_token_select_item.dart b/lib/pages/token_view/sub_widgets/my_token_select_item.dart index 745f2a0fd5..7fd05ba9c8 100644 --- a/lib/pages/token_view/sub_widgets/my_token_select_item.dart +++ b/lib/pages/token_view/sub_widgets/my_token_select_item.dart @@ -64,21 +64,20 @@ class _MyTokenSelectItemState extends ConsumerState { await showDialog( barrierDismissible: false, context: context, - builder: - (context) => BasicDialog( - title: "Failed to load token data", - desktopHeight: double.infinity, - desktopWidth: 450, - rightButton: PrimaryButton( - label: "OK", - onPressed: () { - Navigator.of(context).pop(); - if (!isDesktop) { - Navigator.of(context).pop(); - } - }, - ), - ), + builder: (context) => BasicDialog( + title: "Failed to load token data", + desktopHeight: double.infinity, + desktopWidth: 450, + rightButton: PrimaryButton( + label: "OK", + onPressed: () { + Navigator.of(context).pop(); + if (!isDesktop) { + Navigator.of(context).pop(); + } + }, + ), + ), ); return false; } @@ -153,10 +152,9 @@ class _MyTokenSelectItemState extends ConsumerState { padding: const EdgeInsets.all(0), child: MaterialButton( key: Key("walletListItemButtonKey_${widget.token.symbol}"), - padding: - isDesktop - ? const EdgeInsets.symmetric(horizontal: 28, vertical: 24) - : const EdgeInsets.symmetric(horizontal: 12, vertical: 13), + padding: isDesktop + ? const EdgeInsets.symmetric(horizontal: 28, vertical: 24) + : const EdgeInsets.symmetric(horizontal: 12, vertical: 13), materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular( @@ -181,17 +179,15 @@ class _MyTokenSelectItemState extends ConsumerState { children: [ Text( widget.token.name, - style: - isDesktop - ? STextStyles.desktopTextExtraSmall( + style: isDesktop + ? STextStyles.desktopTextExtraSmall( + context, + ).copyWith( + color: Theme.of( context, - ).copyWith( - color: - Theme.of( - context, - ).extension()!.textDark, - ) - : STextStyles.titleBold12(context), + ).extension()!.textDark, + ) + : STextStyles.titleBold12(context), ), const Spacer(), Text( @@ -212,17 +208,15 @@ class _MyTokenSelectItemState extends ConsumerState { .total, ethContract: widget.token, ), - style: - isDesktop - ? STextStyles.desktopTextExtraSmall( + style: isDesktop + ? STextStyles.desktopTextExtraSmall( + context, + ).copyWith( + color: Theme.of( context, - ).copyWith( - color: - Theme.of( - context, - ).extension()!.textDark, - ) - : STextStyles.itemSubtitle(context), + ).extension()!.textDark, + ) + : STextStyles.itemSubtitle(context), ), ], ), @@ -231,24 +225,22 @@ class _MyTokenSelectItemState extends ConsumerState { children: [ Text( widget.token.symbol, - style: - isDesktop - ? STextStyles.desktopTextExtraExtraSmall( - context, - ) - : STextStyles.itemSubtitle(context), + style: isDesktop + ? STextStyles.desktopTextExtraExtraSmall( + context, + ) + : STextStyles.itemSubtitle(context), ), const Spacer(), if (priceString != null) Text( "$priceString " "${ref.watch(prefsChangeNotifierProvider.select((value) => value.currency))}", - style: - isDesktop - ? STextStyles.desktopTextExtraExtraSmall( - context, - ) - : STextStyles.itemSubtitle(context), + style: isDesktop + ? STextStyles.desktopTextExtraExtraSmall( + context, + ) + : STextStyles.itemSubtitle(context), ), ], ), diff --git a/lib/pages/token_view/sub_widgets/token_summary.dart b/lib/pages/token_view/sub_widgets/token_summary.dart index 2c09077cb1..03cede6e6c 100644 --- a/lib/pages/token_view/sub_widgets/token_summary.dart +++ b/lib/pages/token_view/sub_widgets/token_summary.dart @@ -83,10 +83,9 @@ class TokenSummary extends ConsumerWidget { children: [ SvgPicture.asset( Assets.svg.walletDesktop, - color: - Theme.of( - context, - ).extension()!.tokenSummaryTextSecondary, + color: Theme.of( + context, + ).extension()!.tokenSummaryTextSecondary, width: 12, height: 12, ), @@ -94,10 +93,9 @@ class TokenSummary extends ConsumerWidget { Text( ref.watch(pWalletName(walletId)), style: STextStyles.w500_12(context).copyWith( - color: - Theme.of( - context, - ).extension()!.tokenSummaryTextSecondary, + color: Theme.of( + context, + ).extension()!.tokenSummaryTextSecondary, ), ), ], @@ -115,10 +113,9 @@ class TokenSummary extends ConsumerWidget { ) .format(balance.total, ethContract: token), style: STextStyles.pageTitleH1(context).copyWith( - color: - Theme.of( - context, - ).extension()!.tokenSummaryTextPrimary, + color: Theme.of( + context, + ).extension()!.tokenSummaryTextPrimary, ), ), const SizedBox(width: 10), @@ -134,10 +131,9 @@ class TokenSummary extends ConsumerWidget { Text( "${(balance.total.decimal * price).toAmount(fractionDigits: 2).fiatString(locale: ref.watch(localeServiceChangeNotifierProvider.select((value) => value.locale)))} ${ref.watch(prefsChangeNotifierProvider.select((value) => value.currency))}", style: STextStyles.subtitle500(context).copyWith( - color: - Theme.of( - context, - ).extension()!.tokenSummaryTextPrimary, + color: Theme.of( + context, + ).extension()!.tokenSummaryTextPrimary, ), ), const SizedBox(height: 20), @@ -156,8 +152,9 @@ class TokenSummary extends ConsumerWidget { (value) => value!.tokenContract.address, ), ), - overrideIconColor: - Theme.of(context).extension()!.topNavIconPrimary, + overrideIconColor: Theme.of( + context, + ).extension()!.topNavIconPrimary, ), ), ], @@ -266,8 +263,9 @@ class TokenOptionsButton extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.center, children: [ RawMaterialButton( - fillColor: - Theme.of(context).extension()!.tokenSummaryButtonBG, + fillColor: Theme.of( + context, + ).extension()!.tokenSummaryButtonBG, elevation: 0, focusElevation: 0, hoverElevation: 0, @@ -283,36 +281,31 @@ class TokenOptionsButton extends StatelessWidget { padding: const EdgeInsets.all(10), child: ConditionalParent( condition: iconSize < 24, - builder: - (child) => RoundedContainer( - padding: const EdgeInsets.all(6), - color: Theme.of(context) - .extension()! - .tokenSummaryIcon - .withOpacity(0.4), - radiusMultiplier: 10, - child: Center(child: child), - ), - child: - iconAssetPathSVG.startsWith("assets/") - ? SvgPicture.asset( - iconAssetPathSVG, - color: - Theme.of( - context, - ).extension()!.tokenSummaryIcon, - width: iconSize, - height: iconSize, - ) - : SvgPicture.file( - File(iconAssetPathSVG), - color: - Theme.of( - context, - ).extension()!.tokenSummaryIcon, - width: iconSize, - height: iconSize, - ), + builder: (child) => RoundedContainer( + padding: const EdgeInsets.all(6), + color: Theme.of( + context, + ).extension()!.tokenSummaryIcon.withOpacity(0.4), + radiusMultiplier: 10, + child: Center(child: child), + ), + child: iconAssetPathSVG.startsWith("assets/") + ? SvgPicture.asset( + iconAssetPathSVG, + color: Theme.of( + context, + ).extension()!.tokenSummaryIcon, + width: iconSize, + height: iconSize, + ) + : SvgPicture.file( + File(iconAssetPathSVG), + color: Theme.of( + context, + ).extension()!.tokenSummaryIcon, + width: iconSize, + height: iconSize, + ), ), ), ), @@ -320,10 +313,9 @@ class TokenOptionsButton extends StatelessWidget { Text( subLabel, style: STextStyles.w500_12(context).copyWith( - color: - Theme.of( - context, - ).extension()!.tokenSummaryTextPrimary, + color: Theme.of( + context, + ).extension()!.tokenSummaryTextPrimary, ), ), ], diff --git a/lib/pages/token_view/sub_widgets/token_transaction_list_widget.dart b/lib/pages/token_view/sub_widgets/token_transaction_list_widget.dart index dc8255726e..0ca4154647 100644 --- a/lib/pages/token_view/sub_widgets/token_transaction_list_widget.dart +++ b/lib/pages/token_view/sub_widgets/token_transaction_list_widget.dart @@ -25,10 +25,7 @@ import '../../../wallets/isar/providers/eth/current_token_wallet_provider.dart'; import '../../../widgets/loading_indicator.dart'; class TokenTransactionsList extends ConsumerStatefulWidget { - const TokenTransactionsList({ - super.key, - required this.walletId, - }); + const TokenTransactionsList({super.key, required this.walletId}); final String walletId; @@ -48,23 +45,15 @@ class _TransactionsListState extends ConsumerState { BorderRadius get _borderRadiusFirst { return BorderRadius.only( - topLeft: Radius.circular( - Constants.size.circularBorderRadius, - ), - topRight: Radius.circular( - Constants.size.circularBorderRadius, - ), + topLeft: Radius.circular(Constants.size.circularBorderRadius), + topRight: Radius.circular(Constants.size.circularBorderRadius), ); } BorderRadius get _borderRadiusLast { return BorderRadius.only( - bottomLeft: Radius.circular( - Constants.size.circularBorderRadius, - ), - bottomRight: Radius.circular( - Constants.size.circularBorderRadius, - ), + bottomLeft: Radius.circular(Constants.size.circularBorderRadius), + bottomRight: Radius.circular(Constants.size.circularBorderRadius), ); } @@ -75,22 +64,20 @@ class _TransactionsListState extends ConsumerState { .getWallet(widget.walletId) .cryptoCurrency .minConfirms; - _query = - ref.read(mainDBProvider).isar.transactionV2s.buildQuery( - whereClauses: [ - IndexWhereClause.equalTo( - indexName: 'walletId', - value: [widget.walletId], - ), - ], - filter: ref.read(pCurrentTokenWallet)!.transactionFilterOperation, - sortBy: [ - const SortProperty( - property: "timestamp", - sort: Sort.desc, - ), - ], - ); + _query = ref + .read(mainDBProvider) + .isar + .transactionV2s + .buildQuery( + whereClauses: [ + IndexWhereClause.equalTo( + indexName: 'walletId', + value: [widget.walletId], + ), + ], + filter: ref.read(pCurrentTokenWallet)!.transactionFilterOperation, + sortBy: [const SortProperty(property: "timestamp", sort: Sort.desc)], + ); _subscription = _query.watch().listen((event) { WidgetsBinding.instance.addPostFrameCallback((_) { @@ -110,8 +97,9 @@ class _TransactionsListState extends ConsumerState { @override Widget build(BuildContext context) { - final wallet = - ref.watch(pWallets.select((value) => value.getWallet(widget.walletId))); + final wallet = ref.watch( + pWallets.select((value) => value.getWallet(widget.walletId)), + ); return FutureBuilder( future: _query.findAll(), @@ -125,15 +113,8 @@ class _TransactionsListState extends ConsumerState { return const Column( children: [ Spacer(), - Center( - child: LoadingIndicator( - height: 50, - width: 50, - ), - ), - Spacer( - flex: 4, - ), + Center(child: LoadingIndicator(height: 50, width: 50)), + Spacer(flex: 4), ], ); } @@ -171,9 +152,9 @@ class _TransactionsListState extends ConsumerState { return Container( width: double.infinity, height: 2, - color: Theme.of(context) - .extension()! - .background, + color: Theme.of( + context, + ).extension()!.background, ); }, itemCount: _transactions.length, diff --git a/lib/pages/wallet_view/sub_widgets/wallet_refresh_button.dart b/lib/pages/wallet_view/sub_widgets/wallet_refresh_button.dart index 6e98f4a3fb..76b94aed25 100644 --- a/lib/pages/wallet_view/sub_widgets/wallet_refresh_button.dart +++ b/lib/pages/wallet_view/sub_widgets/wallet_refresh_button.dart @@ -57,33 +57,33 @@ class _RefreshButtonState extends ConsumerState { void initState() { _spinController = RotatingArrowsController(); - eventBus = - widget.eventBus != null ? widget.eventBus! : GlobalEventBus.instance; - - _syncStatusSubscription = - eventBus.on().listen( - (event) async { - if (event.walletId == widget.walletId) { - switch (event.newStatus) { - case WalletSyncStatus.unableToSync: - if (_spinController.hasLoadedAnimation) { - _spinController.stop?.call(); - } - break; - case WalletSyncStatus.synced: - if (_spinController.hasLoadedAnimation) { - _spinController.stop?.call(); - } - break; - case WalletSyncStatus.syncing: - if (_spinController.hasLoadedAnimation) { - _spinController.repeat?.call(); - } - break; + eventBus = widget.eventBus != null + ? widget.eventBus! + : GlobalEventBus.instance; + + _syncStatusSubscription = eventBus + .on() + .listen((event) async { + if (event.walletId == widget.walletId) { + switch (event.newStatus) { + case WalletSyncStatus.unableToSync: + if (_spinController.hasLoadedAnimation) { + _spinController.stop?.call(); + } + break; + case WalletSyncStatus.synced: + if (_spinController.hasLoadedAnimation) { + _spinController.stop?.call(); + } + break; + case WalletSyncStatus.syncing: + if (_spinController.hasLoadedAnimation) { + _spinController.repeat?.call(); + } + break; + } } - } - }, - ); + }); super.initState(); } @@ -142,12 +142,10 @@ class _RefreshButtonState extends ConsumerState { color: widget.overrideIconColor != null ? widget.overrideIconColor! : isDesktop - ? Theme.of(context) - .extension()! - .textFieldDefaultSearchIconRight - : Theme.of(context) - .extension()! - .textFavoriteCard, + ? Theme.of( + context, + ).extension()!.textFieldDefaultSearchIconRight + : Theme.of(context).extension()!.textFavoriteCard, ), ), ), diff --git a/lib/pages/wallet_view/transaction_views/transaction_search_filter_view.dart b/lib/pages/wallet_view/transaction_views/transaction_search_filter_view.dart index a337cd898a..a5e524b9de 100644 --- a/lib/pages/wallet_view/transaction_views/transaction_search_filter_view.dart +++ b/lib/pages/wallet_view/transaction_views/transaction_search_filter_view.dart @@ -79,19 +79,18 @@ class _TransactionSearchViewState _selectedFromDate = filterState.from; _keywordTextEditingController.text = filterState.keyword; - _fromDateString = - _selectedFromDate == null - ? "" - : Format.formatDate(_selectedFromDate!); - _toDateString = - _selectedToDate == null ? "" : Format.formatDate(_selectedToDate!); - - final String amount = - filterState.amount == null - ? "" - : ref - .read(pAmountFormatter(widget.coin)) - .format(filterState.amount!, withUnitName: false); + _fromDateString = _selectedFromDate == null + ? "" + : Format.formatDate(_selectedFromDate!); + _toDateString = _selectedToDate == null + ? "" + : Format.formatDate(_selectedToDate!); + + final String amount = filterState.amount == null + ? "" + : ref + .read(pAmountFormatter(widget.coin)) + .format(filterState.amount!, withUnitName: false); _amountTextEditingController.text = amount; } @@ -116,10 +115,9 @@ class _TransactionSearchViewState return Text( isDateSelected ? "From..." : _fromDateString, style: STextStyles.fieldLabel(context).copyWith( - color: - isDateSelected - ? Theme.of(context).extension()!.textSubtitle2 - : Theme.of(context).extension()!.accentColorDark, + color: isDateSelected + ? Theme.of(context).extension()!.textSubtitle2 + : Theme.of(context).extension()!.accentColorDark, ), ); } @@ -129,10 +127,9 @@ class _TransactionSearchViewState return Text( isDateSelected ? "To..." : _toDateString, style: STextStyles.fieldLabel(context).copyWith( - color: - isDateSelected - ? Theme.of(context).extension()!.textSubtitle2 - : Theme.of(context).extension()!.accentColorDark, + color: isDateSelected + ? Theme.of(context).extension()!.textSubtitle2 + : Theme.of(context).extension()!.accentColorDark, ), ); } @@ -145,14 +142,13 @@ class _TransactionSearchViewState const middleSeparatorWidth = 12.0; final isDesktop = Util.isDesktop; - final width = - isDesktop - ? null - : (MediaQuery.of(context).size.width - - (middleSeparatorWidth + - (2 * middleSeparatorPadding) + - (2 * Constants.size.standardPadding))) / - 2; + final width = isDesktop + ? null + : (MediaQuery.of(context).size.width - + (middleSeparatorWidth + + (2 * middleSeparatorPadding) + + (2 * Constants.size.standardPadding))) / + 2; return Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, @@ -184,15 +180,13 @@ class _TransactionSearchViewState setState(() { if (flag) { - _toDateString = - _selectedToDate == null - ? "" - : Format.formatDate(_selectedToDate!); + _toDateString = _selectedToDate == null + ? "" + : Format.formatDate(_selectedToDate!); } - _fromDateString = - _selectedFromDate == null - ? "" - : Format.formatDate(_selectedFromDate!); + _fromDateString = _selectedFromDate == null + ? "" + : Format.formatDate(_selectedFromDate!); }); } } @@ -200,18 +194,16 @@ class _TransactionSearchViewState child: Container( width: width, decoration: BoxDecoration( - color: - Theme.of( - context, - ).extension()!.textFieldDefaultBG, + color: Theme.of( + context, + ).extension()!.textFieldDefaultBG, borderRadius: BorderRadius.circular( Constants.size.circularBorderRadius, ), border: Border.all( - color: - Theme.of( - context, - ).extension()!.textFieldDefaultBG, + color: Theme.of( + context, + ).extension()!.textFieldDefaultBG, width: 1, ), ), @@ -226,10 +218,9 @@ class _TransactionSearchViewState Assets.svg.calendar, height: 20, width: 20, - color: - Theme.of( - context, - ).extension()!.textSubtitle2, + color: Theme.of( + context, + ).extension()!.textSubtitle2, ), const SizedBox(width: 10), Align( @@ -279,15 +270,13 @@ class _TransactionSearchViewState setState(() { if (flag) { - _fromDateString = - _selectedFromDate == null - ? "" - : Format.formatDate(_selectedFromDate!); + _fromDateString = _selectedFromDate == null + ? "" + : Format.formatDate(_selectedFromDate!); } - _toDateString = - _selectedToDate == null - ? "" - : Format.formatDate(_selectedToDate!); + _toDateString = _selectedToDate == null + ? "" + : Format.formatDate(_selectedToDate!); }); } } @@ -295,18 +284,16 @@ class _TransactionSearchViewState child: Container( width: width, decoration: BoxDecoration( - color: - Theme.of( - context, - ).extension()!.textFieldDefaultBG, + color: Theme.of( + context, + ).extension()!.textFieldDefaultBG, borderRadius: BorderRadius.circular( Constants.size.circularBorderRadius, ), border: Border.all( - color: - Theme.of( - context, - ).extension()!.textFieldDefaultBG, + color: Theme.of( + context, + ).extension()!.textFieldDefaultBG, width: 1, ), ), @@ -321,10 +308,9 @@ class _TransactionSearchViewState Assets.svg.calendar, height: 20, width: 20, - color: - Theme.of( - context, - ).extension()!.textSubtitle2, + color: Theme.of( + context, + ).extension()!.textSubtitle2, ), const SizedBox(width: 10), Align( @@ -356,11 +342,13 @@ class _TransactionSearchViewState } else { return Background( child: Scaffold( - backgroundColor: - Theme.of(context).extension()!.background, + backgroundColor: Theme.of( + context, + ).extension()!.background, appBar: AppBar( - backgroundColor: - Theme.of(context).extension()!.background, + backgroundColor: Theme.of( + context, + ).extension()!.background, leading: AppBarBackButton( onPressed: () async { if (FocusScope.of(context).hasFocus) { @@ -472,14 +460,9 @@ class _TransactionSearchViewState children: [ Text( "Sent", - style: - isDesktop - ? STextStyles.desktopTextSmall( - context, - ) - : STextStyles.itemSubtitle12( - context, - ), + style: isDesktop + ? STextStyles.desktopTextSmall(context) + : STextStyles.itemSubtitle12(context), ), if (isDesktop) const SizedBox(height: 4), ], @@ -530,14 +513,9 @@ class _TransactionSearchViewState children: [ Text( "Received", - style: - isDesktop - ? STextStyles.desktopTextSmall( - context, - ) - : STextStyles.itemSubtitle12( - context, - ), + style: isDesktop + ? STextStyles.desktopTextSmall(context) + : STextStyles.itemSubtitle12(context), ), if (isDesktop) const SizedBox(height: 4), ], @@ -588,14 +566,9 @@ class _TransactionSearchViewState children: [ Text( "Trades", - style: - isDesktop - ? STextStyles.desktopTextSmall( - context, - ) - : STextStyles.itemSubtitle12( - context, - ), + style: isDesktop + ? STextStyles.desktopTextSmall(context) + : STextStyles.itemSubtitle12(context), ), if (isDesktop) const SizedBox(height: 4), ], @@ -617,10 +590,9 @@ class _TransactionSearchViewState child: FittedBox( child: Text( "Date", - style: - isDesktop - ? STextStyles.labelExtraExtraSmall(context) - : STextStyles.smallMed12(context), + style: isDesktop + ? STextStyles.labelExtraExtraSmall(context) + : STextStyles.smallMed12(context), ), ), ), @@ -632,10 +604,9 @@ class _TransactionSearchViewState child: FittedBox( child: Text( "Amount", - style: - isDesktop - ? STextStyles.labelExtraExtraSmall(context) - : STextStyles.smallMed12(context), + style: isDesktop + ? STextStyles.labelExtraExtraSmall(context) + : STextStyles.smallMed12(context), ), ), ), @@ -653,13 +624,12 @@ class _TransactionSearchViewState controller: _amountTextEditingController, focusNode: amountTextFieldFocusNode, onChanged: (_) => setState(() {}), - keyboardType: - Util.isDesktop - ? null - : const TextInputType.numberWithOptions( - signed: false, - decimal: true, - ), + keyboardType: Util.isDesktop + ? null + : const TextInputType.numberWithOptions( + signed: false, + decimal: true, + ), inputFormatters: [ AmountInputFormatter( decimals: widget.coin.fractionDigits, @@ -677,50 +647,47 @@ class _TransactionSearchViewState // ? newValue // : oldValue), ], - style: - isDesktop - ? STextStyles.desktopTextExtraSmall(context).copyWith( - color: - Theme.of( - context, - ).extension()!.textDark, - height: 1.8, - ) - : STextStyles.field(context), - decoration: standardInputDecoration( - "Enter ${widget.coin.ticker} amount...", - keywordTextFieldFocusNode, - context, - desktopMed: isDesktop, - ).copyWith( - contentPadding: - isDesktop + style: isDesktop + ? STextStyles.desktopTextExtraSmall(context).copyWith( + color: Theme.of( + context, + ).extension()!.textDark, + height: 1.8, + ) + : STextStyles.field(context), + decoration: + standardInputDecoration( + "Enter ${widget.coin.ticker} amount...", + keywordTextFieldFocusNode, + context, + desktopMed: isDesktop, + ).copyWith( + contentPadding: isDesktop ? const EdgeInsets.symmetric( - vertical: 10, - horizontal: 16, - ) + vertical: 10, + horizontal: 16, + ) : null, - suffixIcon: - _amountTextEditingController.text.isNotEmpty + suffixIcon: _amountTextEditingController.text.isNotEmpty ? Padding( - padding: const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - children: [ - TextFieldIconButton( - child: const XIcon(), - onTap: () async { - setState(() { - _amountTextEditingController.text = ""; - }); - }, - ), - ], + padding: const EdgeInsets.only(right: 0), + child: UnconstrainedBox( + child: Row( + children: [ + TextFieldIconButton( + child: const XIcon(), + onTap: () async { + setState(() { + _amountTextEditingController.text = ""; + }); + }, + ), + ], + ), ), - ), - ) + ) : null, - ), + ), ), ), ), @@ -730,10 +697,9 @@ class _TransactionSearchViewState child: FittedBox( child: Text( "Keyword", - style: - isDesktop - ? STextStyles.labelExtraExtraSmall(context) - : STextStyles.smallMed12(context), + style: isDesktop + ? STextStyles.labelExtraExtraSmall(context) + : STextStyles.smallMed12(context), ), ), ), @@ -750,51 +716,48 @@ class _TransactionSearchViewState key: const Key("transactionSearchViewKeywordFieldKey"), controller: _keywordTextEditingController, focusNode: keywordTextFieldFocusNode, - style: - isDesktop - ? STextStyles.desktopTextExtraSmall(context).copyWith( - color: - Theme.of( - context, - ).extension()!.textDark, - height: 1.8, - ) - : STextStyles.field(context), + style: isDesktop + ? STextStyles.desktopTextExtraSmall(context).copyWith( + color: Theme.of( + context, + ).extension()!.textDark, + height: 1.8, + ) + : STextStyles.field(context), onChanged: (_) => setState(() {}), - decoration: standardInputDecoration( - "Type keyword...", - keywordTextFieldFocusNode, - context, - desktopMed: isDesktop, - ).copyWith( - contentPadding: - isDesktop + decoration: + standardInputDecoration( + "Type keyword...", + keywordTextFieldFocusNode, + context, + desktopMed: isDesktop, + ).copyWith( + contentPadding: isDesktop ? const EdgeInsets.symmetric( - vertical: 10, - horizontal: 16, - ) + vertical: 10, + horizontal: 16, + ) : null, - suffixIcon: - _keywordTextEditingController.text.isNotEmpty + suffixIcon: _keywordTextEditingController.text.isNotEmpty ? Padding( - padding: const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - children: [ - TextFieldIconButton( - child: const XIcon(), - onTap: () async { - setState(() { - _keywordTextEditingController.text = ""; - }); - }, - ), - ], + padding: const EdgeInsets.only(right: 0), + child: UnconstrainedBox( + child: Row( + children: [ + TextFieldIconButton( + child: const XIcon(), + onTap: () async { + setState(() { + _keywordTextEditingController.text = ""; + }); + }, + ), + ], + ), ), - ), - ) + ) : null, - ), + ), ), ), ), @@ -887,14 +850,13 @@ class _TransactionSearchViewState final amountText = _amountTextEditingController.text; Amount? amount; if (amountText.isNotEmpty && !(amountText == "," || amountText == ".")) { - amount = - amountText.contains(",") - ? Decimal.parse( - amountText.replaceFirst(",", "."), - ).toAmount(fractionDigits: widget.coin.fractionDigits) - : Decimal.parse( - amountText, - ).toAmount(fractionDigits: widget.coin.fractionDigits); + amount = amountText.contains(",") + ? Decimal.parse( + amountText.replaceFirst(",", "."), + ).toAmount(fractionDigits: widget.coin.fractionDigits) + : Decimal.parse( + amountText, + ).toAmount(fractionDigits: widget.coin.fractionDigits); } final TransactionFilter filter = TransactionFilter( diff --git a/lib/pages/wallet_view/transaction_views/tx_v2/all_transactions_v2_view.dart b/lib/pages/wallet_view/transaction_views/tx_v2/all_transactions_v2_view.dart index 356d106f83..b08a37603f 100644 --- a/lib/pages/wallet_view/transaction_views/tx_v2/all_transactions_v2_view.dart +++ b/lib/pages/wallet_view/transaction_views/tx_v2/all_transactions_v2_view.dart @@ -52,8 +52,11 @@ import '../transaction_search_filter_view.dart'; import 'transaction_v2_card.dart'; import 'transaction_v2_details_view.dart' as tvd; -typedef _GroupedTransactions = - ({String label, DateTime startDate, List transactions}); +typedef _GroupedTransactions = ({ + String label, + DateTime startDate, + List transactions, +}); class AllTransactionsV2View extends ConsumerStatefulWidget { const AllTransactionsV2View({ @@ -106,14 +109,13 @@ class _AllTransactionsV2ViewState extends ConsumerState { // debugPrint("FILTER: $filter"); final contacts = ref.read(addressBookServiceProvider).contacts; - final notes = - ref - .read(mainDBProvider) - .isar - .transactionNotes - .where() - .walletIdEqualTo(walletId) - .findAllSync(); + final notes = ref + .read(mainDBProvider) + .isar + .transactionNotes + .where() + .walletIdEqualTo(walletId) + .findAllSync(); return transactions.where((tx) { if (!filter.sent && !filter.received) { @@ -159,25 +161,23 @@ class _AllTransactionsV2ViewState extends ConsumerState { bool contains = false; // check if address book name contains - contains |= - contacts - .where( - (e) => - e.addresses - .map((e) => e.address) - .toSet() - .intersection(tx.associatedAddresses()) - .isNotEmpty && - e.name.toLowerCase().contains(keyword), - ) - .isNotEmpty; + contains |= contacts + .where( + (e) => + e.addresses + .map((e) => e.address) + .toSet() + .intersection(tx.associatedAddresses()) + .isNotEmpty && + e.name.toLowerCase().contains(keyword), + ) + .isNotEmpty; // check if address contains - contains |= - tx - .associatedAddresses() - .where((e) => e.toLowerCase().contains(keyword)) - .isNotEmpty; + contains |= tx + .associatedAddresses() + .where((e) => e.toLowerCase().contains(keyword)) + .isNotEmpty; TransactionNote? note; final matchingNotes = notes.where((e) => e.txid == tx.txid); @@ -214,14 +214,13 @@ class _AllTransactionsV2ViewState extends ConsumerState { } text = text.toLowerCase(); final contacts = ref.read(addressBookServiceProvider).contacts; - final notes = - ref - .read(mainDBProvider) - .isar - .transactionNotes - .where() - .walletIdEqualTo(walletId) - .findAllSync(); + final notes = ref + .read(mainDBProvider) + .isar + .transactionNotes + .where() + .walletIdEqualTo(walletId) + .findAllSync(); return transactions .where((tx) => _isKeywordMatch(tx, text, contacts, notes)) @@ -258,94 +257,90 @@ class _AllTransactionsV2ViewState extends ConsumerState { return MasterScaffold( background: Theme.of(context).extension()!.background, isDesktop: isDesktop, - appBar: - isDesktop - ? DesktopAppBar( - isCompactHeight: true, - background: Theme.of(context).extension()!.popupBG, - leading: Row( - children: [ - const SizedBox(width: 32), - AppBarIconButton( - size: 32, - color: - Theme.of( - context, - ).extension()!.textFieldDefaultBG, + appBar: isDesktop + ? DesktopAppBar( + isCompactHeight: true, + background: Theme.of(context).extension()!.popupBG, + leading: Row( + children: [ + const SizedBox(width: 32), + AppBarIconButton( + size: 32, + color: Theme.of( + context, + ).extension()!.textFieldDefaultBG, + shadows: const [], + icon: SvgPicture.asset( + Assets.svg.arrowLeft, + width: 18, + height: 18, + color: Theme.of( + context, + ).extension()!.topNavIconPrimary, + ), + onPressed: Navigator.of(context).pop, + ), + const SizedBox(width: 12), + Text("Transactions", style: STextStyles.desktopH3(context)), + ], + ), + ) + : AppBar( + backgroundColor: Theme.of( + context, + ).extension()!.background, + leading: AppBarBackButton( + onPressed: () async { + if (FocusScope.of(context).hasFocus) { + FocusScope.of(context).unfocus(); + await Future.delayed( + const Duration(milliseconds: 75), + ); + } + if (context.mounted) { + Navigator.of(context).pop(); + } + }, + ), + title: Text( + "Transactions", + style: STextStyles.navBarTitle(context), + ), + actions: [ + Padding( + padding: const EdgeInsets.only( + top: 10, + bottom: 10, + right: 20, + ), + child: AspectRatio( + aspectRatio: 1, + child: AppBarIconButton( + key: const Key("transactionSearchFilterViewButton"), + size: 36, shadows: const [], + color: Theme.of( + context, + ).extension()!.background, icon: SvgPicture.asset( - Assets.svg.arrowLeft, - width: 18, - height: 18, - color: - Theme.of( - context, - ).extension()!.topNavIconPrimary, - ), - onPressed: Navigator.of(context).pop, - ), - const SizedBox(width: 12), - Text("Transactions", style: STextStyles.desktopH3(context)), - ], - ), - ) - : AppBar( - backgroundColor: - Theme.of(context).extension()!.background, - leading: AppBarBackButton( - onPressed: () async { - if (FocusScope.of(context).hasFocus) { - FocusScope.of(context).unfocus(); - await Future.delayed( - const Duration(milliseconds: 75), - ); - } - if (context.mounted) { - Navigator.of(context).pop(); - } - }, - ), - title: Text( - "Transactions", - style: STextStyles.navBarTitle(context), - ), - actions: [ - Padding( - padding: const EdgeInsets.only( - top: 10, - bottom: 10, - right: 20, - ), - child: AspectRatio( - aspectRatio: 1, - child: AppBarIconButton( - key: const Key("transactionSearchFilterViewButton"), - size: 36, - shadows: const [], - color: - Theme.of( - context, - ).extension()!.background, - icon: SvgPicture.asset( - Assets.svg.filter, - color: - Theme.of( - context, - ).extension()!.accentColorDark, - width: 20, - height: 20, - ), - onPressed: () { - Navigator.of(context).pushNamed( - TransactionSearchFilterView.routeName, - arguments: ref.read(pWalletCoin(walletId)), - ); - }, + Assets.svg.filter, + color: Theme.of( + context, + ).extension()!.accentColorDark, + width: 20, + height: 20, ), + onPressed: () { + Navigator.of(context).pushNamed( + TransactionSearchFilterView.routeName, + arguments: ref.read(pWalletCoin(walletId)), + ); + }, ), ), - ], - ), + ), + ], + ), body: Padding( padding: EdgeInsets.only( left: isDesktop ? 20 : 12, @@ -378,57 +373,57 @@ class _AllTransactionsV2ViewState extends ConsumerState { _searchString = value; }); }, - style: - isDesktop - ? STextStyles.desktopTextExtraSmall( - context, - ).copyWith( - color: - Theme.of(context) - .extension()! - .textFieldActiveText, - height: 1.8, - ) - : STextStyles.field(context), - decoration: standardInputDecoration( - "Search...", - searchFieldFocusNode, - context, - desktopMed: isDesktop, - ).copyWith( - prefixIcon: Padding( - padding: EdgeInsets.symmetric( - horizontal: isDesktop ? 12 : 10, - vertical: isDesktop ? 18 : 16, - ), - child: SvgPicture.asset( - Assets.svg.search, - width: isDesktop ? 20 : 16, - height: isDesktop ? 20 : 16, - ), - ), - suffixIcon: - _searchController.text.isNotEmpty + style: isDesktop + ? STextStyles.desktopTextExtraSmall( + context, + ).copyWith( + color: Theme.of(context) + .extension()! + .textFieldActiveText, + height: 1.8, + ) + : STextStyles.field(context), + decoration: + standardInputDecoration( + "Search...", + searchFieldFocusNode, + context, + desktopMed: isDesktop, + ).copyWith( + prefixIcon: Padding( + padding: EdgeInsets.symmetric( + horizontal: isDesktop ? 12 : 10, + vertical: isDesktop ? 18 : 16, + ), + child: SvgPicture.asset( + Assets.svg.search, + width: isDesktop ? 20 : 16, + height: isDesktop ? 20 : 16, + ), + ), + suffixIcon: _searchController.text.isNotEmpty ? Padding( - padding: const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - children: [ - TextFieldIconButton( - child: const XIcon(), - onTap: () async { - setState(() { - _searchController.text = ""; - _searchString = ""; - }); - }, - ), - ], + padding: const EdgeInsets.only( + right: 0, ), - ), - ) + child: UnconstrainedBox( + child: Row( + children: [ + TextFieldIconButton( + child: const XIcon(), + onTap: () async { + setState(() { + _searchController.text = ""; + _searchString = ""; + }); + }, + ), + ], + ), + ), + ) : null, - ), + ), ), ), ), @@ -441,10 +436,9 @@ class _AllTransactionsV2ViewState extends ConsumerState { label: "Filter", icon: SvgPicture.asset( Assets.svg.filter, - color: - Theme.of( - context, - ).extension()!.accentColorDark, + color: Theme.of( + context, + ).extension()!.accentColorDark, width: 20, height: 20, ), @@ -480,39 +474,38 @@ class _AllTransactionsV2ViewState extends ConsumerState { Expanded( child: Consumer( builder: (_, ref, __) { - final criteria = - ref.watch(transactionFilterProvider.state).state; + final criteria = ref + .watch(transactionFilterProvider.state) + .state; return FutureBuilder( - future: - ref - .watch(mainDBProvider) - .isar - .transactionV2s - .buildQuery( - whereClauses: [ - IndexWhereClause.equalTo( - indexName: 'walletId', - value: [widget.walletId], - ), - ], - filter: - widget.contractAddress == null - ? ref - .watch(pWallets) - .getWallet(widget.walletId) - .transactionFilterOperation - : ref - .read(pCurrentTokenWallet)! - .transactionFilterOperation, - sortBy: [ - const SortProperty( - property: "timestamp", - sort: Sort.desc, - ), - ], - ) - .findAll(), + future: ref + .watch(mainDBProvider) + .isar + .transactionV2s + .buildQuery( + whereClauses: [ + IndexWhereClause.equalTo( + indexName: 'walletId', + value: [widget.walletId], + ), + ], + filter: widget.contractAddress == null + ? ref + .watch(pWallets) + .getWallet(widget.walletId) + .transactionFilterOperation + : ref + .read(pCurrentTokenWallet)! + .transactionFilterOperation, + sortBy: [ + const SortProperty( + property: "timestamp", + sort: Sort.desc, + ), + ], + ) + .findAll(), builder: (_, AsyncSnapshot> snapshot) { if (snapshot.connectionState == ConnectionState.done && snapshot.hasData) { @@ -553,27 +546,25 @@ class _AllTransactionsV2ViewState extends ConsumerState { child: ListView.separated( shrinkWrap: true, primary: false, - separatorBuilder: - (context, _) => Container( + separatorBuilder: (context, _) => + Container( height: 1, - color: - Theme.of(context) - .extension()! - .background, + color: Theme.of(context) + .extension()! + .background, ), itemCount: month.transactions.length, - itemBuilder: - (context, index) => Padding( - padding: const EdgeInsets.all(4), - child: DesktopTransactionCardRow( - key: Key( - "transactionCard_key_${month.transactions[index].txid}", - ), - transaction: - month.transactions[index], - walletId: walletId, - ), + itemBuilder: (context, index) => Padding( + padding: const EdgeInsets.all(4), + child: DesktopTransactionCardRow( + key: Key( + "transactionCard_key_${month.transactions[index].txid}", ), + transaction: + month.transactions[index], + walletId: walletId, + ), + ), ), ), if (!isDesktop) @@ -785,8 +776,9 @@ class TransactionFilterOptionBarItem extends StatelessWidget { child: Container( height: 32, decoration: BoxDecoration( - color: - Theme.of(context).extension()!.buttonBackSecondary, + color: Theme.of( + context, + ).extension()!.buttonBackSecondary, borderRadius: BorderRadius.circular(1000), ), child: Padding( @@ -802,8 +794,9 @@ class TransactionFilterOptionBarItem extends StatelessWidget { label, textAlign: TextAlign.center, style: STextStyles.labelExtraExtraSmall(context).copyWith( - color: - Theme.of(context).extension()!.textDark, + color: Theme.of( + context, + ).extension()!.textDark, ), ), ), @@ -849,23 +842,21 @@ class _DesktopTransactionCardRowState String whatIsIt(TransactionV2 tx, int height) => tx.statusLabel( currentChainHeight: height, minConfirms: minConfirms, - minCoinbaseConfirms: - ref - .read(pWallets) - .getWallet(widget.walletId) - .cryptoCurrency - .minCoinbaseConfirms, + minCoinbaseConfirms: ref + .read(pWallets) + .getWallet(widget.walletId) + .cryptoCurrency + .minCoinbaseConfirms, ); @override void initState() { walletId = widget.walletId; - minConfirms = - ref - .read(pWallets) - .getWallet(widget.walletId) - .cryptoCurrency - .minConfirms; + minConfirms = ref + .read(pWallets) + .getWallet(widget.walletId) + .cryptoCurrency + .minConfirms; _transaction = widget.transaction; if (_transaction.subType == TransactionSubType.ethToken) { @@ -897,10 +888,9 @@ class _DesktopTransactionCardRowState )) { price = ref.watch( priceAnd24hChangeNotifierProvider.select( - (value) => - isTokenTx - ? value.getTokenPrice(_transaction.contractAddress!)?.value - : value.getPrice(coin)?.value, + (value) => isTokenTx + ? value.getTokenPrice(_transaction.contractAddress!)?.value + : value.getPrice(coin)?.value, ), ); } @@ -987,16 +977,15 @@ class _DesktopTransactionCardRowState if (Util.isDesktop) { await showDialog( context: context, - builder: - (context) => DesktopDialog( - maxHeight: MediaQuery.of(context).size.height - 64, - maxWidth: 580, - child: tvd.TransactionV2DetailsView( - transaction: _transaction, - coin: coin, - walletId: walletId, - ), - ), + builder: (context) => DesktopDialog( + maxHeight: MediaQuery.of(context).size.height - 64, + maxWidth: 580, + child: tvd.TransactionV2DetailsView( + transaction: _transaction, + coin: coin, + walletId: walletId, + ), + ), ); } else { unawaited( @@ -1021,11 +1010,12 @@ class _DesktopTransactionCardRowState flex: 3, child: Text( whatIsIt(_transaction, currentHeight), - style: STextStyles.desktopTextExtraExtraSmall( - context, - ).copyWith( - color: Theme.of(context).extension()!.textDark, - ), + style: STextStyles.desktopTextExtraExtraSmall(context) + .copyWith( + color: Theme.of( + context, + ).extension()!.textDark, + ), ), ), if (kDebugMode) @@ -1047,11 +1037,12 @@ class _DesktopTransactionCardRowState flex: 6, child: Text( "$prefix${ref.watch(pAmountFormatter(coin)).format(amount, ethContract: ethContract)}", - style: STextStyles.desktopTextExtraExtraSmall( - context, - ).copyWith( - color: Theme.of(context).extension()!.textDark, - ), + style: STextStyles.desktopTextExtraExtraSmall(context) + .copyWith( + color: Theme.of( + context, + ).extension()!.textDark, + ), ), ), if (price != null) @@ -1066,8 +1057,9 @@ class _DesktopTransactionCardRowState Assets.svg.circleInfo, width: 20, height: 20, - color: - Theme.of(context).extension()!.textSubtitle2, + color: Theme.of( + context, + ).extension()!.textSubtitle2, ), ], ), diff --git a/lib/pages/wallet_view/transaction_views/tx_v2/transaction_v2_card.dart b/lib/pages/wallet_view/transaction_views/tx_v2/transaction_v2_card.dart index a8b30fd5ae..68b17eac7c 100644 --- a/lib/pages/wallet_view/transaction_views/tx_v2/transaction_v2_card.dart +++ b/lib/pages/wallet_view/transaction_views/tx_v2/transaction_v2_card.dart @@ -49,22 +49,20 @@ class _TransactionCardStateV2 extends ConsumerState { String whatIsIt(CryptoCurrency coin, int currentHeight) => _transaction.isCancelled && coin is Ethereum - ? "Failed" - : _transaction.statusLabel( - currentChainHeight: currentHeight, - minConfirms: - ref - .read(pWallets) - .getWallet(walletId) - .cryptoCurrency - .minConfirms, - minCoinbaseConfirms: - ref - .read(pWallets) - .getWallet(walletId) - .cryptoCurrency - .minCoinbaseConfirms, - ); + ? "Failed" + : _transaction.statusLabel( + currentChainHeight: currentHeight, + minConfirms: ref + .read(pWallets) + .getWallet(walletId) + .cryptoCurrency + .minConfirms, + minCoinbaseConfirms: ref + .read(pWallets) + .getWallet(walletId) + .cryptoCurrency + .minCoinbaseConfirms, + ); @override void initState() { @@ -115,10 +113,9 @@ class _TransactionCardStateV2 extends ConsumerState { )) { price = ref.watch( priceAnd24hChangeNotifierProvider.select( - (value) => - isTokenTx - ? value.getTokenPrice(tokenContract!.address)?.value - : value.getPrice(coin)?.value, + (value) => isTokenTx + ? value.getTokenPrice(tokenContract!.address)?.value + : value.getPrice(coin)?.value, ), ); } @@ -196,16 +193,15 @@ class _TransactionCardStateV2 extends ConsumerState { if (Util.isDesktop) { await showDialog( context: context, - builder: - (context) => DesktopDialog( - maxHeight: MediaQuery.of(context).size.height - 64, - maxWidth: 580, - child: tvd.TransactionV2DetailsView( - transaction: _transaction, - coin: coin, - walletId: walletId, - ), - ), + builder: (context) => DesktopDialog( + maxHeight: MediaQuery.of(context).size.height - 64, + maxWidth: 580, + child: tvd.TransactionV2DetailsView( + transaction: _transaction, + coin: coin, + walletId: walletId, + ), + ), ); } else { unawaited( @@ -246,15 +242,14 @@ class _TransactionCardStateV2 extends ConsumerState { coin.minConfirms, coin.minCoinbaseConfirms, ), - builder: - (child) => Row( - children: [ - child, + builder: (child) => Row( + children: [ + child, - const SizedBox(width: 10), - const CoinTickerTag(ticker: "INSTANT"), - ], - ), + const SizedBox(width: 10), + const CoinTickerTag(ticker: "INSTANT"), + ], + ), child: Text( whatIsIt(coin, currentHeight), style: STextStyles.itemSubtitle12(context), diff --git a/lib/pages/wallet_view/transaction_views/tx_v2/transaction_v2_list.dart b/lib/pages/wallet_view/transaction_views/tx_v2/transaction_v2_list.dart index 9acb8b7051..e2b3462eba 100644 --- a/lib/pages/wallet_view/transaction_views/tx_v2/transaction_v2_list.dart +++ b/lib/pages/wallet_view/transaction_views/tx_v2/transaction_v2_list.dart @@ -73,11 +73,10 @@ class _TransactionsV2ListState extends ConsumerState { value: [widget.walletId], ), ], - filter: - ref - .read(pWallets) - .getWallet(widget.walletId) - .transactionFilterOperation, + filter: ref + .read(pWallets) + .getWallet(widget.walletId) + .transactionFilterOperation, sortBy: [const SortProperty(property: "timestamp", sort: Sort.desc)], ); @@ -172,66 +171,64 @@ class _TransactionsV2ListState extends ConsumerState { onRefresh: () async { await ref.read(pWallets).getWallet(widget.walletId).refresh(); }, - child: - Util.isDesktop - ? ListView.separated( - shrinkWrap: true, - itemBuilder: (context, index) { - BorderRadius? radius; - if (_txns.length == 1) { - radius = BorderRadius.circular( - Constants.size.circularBorderRadius, - ); - } else if (index == _txns.length - 1) { - radius = _borderRadiusLast; - } else if (index == 0) { - radius = _borderRadiusFirst; - } - final tx = _txns[index]; - return TxListItem(tx: tx, coin: coin, radius: radius); - }, - separatorBuilder: (context, index) { - return Container( - width: double.infinity, - height: 2, - color: - Theme.of( - context, - ).extension()!.background, + child: Util.isDesktop + ? ListView.separated( + shrinkWrap: true, + itemBuilder: (context, index) { + BorderRadius? radius; + if (_txns.length == 1) { + radius = BorderRadius.circular( + Constants.size.circularBorderRadius, + ); + } else if (index == _txns.length - 1) { + radius = _borderRadiusLast; + } else if (index == 0) { + radius = _borderRadiusFirst; + } + final tx = _txns[index]; + return TxListItem(tx: tx, coin: coin, radius: radius); + }, + separatorBuilder: (context, index) { + return Container( + width: double.infinity, + height: 2, + color: Theme.of( + context, + ).extension()!.background, + ); + }, + itemCount: _txns.length, + ) + : ListView.builder( + itemCount: _txns.length, + itemBuilder: (context, index) { + BorderRadius? radius; + bool shouldWrap = false; + if (_txns.length == 1) { + radius = BorderRadius.circular( + Constants.size.circularBorderRadius, ); - }, - itemCount: _txns.length, - ) - : ListView.builder( - itemCount: _txns.length, - itemBuilder: (context, index) { - BorderRadius? radius; - bool shouldWrap = false; - if (_txns.length == 1) { - radius = BorderRadius.circular( - Constants.size.circularBorderRadius, - ); - } else if (index == _txns.length - 1) { - radius = _borderRadiusLast; - shouldWrap = true; - } else if (index == 0) { - radius = _borderRadiusFirst; - } - final tx = _txns[index]; - if (shouldWrap) { - return Column( - children: [ - TxListItem(tx: tx, coin: coin, radius: radius), - const SizedBox( - height: WalletView.navBarHeight + 14, - ), - ], - ); - } else { - return TxListItem(tx: tx, coin: coin, radius: radius); - } - }, - ), + } else if (index == _txns.length - 1) { + radius = _borderRadiusLast; + shouldWrap = true; + } else if (index == 0) { + radius = _borderRadiusFirst; + } + final tx = _txns[index]; + if (shouldWrap) { + return Column( + children: [ + TxListItem(tx: tx, coin: coin, radius: radius), + const SizedBox( + height: WalletView.navBarHeight + 14, + ), + ], + ); + } else { + return TxListItem(tx: tx, coin: coin, radius: radius); + } + }, + ), ); } }, diff --git a/lib/pages/wallet_view/transaction_views/tx_v2/transaction_v2_list_item.dart b/lib/pages/wallet_view/transaction_views/tx_v2/transaction_v2_list_item.dart index 0ae6414010..d7ac0ddb0f 100644 --- a/lib/pages/wallet_view/transaction_views/tx_v2/transaction_v2_list_item.dart +++ b/lib/pages/wallet_view/transaction_views/tx_v2/transaction_v2_list_item.dart @@ -54,10 +54,7 @@ class TxListItem extends ConsumerWidget { child: Column( mainAxisSize: MainAxisSize.min, children: [ - TransactionCardV2( - key: UniqueKey(), - transaction: _tx, - ), + TransactionCardV2(key: UniqueKey(), transaction: _tx), TradeCard( key: Key( _tx.txid + @@ -94,7 +91,8 @@ class TxListItem extends ConsumerWidget { Text( "Trade details", style: STextStyles.desktopH3( - context), + context, + ), ), DesktopDialogCloseButton( onPressedOverride: Navigator.of( @@ -111,8 +109,9 @@ class TxListItem extends ConsumerWidget { // TODO: [prio:med] // transactionIfSentFromStack: tx, transactionIfSentFromStack: null, - walletName: ref - .watch(pWalletName(_tx.walletId)), + walletName: ref.watch( + pWalletName(_tx.walletId), + ), walletId: _tx.walletId, ), ), @@ -171,10 +170,7 @@ class TxListItem extends ConsumerWidget { borderRadius: radius, ), child: Breathing( - child: FusionTxGroupCard( - key: UniqueKey(), - group: group, - ), + child: FusionTxGroupCard(key: UniqueKey(), group: group), ), ); } diff --git a/lib/pages/wallets_view/sub_widgets/wallet_list_item.dart b/lib/pages/wallets_view/sub_widgets/wallet_list_item.dart index 64d9ecbc9f..890edb20f5 100644 --- a/lib/pages/wallets_view/sub_widgets/wallet_list_item.dart +++ b/lib/pages/wallets_view/sub_widgets/wallet_list_item.dart @@ -44,8 +44,9 @@ class WalletListItem extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { // debugPrint("BUILD: $runtimeType"); - final walletCountString = - walletCount == 1 ? "$walletCount wallet" : "$walletCount wallets"; + final walletCountString = walletCount == 1 + ? "$walletCount wallet" + : "$walletCount wallets"; final currency = ref.watch( prefsChangeNotifierProvider.select((value) => value.currency), ); @@ -139,8 +140,9 @@ class WalletListItem extends ConsumerWidget { Expanded( child: Consumer( builder: (_, ref, __) { - Color percentChangedColor = - Theme.of(context).extension()!.textDark; + Color percentChangedColor = Theme.of( + context, + ).extension()!.textDark; String? priceString; double? percentChange; if (ref.watch( @@ -165,15 +167,13 @@ class WalletListItem extends ConsumerWidget { percentChange = price.change24h; if (percentChange > 0) { - percentChangedColor = - Theme.of( - context, - ).extension()!.accentColorGreen; + percentChangedColor = Theme.of( + context, + ).extension()!.accentColorGreen; } else if (percentChange < 0) { - percentChangedColor = - Theme.of( - context, - ).extension()!.accentColorRed; + percentChangedColor = Theme.of( + context, + ).extension()!.accentColorRed; } } } diff --git a/lib/pages_desktop_specific/address_book_view/desktop_address_book.dart b/lib/pages_desktop_specific/address_book_view/desktop_address_book.dart index f27147cb3f..d2d4ccfe03 100644 --- a/lib/pages_desktop_specific/address_book_view/desktop_address_book.dart +++ b/lib/pages_desktop_specific/address_book_view/desktop_address_book.dart @@ -99,17 +99,18 @@ class _DesktopAddressBook extends ConsumerState { // if (widget.coin == null) { final coins = AppConfig.coins.toList(); - coins.removeWhere( - (e) => e is Firo && e.network.isTestNet, - ); + coins.removeWhere((e) => e is Firo && e.network.isTestNet); - final bool showTestNet = - ref.read(prefsChangeNotifierProvider).showTestNetCoins; + final bool showTestNet = ref + .read(prefsChangeNotifierProvider) + .showTestNetCoins; if (showTestNet) { ref.read(addressBookFilterProvider).addAll(coins, false); } else { - ref.read(addressBookFilterProvider).addAll( + ref + .read(addressBookFilterProvider) + .addAll( coins.where((e) => e.network != CryptoCurrencyNetwork.test), false, ); @@ -166,8 +167,9 @@ class _DesktopAddressBook extends ConsumerState { @override Widget build(BuildContext context) { debugPrint("BUILD: $runtimeType"); - final contacts = - ref.watch(addressBookServiceProvider.select((value) => value.contacts)); + final contacts = ref.watch( + addressBookServiceProvider.select((value) => value.contacts), + ); final allContacts = contacts .where( @@ -176,8 +178,9 @@ class _DesktopAddressBook extends ConsumerState { element.addresses .where( (e) => ref.watch( - addressBookFilterProvider - .select((value) => value.coins.contains(e.coin)), + addressBookFilterProvider.select( + (value) => value.coins.contains(e.coin), + ), ), ) .isNotEmpty, @@ -194,8 +197,9 @@ class _DesktopAddressBook extends ConsumerState { element.addresses .where( (e) => ref.watch( - addressBookFilterProvider - .select((value) => value.coins.contains(e.coin)), + addressBookFilterProvider.select( + (value) => value.coins.contains(e.coin), + ), ), ) .isNotEmpty, @@ -213,22 +217,13 @@ class _DesktopAddressBook extends ConsumerState { isCompactHeight: true, leading: Row( children: [ - const SizedBox( - width: 24, - ), - Text( - "Address Book", - style: STextStyles.desktopH3(context), - ), + const SizedBox(width: 24), + Text("Address Book", style: STextStyles.desktopH3(context)), ], ), ), body: Padding( - padding: const EdgeInsets.only( - left: 24, - right: 24, - bottom: 24, - ), + padding: const EdgeInsets.only(left: 24, right: 24, bottom: 24), child: DesktopAddressBookScaffold( controlsLeft: ClipRRect( borderRadius: BorderRadius.circular( @@ -245,43 +240,44 @@ class _DesktopAddressBook extends ConsumerState { }); }, style: STextStyles.field(context), - decoration: standardInputDecoration( - "Search", - _searchFocusNode, - context, - ).copyWith( - prefixIcon: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 10, - vertical: 20, - ), - child: SvgPicture.asset( - Assets.svg.search, - width: 16, - height: 16, - ), - ), - suffixIcon: _searchController.text.isNotEmpty - ? Padding( - padding: const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - children: [ - TextFieldIconButton( - child: const XIcon(), - onTap: () async { - setState(() { - _searchController.text = ""; - _searchTerm = ""; - }); - }, + decoration: + standardInputDecoration( + "Search", + _searchFocusNode, + context, + ).copyWith( + prefixIcon: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 10, + vertical: 20, + ), + child: SvgPicture.asset( + Assets.svg.search, + width: 16, + height: 16, + ), + ), + suffixIcon: _searchController.text.isNotEmpty + ? Padding( + padding: const EdgeInsets.only(right: 0), + child: UnconstrainedBox( + child: Row( + children: [ + TextFieldIconButton( + child: const XIcon(), + onTap: () async { + setState(() { + _searchController.text = ""; + _searchTerm = ""; + }); + }, + ), + ], ), - ], - ), - ), - ) - : null, - ), + ), + ) + : null, + ), ), ), controlsRight: Row( @@ -293,24 +289,22 @@ class _DesktopAddressBook extends ConsumerState { buttonHeight: ButtonHeight.l, icon: SvgPicture.asset( Assets.svg.filter, - color: Theme.of(context) - .extension()! - .buttonTextSecondary, + color: Theme.of( + context, + ).extension()!.buttonTextSecondary, ), onPressed: selectCryptocurrency, ), - const SizedBox( - width: 20, - ), + const SizedBox(width: 20), PrimaryButton( width: 184, label: "Add new", buttonHeight: ButtonHeight.l, icon: SvgPicture.asset( Assets.svg.circlePlus, - color: Theme.of(context) - .extension()! - .buttonTextPrimary, + color: Theme.of( + context, + ).extension()!.buttonTextPrimary, ), onPressed: newContact, ), @@ -326,10 +320,7 @@ class _DesktopAddressBook extends ConsumerState { lowerLabel: favorites.isEmpty ? null : Padding( - padding: const EdgeInsets.only( - top: 20, - bottom: 12, - ), + padding: const EdgeInsets.only(top: 20, bottom: 12), child: Text( "All contacts", style: STextStyles.smallMed12(context), @@ -337,15 +328,15 @@ class _DesktopAddressBook extends ConsumerState { ), favorites: favorites.isEmpty ? contacts.isNotEmpty - ? null - : RoundedWhiteContainer( - child: Center( - child: Text( - "Your favorite contacts will appear here", - style: STextStyles.itemSubtitle(context), + ? null + : RoundedWhiteContainer( + child: Center( + child: Text( + "Your favorite contacts will appear here", + style: STextStyles.itemSubtitle(context), + ), ), - ), - ) + ) : RoundedWhiteContainer( padding: const EdgeInsets.all(0), child: Column( @@ -355,9 +346,9 @@ class _DesktopAddressBook extends ConsumerState { children: [ if (i > 0) Container( - color: Theme.of(context) - .extension()! - .background, + color: Theme.of( + context, + ).extension()!.background, height: 1, ), Padding( @@ -406,15 +397,15 @@ class _DesktopAddressBook extends ConsumerState { ), all: allContacts.isEmpty ? contacts.isNotEmpty - ? null - : RoundedWhiteContainer( - child: Center( - child: Text( - "Your contacts will appear here", - style: STextStyles.itemSubtitle(context), + ? null + : RoundedWhiteContainer( + child: Center( + child: Text( + "Your contacts will appear here", + style: STextStyles.itemSubtitle(context), + ), ), - ), - ) + ) : Column( children: [ RoundedWhiteContainer( @@ -426,9 +417,9 @@ class _DesktopAddressBook extends ConsumerState { children: [ if (i > 0) Container( - color: Theme.of(context) - .extension()! - .background, + color: Theme.of( + context, + ).extension()!.background, height: 1, ), Padding( @@ -481,9 +472,7 @@ class _DesktopAddressBook extends ConsumerState { ), details: currentContactId == null ? Container() - : DesktopContactDetails( - contactId: currentContactId!, - ), + : DesktopContactDetails(contactId: currentContactId!), ), ), ); diff --git a/lib/pages_desktop_specific/desktop_exchange/exchange_steps/step_scaffold.dart b/lib/pages_desktop_specific/desktop_exchange/exchange_steps/step_scaffold.dart index 23e925c0c3..11c7d95e52 100644 --- a/lib/pages_desktop_specific/desktop_exchange/exchange_steps/step_scaffold.dart +++ b/lib/pages_desktop_specific/desktop_exchange/exchange_steps/step_scaffold.dart @@ -80,19 +80,18 @@ class _StepScaffoldState extends ConsumerState { showDialog( context: context, barrierDismissible: false, - builder: - (_) => WillPopScope( - onWillPop: () async => false, - child: Container( - color: Theme.of( - context, - ).extension()!.overlay.withOpacity(0.6), - child: const CustomLoadingOverlay( - message: "Creating a trade", - eventBus: null, - ), - ), + builder: (_) => WillPopScope( + onWillPop: () async => false, + child: Container( + color: Theme.of( + context, + ).extension()!.overlay.withOpacity(0.6), + child: const CustomLoadingOverlay( + message: "Creating a trade", + eventBus: null, ), + ), + ), ), ); @@ -100,18 +99,21 @@ class _StepScaffoldState extends ConsumerState { .read(efExchangeProvider) .createTrade( from: ref.read(desktopExchangeModelProvider)!.sendTicker, - fromNetwork: - ref.read(desktopExchangeModelProvider)!.sendCurrency.network, + fromNetwork: ref + .read(desktopExchangeModelProvider)! + .sendCurrency + .network, to: ref.read(desktopExchangeModelProvider)!.receiveTicker, - toNetwork: - ref.read(desktopExchangeModelProvider)!.receiveCurrency.network, + toNetwork: ref + .read(desktopExchangeModelProvider)! + .receiveCurrency + .network, fixedRate: ref.read(desktopExchangeModelProvider)!.rateType != ExchangeRateType.estimated, - amount: - ref.read(desktopExchangeModelProvider)!.reversed - ? ref.read(desktopExchangeModelProvider)!.receiveAmount - : ref.read(desktopExchangeModelProvider)!.sendAmount, + amount: ref.read(desktopExchangeModelProvider)!.reversed + ? ref.read(desktopExchangeModelProvider)!.receiveAmount + : ref.read(desktopExchangeModelProvider)!.sendAmount, addressTo: ref.read(desktopExchangeModelProvider)!.recipientAddress!, extraId: null, addressRefund: ref.read(desktopExchangeModelProvider)!.refundAddress!, @@ -138,11 +140,10 @@ class _StepScaffoldState extends ConsumerState { showDialog( context: context, barrierDismissible: true, - builder: - (_) => SimpleDesktopDialog( - title: "Failed to create trade", - message: message ?? "", - ), + builder: (_) => SimpleDesktopDialog( + title: "Failed to create trade", + message: message ?? "", + ), ), ); } @@ -222,26 +223,25 @@ class _StepScaffoldState extends ConsumerState { showDialog( context: context, - builder: - (context) => Navigator( - initialRoute: SendFromView.routeName, - onGenerateRoute: RouteGenerator.generateRoute, - onGenerateInitialRoutes: (_, __) { - return [ - FadePageRoute( - SendFromView( - coin: coin, - trade: trade, - amount: amount, - address: address, - shouldPopRoot: true, - fromDesktopStep4: true, - ), - const RouteSettings(name: SendFromView.routeName), - ), - ]; - }, - ), + builder: (context) => Navigator( + initialRoute: SendFromView.routeName, + onGenerateRoute: RouteGenerator.generateRoute, + onGenerateInitialRoutes: (_, __) { + return [ + FadePageRoute( + SendFromView( + coin: coin, + trade: trade, + amount: amount, + address: address, + shouldPopRoot: true, + fromDesktopStep4: true, + ), + const RouteSettings(name: SendFromView.routeName), + ), + ]; + }, + ), ); } @@ -297,10 +297,10 @@ class _StepScaffoldState extends ConsumerState { children: [ currentStep != 4 ? AppBarBackButton( - isCompact: true, - iconSize: 23, - onPressed: onBack, - ) + isCompact: true, + iconSize: 23, + onPressed: onBack, + ) : const SizedBox(width: 32), Text( "Exchange ${model?.sendTicker.toUpperCase()} to ${model?.receiveTicker.toUpperCase()}", @@ -345,39 +345,36 @@ class _StepScaffoldState extends ConsumerState { children: [ canSendFromStack ? Expanded( - child: AnimatedCrossFade( - duration: const Duration(milliseconds: 250), - crossFadeState: - currentStep == 4 - ? CrossFadeState.showSecond - : CrossFadeState.showFirst, - firstChild: SecondaryButton( - label: "Back", - buttonHeight: ButtonHeight.l, - onPressed: onBack, - ), - secondChild: SecondaryButton( - label: "Send from ${AppConfig.appName}", - buttonHeight: ButtonHeight.l, - onPressed: sendFromStack, + child: AnimatedCrossFade( + duration: const Duration(milliseconds: 250), + crossFadeState: currentStep == 4 + ? CrossFadeState.showSecond + : CrossFadeState.showFirst, + firstChild: SecondaryButton( + label: "Back", + buttonHeight: ButtonHeight.l, + onPressed: onBack, + ), + secondChild: SecondaryButton( + label: "Send from ${AppConfig.appName}", + buttonHeight: ButtonHeight.l, + onPressed: sendFromStack, + ), ), - ), - ) + ) : const Spacer(), const SizedBox(width: 16), Expanded( child: AnimatedCrossFade( duration: const Duration(milliseconds: 250), - crossFadeState: - currentStep == 4 - ? CrossFadeState.showSecond - : CrossFadeState.showFirst, + crossFadeState: currentStep == 4 + ? CrossFadeState.showSecond + : CrossFadeState.showFirst, firstChild: AnimatedCrossFade( duration: const Duration(milliseconds: 250), - crossFadeState: - currentStep == 3 - ? CrossFadeState.showSecond - : CrossFadeState.showFirst, + crossFadeState: currentStep == 3 + ? CrossFadeState.showSecond + : CrossFadeState.showFirst, firstChild: PrimaryButton( label: "Next", enabled: currentStep != 2 ? true : enableNext, diff --git a/lib/pages_desktop_specific/desktop_exchange/exchange_steps/subwidgets/desktop_step_2.dart b/lib/pages_desktop_specific/desktop_exchange/exchange_steps/subwidgets/desktop_step_2.dart index c7ba641cab..5a547d4b4b 100644 --- a/lib/pages_desktop_specific/desktop_exchange/exchange_steps/subwidgets/desktop_step_2.dart +++ b/lib/pages_desktop_specific/desktop_exchange/exchange_steps/subwidgets/desktop_step_2.dart @@ -59,23 +59,21 @@ class _DesktopStep2State extends ConsumerState { void selectRecipientAddressFromStack() async { try { - final coin = - AppConfig.getCryptoCurrencyForTicker( - ref.read(desktopExchangeModelProvider)!.receiveTicker, - )!; + final coin = AppConfig.getCryptoCurrencyForTicker( + ref.read(desktopExchangeModelProvider)!.receiveTicker, + )!; final info = await showDialog?>( context: context, barrierColor: Colors.transparent, - builder: - (context) => DesktopDialog( - maxWidth: 720, - maxHeight: 670, - child: Padding( - padding: const EdgeInsets.all(32), - child: DesktopChooseFromStack(coin: coin), - ), - ), + builder: (context) => DesktopDialog( + maxWidth: 720, + maxHeight: 670, + child: Padding( + padding: const EdgeInsets.all(32), + child: DesktopChooseFromStack(coin: coin), + ), + ), ); if (info is Tuple2) { @@ -91,23 +89,21 @@ class _DesktopStep2State extends ConsumerState { void selectRefundAddressFromStack() async { try { - final coin = - AppConfig.getCryptoCurrencyForTicker( - ref.read(desktopExchangeModelProvider)!.sendTicker, - )!; + final coin = AppConfig.getCryptoCurrencyForTicker( + ref.read(desktopExchangeModelProvider)!.sendTicker, + )!; final info = await showDialog?>( context: context, barrierColor: Colors.transparent, - builder: - (context) => DesktopDialog( - maxWidth: 720, - maxHeight: 670, - child: Padding( - padding: const EdgeInsets.all(32), - child: DesktopChooseFromStack(coin: coin), - ), - ), + builder: (context) => DesktopDialog( + maxWidth: 720, + maxHeight: 670, + child: Padding( + padding: const EdgeInsets.all(32), + child: DesktopChooseFromStack(coin: coin), + ), + ), ); if (info is Tuple2) { _refundController.text = info.item1; @@ -127,30 +123,29 @@ class _DesktopStep2State extends ConsumerState { final entry = await showDialog( context: context, barrierColor: Colors.transparent, - builder: - (context) => DesktopDialog( - maxWidth: 720, - maxHeight: 670, - child: Column( - mainAxisSize: MainAxisSize.min, + builder: (context) => DesktopDialog( + maxWidth: 720, + maxHeight: 670, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Padding( - padding: const EdgeInsets.only(left: 32), - child: Text( - "Address book", - style: STextStyles.desktopH3(context), - ), - ), - const DesktopDialogCloseButton(), - ], + Padding( + padding: const EdgeInsets.only(left: 32), + child: Text( + "Address book", + style: STextStyles.desktopH3(context), + ), ), - Expanded(child: AddressBookAddressChooser(coin: coin)), + const DesktopDialogCloseButton(), ], ), - ), + Expanded(child: AddressBookAddressChooser(coin: coin)), + ], + ), + ), ); if (entry != null) { @@ -168,30 +163,29 @@ class _DesktopStep2State extends ConsumerState { final entry = await showDialog( context: context, barrierColor: Colors.transparent, - builder: - (context) => DesktopDialog( - maxWidth: 720, - maxHeight: 670, - child: Column( - mainAxisSize: MainAxisSize.min, + builder: (context) => DesktopDialog( + maxWidth: 720, + maxHeight: 670, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Padding( - padding: const EdgeInsets.only(left: 32), - child: Text( - "Address book", - style: STextStyles.desktopH3(context), - ), - ), - const DesktopDialogCloseButton(), - ], + Padding( + padding: const EdgeInsets.only(left: 32), + child: Text( + "Address book", + style: STextStyles.desktopH3(context), + ), ), - Expanded(child: AddressBookAddressChooser(coin: coin)), + const DesktopDialogCloseButton(), ], ), - ), + Expanded(child: AddressBookAddressChooser(coin: coin)), + ], + ), + ), ); if (entry != null) { @@ -234,12 +228,11 @@ class _DesktopStep2State extends ConsumerState { if (tuple != null) { if (ref.read(desktopExchangeModelProvider)!.receiveTicker.toLowerCase() == tuple.item2.ticker.toLowerCase()) { - _toController.text = - ref - .read(pWallets) - .getWallet(tuple.item1) - .info - .cachedReceivingAddress; + _toController.text = ref + .read(pWallets) + .getWallet(tuple.item1) + .info + .cachedReceivingAddress; WidgetsBinding.instance.addPostFrameCallback((_) { ref.read(desktopExchangeModelProvider)!.recipientAddress = @@ -249,12 +242,11 @@ class _DesktopStep2State extends ConsumerState { if (doesRefundAddress && ref.read(desktopExchangeModelProvider)!.sendTicker.toUpperCase() == tuple.item2.ticker.toUpperCase()) { - _refundController.text = - ref - .read(pWallets) - .getWallet(tuple.item1) - .info - .cachedReceivingAddress; + _refundController.text = ref + .read(pWallets) + .getWallet(tuple.item1) + .info + .cachedReceivingAddress; WidgetsBinding.instance.addPostFrameCallback((_) { ref.read(desktopExchangeModelProvider)!.refundAddress = _refundController.text; @@ -300,10 +292,9 @@ class _DesktopStep2State extends ConsumerState { Text( "Recipient Wallet", style: STextStyles.desktopTextExtraExtraSmall(context).copyWith( - color: - Theme.of( - context, - ).extension()!.textFieldActiveSearchIconRight, + color: Theme.of( + context, + ).extension()!.textFieldActiveSearchIconRight, ), ), if (AppConfig.isStackCoin( @@ -347,81 +338,82 @@ class _DesktopStep2State extends ConsumerState { _toController.text; widget.enableNextChanged.call(_next()); }, - decoration: standardInputDecoration( - "Enter the ${ref.watch(desktopExchangeModelProvider.select((value) => value!.receiveTicker.toUpperCase()))} payout address", - _toFocusNode, - context, - desktopMed: true, - ).copyWith( - contentPadding: const EdgeInsets.only( - left: 16, - top: 6, - bottom: 8, - right: 5, - ), - suffixIcon: Padding( - padding: - _toController.text.isEmpty + decoration: + standardInputDecoration( + "Enter the ${ref.watch(desktopExchangeModelProvider.select((value) => value!.receiveTicker.toUpperCase()))} payout address", + _toFocusNode, + context, + desktopMed: true, + ).copyWith( + contentPadding: const EdgeInsets.only( + left: 16, + top: 6, + bottom: 8, + right: 5, + ), + suffixIcon: Padding( + padding: _toController.text.isEmpty ? const EdgeInsets.only(right: 8) : const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - _toController.text.isNotEmpty - ? TextFieldIconButton( - key: const Key( - "sendViewClearAddressFieldButtonKey", - ), - onTap: () { - _toController.text = ""; - ref - .read(desktopExchangeModelProvider)! - .recipientAddress = _toController.text; - widget.enableNextChanged.call(_next()); - }, - child: const XIcon(), - ) - : TextFieldIconButton( - key: const Key( - "sendViewPasteAddressFieldButtonKey", - ), - onTap: () async { - final ClipboardData? data = await clipboard - .getData(Clipboard.kTextPlain); - if (data?.text != null && - data!.text!.isNotEmpty) { - final content = data.text!.trim(); - _toController.text = content; - ref - .read(desktopExchangeModelProvider)! - .recipientAddress = _toController.text; - widget.enableNextChanged.call(_next()); - } - }, - child: - _toController.text.isEmpty - ? const ClipboardIcon() - : const XIcon(), - ), - if (_toController.text.isEmpty && - AppConfig.isStackCoin( - ref.watch( - desktopExchangeModelProvider.select( - (value) => value!.receiveTicker, - ), + child: UnconstrainedBox( + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + _toController.text.isNotEmpty + ? TextFieldIconButton( + key: const Key( + "sendViewClearAddressFieldButtonKey", + ), + onTap: () { + _toController.text = ""; + ref + .read(desktopExchangeModelProvider)! + .recipientAddress = + _toController.text; + widget.enableNextChanged.call(_next()); + }, + child: const XIcon(), + ) + : TextFieldIconButton( + key: const Key( + "sendViewPasteAddressFieldButtonKey", + ), + onTap: () async { + final ClipboardData? data = await clipboard + .getData(Clipboard.kTextPlain); + if (data?.text != null && + data!.text!.isNotEmpty) { + final content = data.text!.trim(); + _toController.text = content; + ref + .read(desktopExchangeModelProvider)! + .recipientAddress = _toController + .text; + widget.enableNextChanged.call(_next()); + } + }, + child: _toController.text.isEmpty + ? const ClipboardIcon() + : const XIcon(), + ), + if (_toController.text.isEmpty && + AppConfig.isStackCoin( + ref.watch( + desktopExchangeModelProvider.select( + (value) => value!.receiveTicker, + ), + ), + )) + TextFieldIconButton( + key: const Key("sendViewAddressBookButtonKey"), + onTap: selectRecipientFromAddressBook, + child: const AddressBookIcon(), ), - )) - TextFieldIconButton( - key: const Key("sendViewAddressBookButtonKey"), - onTap: selectRecipientFromAddressBook, - child: const AddressBookIcon(), - ), - ], + ], + ), + ), ), ), - ), - ), ), ), const SizedBox(height: 10), @@ -440,10 +432,9 @@ class _DesktopStep2State extends ConsumerState { Text( "Refund Wallet (required)", style: STextStyles.desktopTextExtraExtraSmall(context).copyWith( - color: - Theme.of(context) - .extension()! - .textFieldActiveSearchIconRight, + color: Theme.of( + context, + ).extension()!.textFieldActiveSearchIconRight, ), ), if (AppConfig.isStackCoin( @@ -487,84 +478,87 @@ class _DesktopStep2State extends ConsumerState { _refundController.text; widget.enableNextChanged.call(_next()); }, - decoration: standardInputDecoration( - "Enter ${ref.watch(desktopExchangeModelProvider.select((value) => value!.sendTicker.toUpperCase()))} refund address", - _refundFocusNode, - context, - desktopMed: true, - ).copyWith( - contentPadding: const EdgeInsets.only( - left: 16, - top: 6, - bottom: 8, - right: 5, - ), - suffixIcon: Padding( - padding: - _refundController.text.isEmpty + decoration: + standardInputDecoration( + "Enter ${ref.watch(desktopExchangeModelProvider.select((value) => value!.sendTicker.toUpperCase()))} refund address", + _refundFocusNode, + context, + desktopMed: true, + ).copyWith( + contentPadding: const EdgeInsets.only( + left: 16, + top: 6, + bottom: 8, + right: 5, + ), + suffixIcon: Padding( + padding: _refundController.text.isEmpty ? const EdgeInsets.only(right: 16) : const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - _refundController.text.isNotEmpty - ? TextFieldIconButton( - key: const Key( - "sendViewClearAddressFieldButtonKey", - ), - onTap: () { - _refundController.text = ""; - ref - .read(desktopExchangeModelProvider)! - .refundAddress = _refundController.text; - - widget.enableNextChanged.call(_next()); - }, - child: const XIcon(), - ) - : TextFieldIconButton( - key: const Key( - "sendViewPasteAddressFieldButtonKey", - ), - onTap: () async { - final ClipboardData? data = await clipboard - .getData(Clipboard.kTextPlain); - if (data?.text != null && - data!.text!.isNotEmpty) { - final content = data.text!.trim(); - - _refundController.text = content; - ref - .read(desktopExchangeModelProvider)! - .refundAddress = _refundController.text; - - widget.enableNextChanged.call(_next()); - } - }, - child: - _refundController.text.isEmpty - ? const ClipboardIcon() - : const XIcon(), - ), - if (_refundController.text.isEmpty && - AppConfig.isStackCoin( - ref.watch( - desktopExchangeModelProvider.select( - (value) => value!.sendTicker, - ), + child: UnconstrainedBox( + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + _refundController.text.isNotEmpty + ? TextFieldIconButton( + key: const Key( + "sendViewClearAddressFieldButtonKey", + ), + onTap: () { + _refundController.text = ""; + ref + .read(desktopExchangeModelProvider)! + .refundAddress = _refundController + .text; + + widget.enableNextChanged.call(_next()); + }, + child: const XIcon(), + ) + : TextFieldIconButton( + key: const Key( + "sendViewPasteAddressFieldButtonKey", + ), + onTap: () async { + final ClipboardData? data = + await clipboard.getData( + Clipboard.kTextPlain, + ); + if (data?.text != null && + data!.text!.isNotEmpty) { + final content = data.text!.trim(); + + _refundController.text = content; + ref + .read(desktopExchangeModelProvider)! + .refundAddress = _refundController + .text; + + widget.enableNextChanged.call(_next()); + } + }, + child: _refundController.text.isEmpty + ? const ClipboardIcon() + : const XIcon(), + ), + if (_refundController.text.isEmpty && + AppConfig.isStackCoin( + ref.watch( + desktopExchangeModelProvider.select( + (value) => value!.sendTicker, + ), + ), + )) + TextFieldIconButton( + key: const Key("sendViewAddressBookButtonKey"), + onTap: selectRefundFromAddressBook, + child: const AddressBookIcon(), ), - )) - TextFieldIconButton( - key: const Key("sendViewAddressBookButtonKey"), - onTap: selectRefundFromAddressBook, - child: const AddressBookIcon(), - ), - ], + ], + ), + ), ), ), - ), - ), ), ), if (doesRefundAddress) const SizedBox(height: 10), diff --git a/lib/pages_desktop_specific/desktop_exchange/subwidgets/desktop_choose_from_stack.dart b/lib/pages_desktop_specific/desktop_exchange/subwidgets/desktop_choose_from_stack.dart index 1dec08ff86..805b8be060 100644 --- a/lib/pages_desktop_specific/desktop_exchange/subwidgets/desktop_choose_from_stack.dart +++ b/lib/pages_desktop_specific/desktop_exchange/subwidgets/desktop_choose_from_stack.dart @@ -32,10 +32,7 @@ import '../../../widgets/textfield_icon_button.dart'; import '../../../widgets/wallet_info_row/sub_widgets/wallet_info_row_coin_icon.dart'; class DesktopChooseFromStack extends ConsumerStatefulWidget { - const DesktopChooseFromStack({ - super.key, - required this.coin, - }); + const DesktopChooseFromStack({super.key, required this.coin}); final CryptoCurrency coin; @@ -91,9 +88,7 @@ class _DesktopChooseFromStackState "Choose from ${AppConfig.prefix}", style: STextStyles.desktopH3(context), ), - const SizedBox( - height: 28, - ), + const SizedBox(height: 28), ClipRRect( borderRadius: BorderRadius.circular( Constants.size.circularBorderRadius, @@ -109,54 +104,53 @@ class _DesktopChooseFromStackState }); }, style: STextStyles.desktopTextExtraSmall(context).copyWith( - color: Theme.of(context) - .extension()! - .textFieldActiveText, + color: Theme.of( + context, + ).extension()!.textFieldActiveText, height: 1.8, ), - decoration: standardInputDecoration( - "Search", - searchFieldFocusNode, - context, - desktopMed: true, - ).copyWith( - prefixIcon: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 12, - vertical: 18, - ), - child: SvgPicture.asset( - Assets.svg.search, - width: 20, - height: 20, - ), - ), - suffixIcon: _searchController.text.isNotEmpty - ? Padding( - padding: const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - children: [ - TextFieldIconButton( - child: const XIcon(), - onTap: () async { - setState(() { - _searchController.text = ""; - _searchTerm = ""; - }); - }, + decoration: + standardInputDecoration( + "Search", + searchFieldFocusNode, + context, + desktopMed: true, + ).copyWith( + prefixIcon: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 18, + ), + child: SvgPicture.asset( + Assets.svg.search, + width: 20, + height: 20, + ), + ), + suffixIcon: _searchController.text.isNotEmpty + ? Padding( + padding: const EdgeInsets.only(right: 0), + child: UnconstrainedBox( + child: Row( + children: [ + TextFieldIconButton( + child: const XIcon(), + onTap: () async { + setState(() { + _searchController.text = ""; + _searchTerm = ""; + }); + }, + ), + ], ), - ], - ), - ), - ) - : null, - ), + ), + ) + : null, + ), ), ), - const SizedBox( - height: 16, - ), + const SizedBox(height: 16), Flexible( child: Builder( builder: (context) { @@ -169,14 +163,15 @@ class _DesktopChooseFromStackState return Column( children: [ RoundedWhiteContainer( - borderColor: Theme.of(context) - .extension()! - .background, + borderColor: Theme.of( + context, + ).extension()!.background, child: Center( child: Text( "No ${widget.coin.ticker.toUpperCase()} wallets", - style: - STextStyles.desktopTextExtraExtraSmall(context), + style: STextStyles.desktopTextExtraExtraSmall( + context, + ), ), ), ), @@ -191,18 +186,18 @@ class _DesktopChooseFromStackState return ListView.separated( primary: false, itemCount: walletIds.length, - separatorBuilder: (_, __) => const SizedBox( - height: 5, - ), + separatorBuilder: (_, __) => const SizedBox(height: 5), itemBuilder: (context, index) { final wallet = ref.watch( - pWallets - .select((value) => value.getWallet(walletIds[index])), + pWallets.select( + (value) => value.getWallet(walletIds[index]), + ), ); return RoundedWhiteContainer( - borderColor: - Theme.of(context).extension()!.background, + borderColor: Theme.of( + context, + ).extension()!.background, padding: const EdgeInsets.symmetric( horizontal: 20, vertical: 14, @@ -213,43 +208,35 @@ class _DesktopChooseFromStackState Row( children: [ WalletInfoCoinIcon(coin: widget.coin), - const SizedBox( - width: 12, - ), + const SizedBox(width: 12), Text( wallet.info.name, - style: STextStyles.desktopTextExtraExtraSmall( - context, - ).copyWith( - color: Theme.of(context) - .extension()! - .textDark, - ), + style: + STextStyles.desktopTextExtraExtraSmall( + context, + ).copyWith( + color: Theme.of( + context, + ).extension()!.textDark, + ), ), ], ), const Spacer(), - _BalanceDisplay( - walletId: walletIds[index], - ), - const SizedBox( - width: 80, - ), + _BalanceDisplay(walletId: walletIds[index]), + const SizedBox(width: 80), CustomTextButton( text: "Select wallet", onTap: () async { final address = (await wallet.getCurrentReceivingAddress()) - ?.value ?? - wallet.info.cachedReceivingAddress; + ?.value ?? + wallet.info.cachedReceivingAddress; if (mounted) { - Navigator.of(context).pop( - Tuple2( - wallet.info.name, - address, - ), - ); + Navigator.of( + context, + ).pop(Tuple2(wallet.info.name, address)); } }, ), @@ -261,15 +248,11 @@ class _DesktopChooseFromStackState }, ), ), - const SizedBox( - height: 20, - ), + const SizedBox(height: 20), Row( children: [ const Spacer(), - const SizedBox( - width: 16, - ), + const SizedBox(width: 16), Expanded( child: SecondaryButton( label: "Cancel", @@ -285,10 +268,7 @@ class _DesktopChooseFromStackState } class _BalanceDisplay extends ConsumerWidget { - const _BalanceDisplay({ - super.key, - required this.walletId, - }); + const _BalanceDisplay({super.key, required this.walletId}); final String walletId; diff --git a/lib/pages_desktop_specific/desktop_home_view.dart b/lib/pages_desktop_specific/desktop_home_view.dart index d29aeb4bc9..2fb0c0b3ad 100644 --- a/lib/pages_desktop_specific/desktop_home_view.dart +++ b/lib/pages_desktop_specific/desktop_home_view.dart @@ -59,10 +59,8 @@ class _DesktopHomeViewState extends ConsumerState { barrierDismissible: false, context: context, useSafeArea: false, - builder: - (context) => const Background( - child: Center(child: DesktopUnlockAppDialog()), - ), + builder: (context) => + const Background(child: Center(child: DesktopUnlockAppDialog())), ); } } @@ -201,8 +199,9 @@ class _DesktopHomeViewState extends ConsumerState { if (ref.read(currentDesktopMenuItemProvider.state).state == DesktopMenuItemId.notifications && newKey != DesktopMenuItemId.notifications) { - final Set unreadNotificationIds = - ref.read(unreadNotificationsStateProvider.state).state; + final Set unreadNotificationIds = ref + .read(unreadNotificationsStateProvider.state) + .state; if (unreadNotificationIds.isNotEmpty) { final List> futures = []; @@ -244,12 +243,12 @@ class _DesktopHomeViewState extends ConsumerState { child: IndexedStack( index: ref - .watch(currentDesktopMenuItemProvider.state) - .state - .index > - 0 - ? 1 - : 0, + .watch(currentDesktopMenuItemProvider.state) + .state + .index > + 0 + ? 1 + : 0, children: [ myStackViewNav, contentViews[ref diff --git a/lib/pages_desktop_specific/desktop_menu_item.dart b/lib/pages_desktop_specific/desktop_menu_item.dart index ea0d69a81c..324c554f6e 100644 --- a/lib/pages_desktop_specific/desktop_menu_item.dart +++ b/lib/pages_desktop_specific/desktop_menu_item.dart @@ -41,13 +41,13 @@ class DesktopMyStackIcon extends ConsumerWidget { Assets.svg.walletDesktop, width: 20, height: 20, - color: DesktopMenuItemId.myStack == + color: + DesktopMenuItemId.myStack == ref.watch(currentDesktopMenuItemProvider.state).state ? Theme.of(context).extension()!.accentColorDark - : Theme.of(context) - .extension()! - .accentColorDark - .withOpacity(0.8), + : Theme.of( + context, + ).extension()!.accentColorDark.withOpacity(0.8), ); } } @@ -61,13 +61,13 @@ class DesktopExchangeIcon extends ConsumerWidget { Assets.svg.exchangeDesktop, width: 20, height: 20, - color: DesktopMenuItemId.exchange == + color: + DesktopMenuItemId.exchange == ref.watch(currentDesktopMenuItemProvider.state).state ? Theme.of(context).extension()!.accentColorDark - : Theme.of(context) - .extension()! - .accentColorDark - .withOpacity(0.8), + : Theme.of( + context, + ).extension()!.accentColorDark.withOpacity(0.8), ); } } @@ -81,13 +81,13 @@ class DesktopBuyIcon extends ConsumerWidget { File(ref.watch(themeAssetsProvider).buy), width: 20, height: 20, - color: DesktopMenuItemId.buy == + color: + DesktopMenuItemId.buy == ref.watch(currentDesktopMenuItemProvider.state).state ? Theme.of(context).extension()!.accentColorDark - : Theme.of(context) - .extension()! - .accentColorDark - .withOpacity(0.8), + : Theme.of( + context, + ).extension()!.accentColorDark.withOpacity(0.8), ); } } @@ -98,15 +98,11 @@ class DesktopNotificationsIcon extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { return ref.watch( - notificationsProvider.select((value) => value.hasUnreadNotifications), - ) + notificationsProvider.select((value) => value.hasUnreadNotifications), + ) ? SvgPicture.file( File( - ref.watch( - themeProvider.select( - (value) => value.assets.bellNew, - ), - ), + ref.watch(themeProvider.select((value) => value.assets.bellNew)), ), width: 20, height: 20, @@ -115,20 +111,19 @@ class DesktopNotificationsIcon extends ConsumerWidget { Assets.svg.bell, width: 20, height: 20, - color: ref.watch( - notificationsProvider - .select((value) => value.hasUnreadNotifications), - ) + color: + ref.watch( + notificationsProvider.select( + (value) => value.hasUnreadNotifications, + ), + ) ? null : DesktopMenuItemId.notifications == - ref.watch(currentDesktopMenuItemProvider.state).state - ? Theme.of(context) - .extension()! - .accentColorDark - : Theme.of(context) - .extension()! - .accentColorDark - .withOpacity(0.8), + ref.watch(currentDesktopMenuItemProvider.state).state + ? Theme.of(context).extension()!.accentColorDark + : Theme.of( + context, + ).extension()!.accentColorDark.withOpacity(0.8), ); } } @@ -142,13 +137,13 @@ class DesktopAddressBookIcon extends ConsumerWidget { Assets.svg.addressBookDesktop, width: 20, height: 20, - color: DesktopMenuItemId.addressBook == + color: + DesktopMenuItemId.addressBook == ref.watch(currentDesktopMenuItemProvider.state).state ? Theme.of(context).extension()!.accentColorDark - : Theme.of(context) - .extension()! - .accentColorDark - .withOpacity(0.8), + : Theme.of( + context, + ).extension()!.accentColorDark.withOpacity(0.8), ); } } @@ -162,13 +157,13 @@ class DesktopSettingsIcon extends ConsumerWidget { Assets.svg.gear, width: 20, height: 20, - color: DesktopMenuItemId.settings == + color: + DesktopMenuItemId.settings == ref.watch(currentDesktopMenuItemProvider.state).state ? Theme.of(context).extension()!.accentColorDark - : Theme.of(context) - .extension()! - .accentColorDark - .withOpacity(0.8), + : Theme.of( + context, + ).extension()!.accentColorDark.withOpacity(0.8), ); } } @@ -182,13 +177,13 @@ class DesktopSupportIcon extends ConsumerWidget { Assets.svg.messageQuestion, width: 20, height: 20, - color: DesktopMenuItemId.support == + color: + DesktopMenuItemId.support == ref.watch(currentDesktopMenuItemProvider.state).state ? Theme.of(context).extension()!.accentColorDark - : Theme.of(context) - .extension()! - .accentColorDark - .withOpacity(0.8), + : Theme.of( + context, + ).extension()!.accentColorDark.withOpacity(0.8), ); } } @@ -202,13 +197,13 @@ class DesktopAboutIcon extends ConsumerWidget { Assets.svg.aboutDesktop, width: 20, height: 20, - color: DesktopMenuItemId.about == + color: + DesktopMenuItemId.about == ref.watch(currentDesktopMenuItemProvider.state).state ? Theme.of(context).extension()!.accentColorDark - : Theme.of(context) - .extension()! - .accentColorDark - .withOpacity(0.8), + : Theme.of( + context, + ).extension()!.accentColorDark.withOpacity(0.8), ); } } @@ -222,10 +217,9 @@ class DesktopExitIcon extends ConsumerWidget { Assets.svg.exitDesktop, width: 20, height: 20, - color: Theme.of(context) - .extension()! - .accentColorDark - .withOpacity(0.8), + color: Theme.of( + context, + ).extension()!.accentColorDark.withOpacity(0.8), ); } } @@ -294,10 +288,7 @@ class _DesktopMenuItemState extends ConsumerState> _iconOnly = !widget.isExpandedInitially; controller?.toggle = toggle; - animationController = AnimationController( - vsync: this, - duration: duration, - ); + animationController = AnimationController(vsync: this, duration: duration); if (_iconOnly) { animationController.value = 0; } else { @@ -321,25 +312,20 @@ class _DesktopMenuItemState extends ConsumerState> return TextButton( style: value == group ? Theme.of(context) - .extension()! - .getDesktopMenuButtonStyleSelected(context) - : Theme.of(context) - .extension()! - .getDesktopMenuButtonStyle(context), + .extension()! + .getDesktopMenuButtonStyleSelected(context) + : Theme.of( + context, + ).extension()!.getDesktopMenuButtonStyle(context), onPressed: () { onChanged(value); }, child: Padding( - padding: const EdgeInsets.symmetric( - vertical: 16, - ), + padding: const EdgeInsets.symmetric(vertical: 16), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - AnimatedContainer( - duration: duration, - width: _iconOnly ? 0 : 16, - ), + AnimatedContainer(duration: duration, width: _iconOnly ? 0 : 16), icon, AnimatedOpacity( duration: duration, @@ -352,9 +338,7 @@ class _DesktopMenuItemState extends ConsumerState> width: labelLength, child: Row( children: [ - const SizedBox( - width: 12, - ), + const SizedBox(width: 12), Text( label, style: value == group diff --git a/lib/pages_desktop_specific/my_stack_view/wallet_view/desktop_token_view.dart b/lib/pages_desktop_specific/my_stack_view/wallet_view/desktop_token_view.dart index 577d4e322a..2600007696 100644 --- a/lib/pages_desktop_specific/my_stack_view/wallet_view/desktop_token_view.dart +++ b/lib/pages_desktop_specific/my_stack_view/wallet_view/desktop_token_view.dart @@ -54,10 +54,9 @@ class _DesktopTokenViewState extends ConsumerState { @override void initState() { - initialSyncStatus = - ref.read(pCurrentTokenWallet)!.refreshMutex.isLocked - ? WalletSyncStatus.syncing - : WalletSyncStatus.synced; + initialSyncStatus = ref.read(pCurrentTokenWallet)!.refreshMutex.isLocked + ? WalletSyncStatus.syncing + : WalletSyncStatus.synced; super.initState(); } @@ -86,10 +85,9 @@ class _DesktopTokenViewState extends ConsumerState { Assets.svg.arrowLeft, width: 18, height: 18, - color: - Theme.of( - context, - ).extension()!.topNavIconPrimary, + color: Theme.of( + context, + ).extension()!.topNavIconPrimary, ), onPressed: () { ref.refresh(feeSheetSessionCacheProvider); @@ -155,12 +153,12 @@ class _DesktopTokenViewState extends ConsumerState { isToken: true, initialSyncStatus: ref - .watch(pWallets) - .getWallet(widget.walletId) - .refreshMutex - .isLocked - ? WalletSyncStatus.syncing - : WalletSyncStatus.synced, + .watch(pWallets) + .getWallet(widget.walletId) + .refreshMutex + .isLocked + ? WalletSyncStatus.syncing + : WalletSyncStatus.synced, ), const Spacer(), DesktopWalletFeatures(walletId: widget.walletId), @@ -175,10 +173,9 @@ class _DesktopTokenViewState extends ConsumerState { child: Text( "My wallet", style: STextStyles.desktopTextExtraSmall(context).copyWith( - color: - Theme.of(context) - .extension()! - .textFieldActiveSearchIconLeft, + color: Theme.of( + context, + ).extension()!.textFieldActiveSearchIconLeft, ), ), ), @@ -189,14 +186,12 @@ class _DesktopTokenViewState extends ConsumerState { children: [ Text( "Recent transactions", - style: STextStyles.desktopTextExtraSmall( - context, - ).copyWith( - color: - Theme.of(context) + style: STextStyles.desktopTextExtraSmall(context) + .copyWith( + color: Theme.of(context) .extension()! .textFieldActiveSearchIconLeft, - ), + ), ), CustomTextButton( text: "See all", diff --git a/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/delete_wallet_keys_popup.dart b/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/delete_wallet_keys_popup.dart index bd6dac13fe..55c7091dcd 100644 --- a/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/delete_wallet_keys_popup.dart +++ b/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/delete_wallet_keys_popup.dart @@ -72,9 +72,7 @@ class _DeleteWalletKeysPopup extends ConsumerState { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Padding( - padding: const EdgeInsets.only( - left: 32, - ), + padding: const EdgeInsets.only(left: 32), child: Text( "Wallet keys", style: STextStyles.desktopH3(context), @@ -82,29 +80,20 @@ class _DeleteWalletKeysPopup extends ConsumerState { ), DesktopDialogCloseButton( onPressedOverride: () { - Navigator.of( - context, - rootNavigator: true, - ).pop(); + Navigator.of(context, rootNavigator: true).pop(); }, ), ], ), - const SizedBox( - height: 28, - ), + const SizedBox(height: 28), Text( "Recovery phrase", style: STextStyles.desktopTextMedium(context), ), - const SizedBox( - height: 8, - ), + const SizedBox(height: 8), Center( child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 32, - ), + padding: const EdgeInsets.symmetric(horizontal: 32), child: Text( "Please write down your recovery phrase in the correct order and " "save it to keep your funds secure. You will be shown your recovery phrase on the next screen.", @@ -113,13 +102,9 @@ class _DeleteWalletKeysPopup extends ConsumerState { ), ), ), - const SizedBox( - height: 24, - ), + const SizedBox(height: 24), Padding( - padding: const EdgeInsets.symmetric( - horizontal: 32, - ), + padding: const EdgeInsets.symmetric(horizontal: 32), child: RawMaterialButton( hoverColor: Colors.transparent, onPressed: () async { @@ -140,19 +125,15 @@ class _DeleteWalletKeysPopup extends ConsumerState { child: MnemonicTable( words: widget.words, isDesktop: true, - itemBorderColor: Theme.of(context) - .extension()! - .buttonBackSecondary, + itemBorderColor: Theme.of( + context, + ).extension()!.buttonBackSecondary, ), ), ), - const SizedBox( - height: 24, - ), + const SizedBox(height: 24), Padding( - padding: const EdgeInsets.symmetric( - horizontal: 32, - ), + padding: const EdgeInsets.symmetric(horizontal: 32), child: Row( children: [ Expanded( @@ -162,9 +143,7 @@ class _DeleteWalletKeysPopup extends ConsumerState { await Navigator.of(context).push( RouteGenerator.getRoute( builder: (context) { - return ConfirmDelete( - walletId: _walletId, - ); + return ConfirmDelete(walletId: _walletId); }, settings: const RouteSettings( name: "/desktopConfirmDelete", @@ -177,9 +156,7 @@ class _DeleteWalletKeysPopup extends ConsumerState { ], ), ), - const SizedBox( - height: 32, - ), + const SizedBox(height: 32), ], ), ); @@ -187,10 +164,7 @@ class _DeleteWalletKeysPopup extends ConsumerState { } class ConfirmDelete extends ConsumerStatefulWidget { - const ConfirmDelete({ - super.key, - required this.walletId, - }); + const ConfirmDelete({super.key, required this.walletId}); final String walletId; @@ -207,9 +181,7 @@ class _ConfirmDeleteState extends ConsumerState { children: [ const Row( mainAxisAlignment: MainAxisAlignment.end, - children: [ - DesktopDialogCloseButton(), - ], + children: [DesktopDialogCloseButton()], ), Column( crossAxisAlignment: CrossAxisAlignment.center, @@ -238,7 +210,9 @@ class _ConfirmDeleteState extends ConsumerState { buttonHeight: ButtonHeight.xl, label: "Continue", onPressed: () async { - await ref.read(pWallets).deleteWallet( + await ref + .read(pWallets) + .deleteWallet( ref.read(pWalletInfo(widget.walletId)), ref.read(secureStoreProvider), ); diff --git a/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/desktop_attention_delete_wallet.dart b/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/desktop_attention_delete_wallet.dart index 032a61bf45..9d0f947ac8 100644 --- a/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/desktop_attention_delete_wallet.dart +++ b/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/desktop_attention_delete_wallet.dart @@ -68,10 +68,9 @@ class _DesktopAttentionDeleteWallet Text("Attention!", style: STextStyles.desktopH2(context)), const SizedBox(height: 16), RoundedContainer( - color: - Theme.of( - context, - ).extension()!.snackBarBackError, + color: Theme.of( + context, + ).extension()!.snackBarBackError, child: Padding( padding: const EdgeInsets.all(10.0), child: Text( @@ -79,14 +78,12 @@ class _DesktopAttentionDeleteWallet "the only way you can have access to your funds is by using your backup key." "\n\n${AppConfig.appName} does not keep nor is able to restore your backup key or your wallet." "\n\nPLEASE SAVE YOUR BACKUP KEY.", - style: STextStyles.desktopTextExtraExtraSmall( - context, - ).copyWith( - color: - Theme.of( + style: STextStyles.desktopTextExtraExtraSmall(context) + .copyWith( + color: Theme.of( context, ).extension()!.snackBarTextError, - ), + ), ), ), ), @@ -119,51 +116,46 @@ class _DesktopAttentionDeleteWallet if (context.mounted) { await Navigator.of(context).push( MaterialPageRoute( - builder: - (builder) => DesktopDialog( - maxWidth: 614, - maxHeight: double.infinity, - child: Column( + builder: (builder) => DesktopDialog( + maxWidth: 614, + maxHeight: double.infinity, + child: Column( + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, children: [ - Row( - mainAxisAlignment: - MainAxisAlignment - .spaceBetween, - children: [ - Padding( - padding: - const EdgeInsets.only( - left: 32, - ), - child: Text( - "Wallet keys", - style: - STextStyles.desktopH3( - context, - ), - ), - ), - DesktopDialogCloseButton( - onPressedOverride: () { - Navigator.of( - context, - rootNavigator: true, - ).pop(); - }, + Padding( + padding: const EdgeInsets.only( + left: 32, + ), + child: Text( + "Wallet keys", + style: STextStyles.desktopH3( + context, ), - ], + ), ), - Padding( - padding: const EdgeInsets.all(32), - child: - DeleteViewOnlyWalletKeysView( - walletId: widget.walletId, - data: data, - ), + DesktopDialogCloseButton( + onPressedOverride: () { + Navigator.of( + context, + rootNavigator: true, + ).pop(); + }, ), ], ), - ), + Padding( + padding: const EdgeInsets.all(32), + child: DeleteViewOnlyWalletKeysView( + walletId: widget.walletId, + data: data, + ), + ), + ], + ), + ), ), ); } diff --git a/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/desktop_auth_send.dart b/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/desktop_auth_send.dart index c38b33a61b..f220d389fe 100644 --- a/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/desktop_auth_send.dart +++ b/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/desktop_auth_send.dart @@ -26,10 +26,7 @@ import '../../../../widgets/loading_indicator.dart'; import '../../../../widgets/stack_text_field.dart'; class DesktopAuthSend extends ConsumerStatefulWidget { - const DesktopAuthSend({ - super.key, - required this.coin, - }); + const DesktopAuthSend({super.key, required this.coin}); final CryptoCurrency coin; @@ -59,12 +56,7 @@ class _DesktopAuthSendState extends ConsumerState { builder: (context) => const Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, - children: [ - LoadingIndicator( - width: 200, - height: 200, - ), - ], + children: [LoadingIndicator(width: 200, height: 200)], ), ), ); @@ -77,15 +69,8 @@ class _DesktopAuthSendState extends ConsumerState { if (mounted) { Navigator.of(context).pop(); - Navigator.of( - context, - rootNavigator: true, - ).pop(passwordIsValid); - await Future.delayed( - const Duration( - milliseconds: 100, - ), - ); + Navigator.of(context, rootNavigator: true).pop(passwordIsValid); + await Future.delayed(const Duration(milliseconds: 100)); } } finally { _lock = false; @@ -113,29 +98,17 @@ class _DesktopAuthSendState extends ConsumerState { return Column( mainAxisSize: MainAxisSize.min, children: [ - SvgPicture.asset( - Assets.svg.keys, - width: 100, - ), - const SizedBox( - height: 56, - ), - Text( - "Confirm transaction", - style: STextStyles.desktopH3(context), - ), - const SizedBox( - height: 16, - ), + SvgPicture.asset(Assets.svg.keys, width: 100), + const SizedBox(height: 56), + Text("Confirm transaction", style: STextStyles.desktopH3(context)), + const SizedBox(height: 16), Text( "Enter your wallet password to send ${widget.coin.ticker.toUpperCase()}", style: STextStyles.desktopTextMedium(context).copyWith( color: Theme.of(context).extension()!.textDark3, ), ), - const SizedBox( - height: 24, - ), + const SizedBox(height: 24), ClipRRect( borderRadius: BorderRadius.circular( Constants.size.circularBorderRadius, @@ -144,9 +117,7 @@ class _DesktopAuthSendState extends ConsumerState { key: const Key("desktopLoginPasswordFieldKey"), focusNode: passwordFocusNode, controller: passwordController, - style: STextStyles.desktopTextMedium(context).copyWith( - height: 2, - ), + style: STextStyles.desktopTextMedium(context).copyWith(height: 2), obscureText: hidePassword, enableSuggestions: false, autocorrect: false, @@ -156,45 +127,44 @@ class _DesktopAuthSendState extends ConsumerState { _confirmPressed(); } }, - decoration: standardInputDecoration( - "Enter password", - passwordFocusNode, - context, - ).copyWith( - suffixIcon: UnconstrainedBox( - child: SizedBox( - height: 70, - child: Row( - children: [ - const SizedBox( - width: 24, - ), - GestureDetector( - key: const Key( - "restoreFromFilePasswordFieldShowPasswordButtonKey", - ), - onTap: () async { - setState(() { - hidePassword = !hidePassword; - }); - }, - child: SvgPicture.asset( - hidePassword ? Assets.svg.eye : Assets.svg.eyeSlash, - color: Theme.of(context) - .extension()! - .textDark3, - width: 24, - height: 24, - ), + decoration: + standardInputDecoration( + "Enter password", + passwordFocusNode, + context, + ).copyWith( + suffixIcon: UnconstrainedBox( + child: SizedBox( + height: 70, + child: Row( + children: [ + const SizedBox(width: 24), + GestureDetector( + key: const Key( + "restoreFromFilePasswordFieldShowPasswordButtonKey", + ), + onTap: () async { + setState(() { + hidePassword = !hidePassword; + }); + }, + child: SvgPicture.asset( + hidePassword + ? Assets.svg.eye + : Assets.svg.eyeSlash, + color: Theme.of( + context, + ).extension()!.textDark3, + width: 24, + height: 24, + ), + ), + const SizedBox(width: 12), + ], ), - const SizedBox( - width: 12, - ), - ], + ), ), ), - ), - ), onChanged: (newValue) { setState(() { _confirmEnabled = passwordController.text.isNotEmpty; @@ -202,9 +172,7 @@ class _DesktopAuthSendState extends ConsumerState { }, ), ), - const SizedBox( - height: 48, - ), + const SizedBox(height: 48), Row( children: [ Expanded( @@ -214,9 +182,7 @@ class _DesktopAuthSendState extends ConsumerState { onPressed: Navigator.of(context).pop, ), ), - const SizedBox( - width: 16, - ), + const SizedBox(width: 16), Expanded( child: PrimaryButton( enabled: _confirmEnabled, diff --git a/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/desktop_token_send.dart b/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/desktop_token_send.dart index bf57331ea9..51ce44591f 100644 --- a/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/desktop_token_send.dart +++ b/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/desktop_token_send.dart @@ -108,15 +108,14 @@ class _DesktopTokenSendState extends ConsumerState { final tokenWallet = ref.read(pCurrentTokenWallet)!; final Amount amount = _amountToSend!; - final Amount availableBalance = - ref - .read( - pTokenBalance(( - walletId: walletId, - contractAddress: tokenWallet.tokenContract.address, - )), - ) - .spendable; + final Amount availableBalance = ref + .read( + pTokenBalance(( + walletId: walletId, + contractAddress: tokenWallet.tokenContract.address, + )), + ) + .spendable; // confirm send all if (amount == availableBalance) { @@ -237,8 +236,9 @@ class _DesktopTokenSendState extends ConsumerState { address: _address!, amount: amount, isChange: false, - addressType: - tokenWallet.cryptoCurrency.getAddressType(_address!)!, + addressType: tokenWallet.cryptoCurrency.getAddressType( + _address!, + )!, ), ], feeRateType: ref.read(feeRateTypeDesktopStateProvider), @@ -260,18 +260,17 @@ class _DesktopTokenSendState extends ConsumerState { unawaited( showDialog( context: context, - builder: - (context) => DesktopDialog( - maxHeight: MediaQuery.of(context).size.height - 64, - maxWidth: 580, - child: ConfirmTransactionView( - txData: txData, - walletId: walletId, - onSuccess: clearSendForm, - isTokenTx: true, - routeOnSuccessName: DesktopHomeView.routeName, - ), - ), + builder: (context) => DesktopDialog( + maxHeight: MediaQuery.of(context).size.height - 64, + maxWidth: 580, + child: ConfirmTransactionView( + txData: txData, + walletId: walletId, + onSuccess: clearSendForm, + isTokenTx: true, + routeOnSuccessName: DesktopHomeView.routeName, + ), + ), ), ); } @@ -371,21 +370,19 @@ class _DesktopTokenSendState extends ConsumerState { } _cachedAmountToSend = _amountToSend; - final price = - ref - .read(priceAnd24hChangeNotifierProvider) - .getTokenPrice( - ref.read(pCurrentTokenWallet)!.tokenContract.address, - ) - ?.value; + final price = ref + .read(priceAnd24hChangeNotifierProvider) + .getTokenPrice(ref.read(pCurrentTokenWallet)!.tokenContract.address) + ?.value; if (price != null && price > Decimal.zero) { - final String fiatAmountString = Amount.fromDecimal( - _amountToSend!.decimal * price, - fractionDigits: 2, - ).fiatString( - locale: ref.read(localeServiceChangeNotifierProvider).locale, - ); + final String fiatAmountString = + Amount.fromDecimal( + _amountToSend!.decimal * price, + fractionDigits: 2, + ).fiatString( + locale: ref.read(localeServiceChangeNotifierProvider).locale, + ); baseAmountController.text = fiatAmountString; } @@ -464,8 +461,10 @@ class _DesktopTokenSendState extends ConsumerState { // autofill amount field if (paymentData.amount != null) { final Amount amount = Decimal.parse(paymentData.amount!).toAmount( - fractionDigits: - ref.read(pCurrentTokenWallet)!.tokenContract.decimals, + fractionDigits: ref + .read(pCurrentTokenWallet)! + .tokenContract + .decimals, ); cryptoAmountController.text = ref .read(pAmountFormatter(coin)) @@ -519,36 +518,33 @@ class _DesktopTokenSendState extends ConsumerState { } void fiatTextFieldOnChanged(String baseAmountString) { - final int tokenDecimals = - ref.read(pCurrentTokenWallet)!.tokenContract.decimals; + final int tokenDecimals = ref + .read(pCurrentTokenWallet)! + .tokenContract + .decimals; if (baseAmountString.isNotEmpty && baseAmountString != "." && baseAmountString != ",") { - final baseAmount = - baseAmountString.contains(",") - ? Decimal.parse( - baseAmountString.replaceFirst(",", "."), - ).toAmount(fractionDigits: 2) - : Decimal.parse(baseAmountString).toAmount(fractionDigits: 2); - - final Decimal? _price = - ref - .read(priceAnd24hChangeNotifierProvider) - .getTokenPrice( - ref.read(pCurrentTokenWallet)!.tokenContract.address, - ) - ?.value; + final baseAmount = baseAmountString.contains(",") + ? Decimal.parse( + baseAmountString.replaceFirst(",", "."), + ).toAmount(fractionDigits: 2) + : Decimal.parse(baseAmountString).toAmount(fractionDigits: 2); + + final Decimal? _price = ref + .read(priceAnd24hChangeNotifierProvider) + .getTokenPrice(ref.read(pCurrentTokenWallet)!.tokenContract.address) + ?.value; if (_price == null || _price == Decimal.zero) { _amountToSend = Decimal.zero.toAmount(fractionDigits: tokenDecimals); } else { - _amountToSend = - baseAmount <= Amount.zero - ? Decimal.zero.toAmount(fractionDigits: tokenDecimals) - : (baseAmount.decimal / _price) - .toDecimal(scaleOnInfinitePrecision: tokenDecimals) - .toAmount(fractionDigits: tokenDecimals); + _amountToSend = baseAmount <= Amount.zero + ? Decimal.zero.toAmount(fractionDigits: tokenDecimals) + : (baseAmount.decimal / _price) + .toDecimal(scaleOnInfinitePrecision: tokenDecimals) + .toAmount(fractionDigits: tokenDecimals); } if (_cachedAmountToSend != null && _cachedAmountToSend == _amountToSend) { return; @@ -581,8 +577,10 @@ class _DesktopTokenSendState extends ConsumerState { .read( pTokenBalance(( walletId: walletId, - contractAddress: - ref.read(pCurrentTokenWallet)!.tokenContract.address, + contractAddress: ref + .read(pCurrentTokenWallet)! + .tokenContract + .address, )), ) .spendable @@ -679,10 +677,9 @@ class _DesktopTokenSendState extends ConsumerState { Text( "Send from", style: STextStyles.desktopTextExtraSmall(context).copyWith( - color: - Theme.of( - context, - ).extension()!.textFieldActiveSearchIconRight, + color: Theme.of( + context, + ).extension()!.textFieldActiveSearchIconRight, ), textAlign: TextAlign.left, ), @@ -692,10 +689,9 @@ class _DesktopTokenSendState extends ConsumerState { Text( "Amount", style: STextStyles.desktopTextExtraSmall(context).copyWith( - color: - Theme.of( - context, - ).extension()!.textFieldActiveSearchIconRight, + color: Theme.of( + context, + ).extension()!.textFieldActiveSearchIconRight, ), textAlign: TextAlign.left, ), @@ -715,13 +711,12 @@ class _DesktopTokenSendState extends ConsumerState { key: const Key("amountInputFieldCryptoTextFieldKey"), controller: cryptoAmountController, focusNode: _cryptoFocus, - keyboardType: - Util.isDesktop - ? null - : const TextInputType.numberWithOptions( - signed: false, - decimal: true, - ), + keyboardType: Util.isDesktop + ? null + : const TextInputType.numberWithOptions( + signed: false, + decimal: true, + ), textAlign: TextAlign.right, inputFormatters: [ AmountInputFormatter( @@ -752,10 +747,9 @@ class _DesktopTokenSendState extends ConsumerState { ), hintText: "0", hintStyle: STextStyles.desktopTextExtraSmall(context).copyWith( - color: - Theme.of( - context, - ).extension()!.textFieldDefaultText, + color: Theme.of( + context, + ).extension()!.textFieldDefaultText, ), prefixIcon: FittedBox( fit: BoxFit.scaleDown, @@ -764,10 +758,9 @@ class _DesktopTokenSendState extends ConsumerState { child: Text( ref.watch(pAmountUnit(coin)).unitForContract(tokenContract), style: STextStyles.smallMed14(context).copyWith( - color: - Theme.of( - context, - ).extension()!.accentColorDark, + color: Theme.of( + context, + ).extension()!.accentColorDark, ), ), ), @@ -790,13 +783,12 @@ class _DesktopTokenSendState extends ConsumerState { key: const Key("amountInputFieldFiatTextFieldKey"), controller: baseAmountController, focusNode: _baseFocus, - keyboardType: - Util.isDesktop - ? null - : const TextInputType.numberWithOptions( - signed: false, - decimal: true, - ), + keyboardType: Util.isDesktop + ? null + : const TextInputType.numberWithOptions( + signed: false, + decimal: true, + ), textAlign: TextAlign.right, inputFormatters: [ AmountInputFormatter( @@ -823,10 +815,9 @@ class _DesktopTokenSendState extends ConsumerState { ), hintText: "0", hintStyle: STextStyles.desktopTextExtraSmall(context).copyWith( - color: - Theme.of( - context, - ).extension()!.textFieldDefaultText, + color: Theme.of( + context, + ).extension()!.textFieldDefaultText, ), prefixIcon: FittedBox( fit: BoxFit.scaleDown, @@ -839,10 +830,9 @@ class _DesktopTokenSendState extends ConsumerState { ), ), style: STextStyles.smallMed14(context).copyWith( - color: - Theme.of( - context, - ).extension()!.accentColorDark, + color: Theme.of( + context, + ).extension()!.accentColorDark, ), ), ), @@ -853,10 +843,9 @@ class _DesktopTokenSendState extends ConsumerState { Text( "Send to", style: STextStyles.desktopTextExtraSmall(context).copyWith( - color: - Theme.of( - context, - ).extension()!.textFieldActiveSearchIconRight, + color: Theme.of( + context, + ).extension()!.textFieldActiveSearchIconRight, ), textAlign: TextAlign.left, ), @@ -893,127 +882,128 @@ class _DesktopTokenSendState extends ConsumerState { }, focusNode: _addressFocusNode, style: STextStyles.desktopTextExtraSmall(context).copyWith( - color: - Theme.of( - context, - ).extension()!.textFieldActiveText, + color: Theme.of( + context, + ).extension()!.textFieldActiveText, height: 1.8, ), - decoration: standardInputDecoration( - "Enter ${tokenContract.symbol} address", - _addressFocusNode, - context, - desktopMed: true, - ).copyWith( - contentPadding: const EdgeInsets.only( - left: 16, - top: 11, - bottom: 12, - right: 5, - ), - suffixIcon: Padding( - padding: - sendToController.text.isEmpty + decoration: + standardInputDecoration( + "Enter ${tokenContract.symbol} address", + _addressFocusNode, + context, + desktopMed: true, + ).copyWith( + contentPadding: const EdgeInsets.only( + left: 16, + top: 11, + bottom: 12, + right: 5, + ), + suffixIcon: Padding( + padding: sendToController.text.isEmpty ? const EdgeInsets.only(right: 8) : const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - _addressToggleFlag - ? TextFieldIconButton( - key: const Key( - "sendTokenViewClearAddressFieldButtonKey", - ), - onTap: () { - sendToController.text = ""; - _address = ""; - _updatePreviewButtonState( - _address, - _amountToSend, - ); - setState(() { - _addressToggleFlag = false; - }); - }, - child: const XIcon(), - ) - : TextFieldIconButton( - key: const Key( - "sendTokenViewPasteAddressFieldButtonKey", - ), - onTap: pasteAddress, - child: - sendToController.text.isEmpty - ? const ClipboardIcon() - : const XIcon(), - ), - if (sendToController.text.isEmpty) - TextFieldIconButton( - key: const Key("sendTokenViewAddressBookButtonKey"), - onTap: () async { - final entry = await showDialog< - ContactAddressEntry? - >( - context: context, - builder: - (context) => DesktopDialog( - maxWidth: 696, - maxHeight: 600, - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, + child: UnconstrainedBox( + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + _addressToggleFlag + ? TextFieldIconButton( + key: const Key( + "sendTokenViewClearAddressFieldButtonKey", + ), + onTap: () { + sendToController.text = ""; + _address = ""; + _updatePreviewButtonState( + _address, + _amountToSend, + ); + setState(() { + _addressToggleFlag = false; + }); + }, + child: const XIcon(), + ) + : TextFieldIconButton( + key: const Key( + "sendTokenViewPasteAddressFieldButtonKey", + ), + onTap: pasteAddress, + child: sendToController.text.isEmpty + ? const ClipboardIcon() + : const XIcon(), + ), + if (sendToController.text.isEmpty) + TextFieldIconButton( + key: const Key( + "sendTokenViewAddressBookButtonKey", + ), + onTap: () async { + final entry = + await showDialog( + context: context, + builder: (context) => DesktopDialog( + maxWidth: 696, + maxHeight: 600, + child: Column( + mainAxisSize: MainAxisSize.min, children: [ - Padding( - padding: const EdgeInsets.only( - left: 32, - ), - child: Text( - "Address book", - style: STextStyles.desktopH3( - context, + Row( + mainAxisAlignment: + MainAxisAlignment + .spaceBetween, + children: [ + Padding( + padding: + const EdgeInsets.only( + left: 32, + ), + child: Text( + "Address book", + style: + STextStyles.desktopH3( + context, + ), + ), ), + const DesktopDialogCloseButton(), + ], + ), + Expanded( + child: AddressBookAddressChooser( + coin: coin, ), ), - const DesktopDialogCloseButton(), ], ), - Expanded( - child: AddressBookAddressChooser( - coin: coin, - ), - ), - ], - ), - ), - ); + ), + ); - if (entry != null) { - sendToController.text = - entry.other ?? entry.label; + if (entry != null) { + sendToController.text = + entry.other ?? entry.label; - _address = entry.address; + _address = entry.address; - _updatePreviewButtonState( - _address, - _amountToSend, - ); + _updatePreviewButtonState( + _address, + _amountToSend, + ); - setState(() { - _addressToggleFlag = true; - }); - } - }, - child: const AddressBookIcon(), - ), - ], + setState(() { + _addressToggleFlag = true; + }); + } + }, + child: const AddressBookIcon(), + ), + ], + ), + ), ), ), - ), - ), ), ), Builder( @@ -1031,8 +1021,9 @@ class _DesktopTokenSendState extends ConsumerState { error, textAlign: TextAlign.left, style: STextStyles.label(context).copyWith( - color: - Theme.of(context).extension()!.textError, + color: Theme.of( + context, + ).extension()!.textError, ), ), ), @@ -1054,10 +1045,9 @@ class _DesktopTokenSendState extends ConsumerState { Text( "Nonce", style: STextStyles.desktopTextExtraSmall(context).copyWith( - color: - Theme.of( - context, - ).extension()!.textFieldActiveSearchIconRight, + color: Theme.of( + context, + ).extension()!.textFieldActiveSearchIconRight, ), textAlign: TextAlign.left, ), @@ -1077,25 +1067,25 @@ class _DesktopTokenSendState extends ConsumerState { keyboardType: const TextInputType.numberWithOptions(), focusNode: _nonceFocusNode, style: STextStyles.desktopTextExtraSmall(context).copyWith( - color: - Theme.of( - context, - ).extension()!.textFieldActiveText, + color: Theme.of( + context, + ).extension()!.textFieldActiveText, height: 1.8, ), - decoration: standardInputDecoration( - "Leave empty to auto select nonce", - _nonceFocusNode, - context, - desktopMed: true, - ).copyWith( - contentPadding: const EdgeInsets.only( - left: 16, - top: 11, - bottom: 12, - right: 5, - ), - ), + decoration: + standardInputDecoration( + "Leave empty to auto select nonce", + _nonceFocusNode, + context, + desktopMed: true, + ).copyWith( + contentPadding: const EdgeInsets.only( + left: 16, + top: 11, + bottom: 12, + right: 5, + ), + ), ), ), const SizedBox(height: 36), @@ -1103,10 +1093,9 @@ class _DesktopTokenSendState extends ConsumerState { buttonHeight: ButtonHeight.l, label: "Preview send", enabled: ref.watch(previewTokenTxButtonStateProvider.state).state, - onPressed: - ref.watch(previewTokenTxButtonStateProvider.state).state - ? previewSend - : null, + onPressed: ref.watch(previewTokenTxButtonStateProvider.state).state + ? previewSend + : null, ), ], ); diff --git a/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/desktop_wallet_summary.dart b/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/desktop_wallet_summary.dart index c6ad2694d3..4d665d992a 100644 --- a/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/desktop_wallet_summary.dart +++ b/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/desktop_wallet_summary.dart @@ -77,25 +77,21 @@ class _WDesktopWalletSummaryState extends ConsumerState { prefsChangeNotifierProvider.select((value) => value.currency), ); - final tokenContract = - widget.isToken - ? ref.watch( - pCurrentTokenWallet.select((value) => value!.tokenContract), - ) - : null; - - final price = - widget.isToken - ? ref.watch( - priceAnd24hChangeNotifierProvider.select( - (value) => value.getTokenPrice(tokenContract!.address), - ), - ) - : ref.watch( - priceAnd24hChangeNotifierProvider.select( - (value) => value.getPrice(coin), - ), - ); + final tokenContract = widget.isToken + ? ref.watch(pCurrentTokenWallet.select((value) => value!.tokenContract)) + : null; + + final price = widget.isToken + ? ref.watch( + priceAnd24hChangeNotifierProvider.select( + (value) => value.getTokenPrice(tokenContract!.address), + ), + ) + : ref.watch( + priceAnd24hChangeNotifierProvider.select( + (value) => value.getPrice(coin), + ), + ); final _showAvailable = ref.watch(walletBalanceToggleStateProvider.state).state == @@ -115,15 +111,14 @@ class _WDesktopWalletSummaryState extends ConsumerState { break; } } else { - final Balance balance = - widget.isToken - ? ref.watch( - pTokenBalance(( - walletId: walletId, - contractAddress: tokenContract!.address, - )), - ) - : ref.watch(pWalletBalance(walletId)); + final Balance balance = widget.isToken + ? ref.watch( + pTokenBalance(( + walletId: walletId, + contractAddress: tokenContract!.address, + )), + ) + : ref.watch(pWalletBalance(walletId)); balanceToShow = _showAvailable ? balance.spendable : balance.total; } @@ -149,10 +144,9 @@ class _WDesktopWalletSummaryState extends ConsumerState { SelectableText( "${Amount.fromDecimal(price.value * balanceToShow.decimal, fractionDigits: 2).fiatString(locale: locale)} $baseCurrency", style: STextStyles.desktopTextExtraSmall(context).copyWith( - color: - Theme.of( - context, - ).extension()!.textSubtitle1, + color: Theme.of( + context, + ).extension()!.textSubtitle1, ), ), // if (coin is Firo) @@ -173,10 +167,9 @@ class _WDesktopWalletSummaryState extends ConsumerState { WalletRefreshButton( walletId: walletId, initialSyncStatus: widget.initialSyncStatus, - tokenContractAddress: - widget.isToken - ? ref.watch(pCurrentTokenWallet)!.tokenContract.address - : null, + tokenContractAddress: widget.isToken + ? ref.watch(pCurrentTokenWallet)!.tokenContract.address + : null, ), const SizedBox(width: 8), diff --git a/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/firo_desktop_wallet_summary.dart b/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/firo_desktop_wallet_summary.dart index 650f67f685..6e76174416 100644 --- a/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/firo_desktop_wallet_summary.dart +++ b/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/firo_desktop_wallet_summary.dart @@ -66,14 +66,13 @@ class _WFiroDesktopWalletSummaryState if (ref.watch( prefsChangeNotifierProvider.select((value) => value.externalCalls), )) { - price = - ref - .watch( - priceAnd24hChangeNotifierProvider.select( - (value) => value.getPrice(coin), - ), - ) - ?.value; + price = ref + .watch( + priceAnd24hChangeNotifierProvider.select( + (value) => value.getPrice(coin), + ), + ) + ?.value; } final _showAvailable = @@ -81,14 +80,16 @@ class _WFiroDesktopWalletSummaryState WalletBalanceToggleState.available; final balance0 = ref.watch(pWalletBalanceTertiary(walletId)); - final balanceToShowSpark = - _showAvailable ? balance0.spendable : balance0.total; + final balanceToShowSpark = _showAvailable + ? balance0.spendable + : balance0.total; final balance1 = ref.watch(pWalletBalanceSecondary(walletId)); final balance2 = ref.watch(pWalletBalance(walletId)); - final balanceToShowPublic = - _showAvailable ? balance2.spendable : balance2.total; + final balanceToShowPublic = _showAvailable + ? balance2.spendable + : balance2.total; return Consumer( builder: (context, ref, __) { @@ -168,10 +169,9 @@ class _Prefix extends StatelessWidget { SizedBox( width: 20, height: 20, - child: - asset.endsWith(".png") - ? Image(image: AssetImage(asset)) - : SvgPicture.asset(asset), + child: asset.endsWith(".png") + ? Image(image: AssetImage(asset)) + : SvgPicture.asset(asset), ), const SizedBox(width: 6), diff --git a/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/more_features/more_features_dialog.dart b/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/more_features/more_features_dialog.dart index 20f2524a68..173afd6f8f 100644 --- a/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/more_features/more_features_dialog.dart +++ b/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/more_features/more_features_dialog.dart @@ -525,26 +525,23 @@ class _MoreFeaturesItemState extends State<_MoreFeaturesItem> { height: _MoreFeaturesItem.iconSizeBG, radiusMultiplier: _MoreFeaturesItem.iconSizeBG, child: Center( - child: - widget.isSvgFile - ? SvgPicture.file( - File(widget.iconAsset), - width: _MoreFeaturesItem.iconSize, - height: _MoreFeaturesItem.iconSize, - color: - Theme.of( - context, - ).extension()!.settingsIconIcon, - ) - : SvgPicture.asset( - widget.iconAsset, - width: _MoreFeaturesItem.iconSize, - height: _MoreFeaturesItem.iconSize, - color: - Theme.of( - context, - ).extension()!.settingsIconIcon, - ), + child: widget.isSvgFile + ? SvgPicture.file( + File(widget.iconAsset), + width: _MoreFeaturesItem.iconSize, + height: _MoreFeaturesItem.iconSize, + color: Theme.of( + context, + ).extension()!.settingsIconIcon, + ) + : SvgPicture.asset( + widget.iconAsset, + width: _MoreFeaturesItem.iconSize, + height: _MoreFeaturesItem.iconSize, + color: Theme.of( + context, + ).extension()!.settingsIconIcon, + ), ), ), const SizedBox(width: 16), @@ -576,8 +573,9 @@ class _MoreFeaturesItemBase extends StatelessWidget { padding: const EdgeInsets.symmetric(vertical: 6, horizontal: 32), child: RoundedContainer( color: Colors.transparent, - borderColor: - Theme.of(context).extension()!.textFieldDefaultBG, + borderColor: Theme.of( + context, + ).extension()!.textFieldDefaultBG, onPressed: onPressed, child: child, ), @@ -636,10 +634,9 @@ class _MoreFeaturesClearSparkCacheItemState Assets.svg.x, width: _MoreFeaturesItem.iconSize, height: _MoreFeaturesItem.iconSize, - color: - Theme.of( - context, - ).extension()!.settingsIconIcon, + color: Theme.of( + context, + ).extension()!.settingsIconIcon, ), ), ), diff --git a/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/mweb_desktop_wallet_summary.dart b/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/mweb_desktop_wallet_summary.dart index 6ce1d19e44..8ad660b68e 100644 --- a/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/mweb_desktop_wallet_summary.dart +++ b/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/mweb_desktop_wallet_summary.dart @@ -62,14 +62,13 @@ class _WMwebDesktopWalletSummaryState if (ref.watch( prefsChangeNotifierProvider.select((value) => value.externalCalls), )) { - price = - ref - .watch( - priceAnd24hChangeNotifierProvider.select( - (value) => value.getPrice(coin), - ), - ) - ?.value; + price = ref + .watch( + priceAnd24hChangeNotifierProvider.select( + (value) => value.getPrice(coin), + ), + ) + ?.value; } final _showAvailable = @@ -77,12 +76,14 @@ class _WMwebDesktopWalletSummaryState WalletBalanceToggleState.available; final balance0 = ref.watch(pWalletBalanceSecondary(walletId)); - final balanceToShowSpark = - _showAvailable ? balance0.spendable : balance0.total; + final balanceToShowSpark = _showAvailable + ? balance0.spendable + : balance0.total; final balance2 = ref.watch(pWalletBalance(walletId)); - final balanceToShowPublic = - _showAvailable ? balance2.spendable : balance2.total; + final balanceToShowPublic = _showAvailable + ? balance2.spendable + : balance2.total; return Consumer( builder: (context, ref, __) { diff --git a/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/my_wallet.dart b/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/my_wallet.dart index 9a8d94da6f..884e1ff916 100644 --- a/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/my_wallet.dart +++ b/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/my_wallet.dart @@ -101,58 +101,69 @@ class _MyWalletState extends ConsumerState { children: [ widget.contractAddress == null ? isFrost - ? Column( - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.center, + ? Column( children: [ - Padding( - padding: const EdgeInsets.fromLTRB(0, 20, 0, 0), - child: SecondaryButton( - width: 200, - buttonHeight: ButtonHeight.l, - label: "Import sign config", - onPressed: () async { - final wallet = + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: const EdgeInsets.fromLTRB( + 0, + 20, + 0, + 0, + ), + child: SecondaryButton( + width: 200, + buttonHeight: ButtonHeight.l, + label: "Import sign config", + onPressed: () async { + final wallet = + ref + .read(pWallets) + .getWallet(widget.walletId) + as BitcoinFrostWallet; ref - .read(pWallets) - .getWallet(widget.walletId) - as BitcoinFrostWallet; - ref.read(pFrostScaffoldArgs.state).state = ( - info: ( - walletName: wallet.info.name, - frostCurrency: wallet.cryptoCurrency, - ), - walletId: widget.walletId, - stepRoutes: - FrostRouteGenerator + .read(pFrostScaffoldArgs.state) + .state = ( + info: ( + walletName: wallet.info.name, + frostCurrency: + wallet.cryptoCurrency, + ), + walletId: widget.walletId, + stepRoutes: FrostRouteGenerator .signFrostTxStepRoutes, - parentNav: Navigator.of(context), - frostInterruptionDialogType: - FrostInterruptionDialogType - .transactionCreation, - callerRouteName: MyStackView.routeName, - ); - - await Navigator.of( - context, - ).pushNamed(FrostStepScaffold.routeName); - }, - ), + parentNav: Navigator.of(context), + frostInterruptionDialogType: + FrostInterruptionDialogType + .transactionCreation, + callerRouteName: + MyStackView.routeName, + ); + + await Navigator.of(context).pushNamed( + FrostStepScaffold.routeName, + ); + }, + ), + ), + ], + ), + FrostSendView( + walletId: widget.walletId, + coin: coin, ), ], - ), - FrostSendView(walletId: widget.walletId, coin: coin), - ], - ) - : Padding( - padding: const EdgeInsets.all(20), - child: DesktopSend(walletId: widget.walletId), - ) + ) + : Padding( + padding: const EdgeInsets.all(20), + child: DesktopSend(walletId: widget.walletId), + ) : Padding( - padding: const EdgeInsets.all(20), - child: DesktopTokenSend(walletId: widget.walletId), - ), + padding: const EdgeInsets.all(20), + child: DesktopTokenSend(walletId: widget.walletId), + ), Padding( padding: const EdgeInsets.all(20), child: DesktopReceive( diff --git a/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/unlock_wallet_keys_desktop.dart b/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/unlock_wallet_keys_desktop.dart index 4f1db4504b..88eb183e9b 100644 --- a/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/unlock_wallet_keys_desktop.dart +++ b/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/unlock_wallet_keys_desktop.dart @@ -61,12 +61,11 @@ class _UnlockWalletKeysDesktopState unawaited( showDialog( context: context, - builder: - (context) => const Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: [LoadingIndicator(width: 200, height: 200)], - ), + builder: (context) => const Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [LoadingIndicator(width: 200, height: 200)], + ), ), ); @@ -108,10 +107,9 @@ class _UnlockWalletKeysDesktopState myName: wallet.frostInfo.myName, config: results[1]!, keys: results[0]!, - prevGen: - results[2] == null || results[3] == null - ? null - : (config: results[3]!, keys: results[2]!), + prevGen: results[2] == null || results[3] == null + ? null + : (config: results[3]!, keys: results[2]!), ); } } else { @@ -191,8 +189,10 @@ class _UnlockWalletKeysDesktopState mainAxisAlignment: MainAxisAlignment.end, children: [ DesktopDialogCloseButton( - onPressedOverride: - Navigator.of(context, rootNavigator: true).pop, + onPressedOverride: Navigator.of( + context, + rootNavigator: true, + ).pop, ), ], ), @@ -230,53 +230,53 @@ class _UnlockWalletKeysDesktopState enterPassphrase(); } }, - decoration: standardInputDecoration( - "Enter password", - passwordFocusNode, - context, - ).copyWith( - suffixIcon: UnconstrainedBox( - child: SizedBox( - height: 70, - child: Row( - children: [ - GestureDetector( - key: const Key( - "enterUnlockWalletKeysDesktopFieldShowPasswordButtonKey", - ), - onTap: () async { - setState(() { - hidePassword = !hidePassword; - }); - }, - child: Container( - decoration: BoxDecoration( - color: Colors.transparent, - borderRadius: BorderRadius.circular(1000), - ), - height: 32, - width: 32, - child: Center( - child: SvgPicture.asset( - hidePassword - ? Assets.svg.eye - : Assets.svg.eyeSlash, - color: - Theme.of( + decoration: + standardInputDecoration( + "Enter password", + passwordFocusNode, + context, + ).copyWith( + suffixIcon: UnconstrainedBox( + child: SizedBox( + height: 70, + child: Row( + children: [ + GestureDetector( + key: const Key( + "enterUnlockWalletKeysDesktopFieldShowPasswordButtonKey", + ), + onTap: () async { + setState(() { + hidePassword = !hidePassword; + }); + }, + child: Container( + decoration: BoxDecoration( + color: Colors.transparent, + borderRadius: BorderRadius.circular(1000), + ), + height: 32, + width: 32, + child: Center( + child: SvgPicture.asset( + hidePassword + ? Assets.svg.eye + : Assets.svg.eyeSlash, + color: Theme.of( context, ).extension()!.textDark3, - width: 24, - height: 19, + width: 24, + height: 19, + ), + ), ), ), - ), + const SizedBox(width: 10), + ], ), - const SizedBox(width: 10), - ], + ), ), ), - ), - ), onChanged: (newValue) { setState(() { continueEnabled = newValue.isNotEmpty; diff --git a/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/wallet_options_button.dart b/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/wallet_options_button.dart index 8136133ca6..3548e29f32 100644 --- a/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/wallet_options_button.dart +++ b/lib/pages_desktop_specific/my_stack_view/wallet_view/sub_widgets/wallet_options_button.dart @@ -63,23 +63,15 @@ enum _WalletOptions { } class WalletOptionsButton extends ConsumerWidget { - const WalletOptionsButton({ - super.key, - required this.walletId, - }); + const WalletOptionsButton({super.key, required this.walletId}); final String walletId; @override Widget build(BuildContext context, WidgetRef ref) { return RawMaterialButton( - constraints: const BoxConstraints( - minHeight: 32, - minWidth: 32, - ), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(1000), - ), + constraints: const BoxConstraints(minHeight: 32, minWidth: 32), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(1000)), onPressed: () async { final func = await showDialog<_WalletOptions?>( context: context, @@ -148,9 +140,10 @@ class WalletOptionsButton extends ConsumerWidget { case _WalletOptions.showXpub: final xpubData = await showLoading( delay: const Duration(milliseconds: 800), - whileFuture: (ref.read(pWallets).getWallet(walletId) - as ExtendedKeysInterface) - .getXPubs(), + whileFuture: + (ref.read(pWallets).getWallet(walletId) + as ExtendedKeysInterface) + .getXPubs(), context: context, message: "Loading xpubs", rootNavigator: Util.isDesktop, @@ -224,9 +217,8 @@ class WalletOptionsButton extends ConsumerWidget { unawaited( showDialog( context: context, - builder: (context) => EditRefreshHeightView( - walletId: walletId, - ), + builder: (context) => + EditRefreshHeightView(walletId: walletId), ), ); } else { @@ -242,19 +234,16 @@ class WalletOptionsButton extends ConsumerWidget { } }, child: Padding( - padding: const EdgeInsets.symmetric( - vertical: 19, - horizontal: 32, - ), + padding: const EdgeInsets.symmetric(vertical: 19, horizontal: 32), child: Row( children: [ SvgPicture.asset( Assets.svg.ellipsis, width: 20, height: 20, - color: Theme.of(context) - .extension()! - .buttonTextSecondary, + color: Theme.of( + context, + ).extension()!.buttonTextSecondary, ), ], ), @@ -297,7 +286,8 @@ class WalletOptionsPopupMenu extends ConsumerWidget { final bool canChangeRep = coin is NanoCurrency; final bool isFrost = coin is FrostCurrency; - final bool isMoneroWow = wallet is LibMoneroWallet || wallet is LibSalviumWallet; + final bool isMoneroWow = + wallet is LibMoneroWallet || wallet is LibSalviumWallet; return Stack( children: [ @@ -339,23 +329,21 @@ class WalletOptionsPopupMenu extends ConsumerWidget { Expanded( child: Text( _WalletOptions.addressList.prettyName, - style: STextStyles.desktopTextExtraExtraSmall( - context, - ).copyWith( - color: Theme.of(context) - .extension()! - .textDark, - ), + style: + STextStyles.desktopTextExtraExtraSmall( + context, + ).copyWith( + color: Theme.of( + context, + ).extension()!.textDark, + ), ), ), ], ), ), ), - if (canChangeRep) - const SizedBox( - height: 8, - ), + if (canChangeRep) const SizedBox(height: 8), if (canChangeRep) TransparentButton( onPressed: onChangeRepPressed, @@ -376,23 +364,21 @@ class WalletOptionsPopupMenu extends ConsumerWidget { Expanded( child: Text( _WalletOptions.changeRepresentative.prettyName, - style: STextStyles.desktopTextExtraExtraSmall( - context, - ).copyWith( - color: Theme.of(context) - .extension()! - .textDark, - ), + style: + STextStyles.desktopTextExtraExtraSmall( + context, + ).copyWith( + color: Theme.of( + context, + ).extension()!.textDark, + ), ), ), ], ), ), ), - if (isFrost) - const SizedBox( - height: 8, - ), + if (isFrost) const SizedBox(height: 8), if (isFrost) TransparentButton( onPressed: onFrostMSWalletOptionsPressed, @@ -413,23 +399,21 @@ class WalletOptionsPopupMenu extends ConsumerWidget { Expanded( child: Text( _WalletOptions.frostOptions.prettyName, - style: STextStyles.desktopTextExtraExtraSmall( - context, - ).copyWith( - color: Theme.of(context) - .extension()! - .textDark, - ), + style: + STextStyles.desktopTextExtraExtraSmall( + context, + ).copyWith( + color: Theme.of( + context, + ).extension()!.textDark, + ), ), ), ], ), ), ), - if (isMoneroWow) - const SizedBox( - height: 8, - ), + if (isMoneroWow) const SizedBox(height: 8), if (isMoneroWow) TransparentButton( onPressed: onRefreshHeightPressed, @@ -450,23 +434,21 @@ class WalletOptionsPopupMenu extends ConsumerWidget { Expanded( child: Text( _WalletOptions.refreshFromHeight.prettyName, - style: STextStyles.desktopTextExtraExtraSmall( - context, - ).copyWith( - color: Theme.of(context) - .extension()! - .textDark, - ), + style: + STextStyles.desktopTextExtraExtraSmall( + context, + ).copyWith( + color: Theme.of( + context, + ).extension()!.textDark, + ), ), ), ], ), ), ), - if (xpubEnabled) - const SizedBox( - height: 8, - ), + if (xpubEnabled) const SizedBox(height: 8), if (xpubEnabled) TransparentButton( onPressed: onShowXpubPressed, @@ -487,22 +469,21 @@ class WalletOptionsPopupMenu extends ConsumerWidget { Expanded( child: Text( _WalletOptions.showXpub.prettyName, - style: STextStyles.desktopTextExtraExtraSmall( - context, - ).copyWith( - color: Theme.of(context) - .extension()! - .textDark, - ), + style: + STextStyles.desktopTextExtraExtraSmall( + context, + ).copyWith( + color: Theme.of( + context, + ).extension()!.textDark, + ), ), ), ], ), ), ), - const SizedBox( - height: 8, - ), + const SizedBox(height: 8), TransparentButton( onPressed: onDeletePressed, child: Padding( @@ -522,13 +503,14 @@ class WalletOptionsPopupMenu extends ConsumerWidget { Expanded( child: Text( _WalletOptions.deleteWallet.prettyName, - style: STextStyles.desktopTextExtraExtraSmall( - context, - ).copyWith( - color: Theme.of(context) - .extension()! - .textDark, - ), + style: + STextStyles.desktopTextExtraExtraSmall( + context, + ).copyWith( + color: Theme.of( + context, + ).extension()!.textDark, + ), ), ), ], @@ -546,11 +528,7 @@ class WalletOptionsPopupMenu extends ConsumerWidget { } class TransparentButton extends StatelessWidget { - const TransparentButton({ - super.key, - required this.child, - this.onPressed, - }); + const TransparentButton({super.key, required this.child, this.onPressed}); final Widget child; final VoidCallback? onPressed; @@ -558,10 +536,7 @@ class TransparentButton extends StatelessWidget { @override Widget build(BuildContext context) { return RawMaterialButton( - constraints: const BoxConstraints( - minHeight: 32, - minWidth: 32, - ), + constraints: const BoxConstraints(minHeight: 32, minWidth: 32), materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular( diff --git a/lib/pages_desktop_specific/password/forgotten_passphrase_restore_from_swb.dart b/lib/pages_desktop_specific/password/forgotten_passphrase_restore_from_swb.dart index 161459e439..c801975e5e 100644 --- a/lib/pages_desktop_specific/password/forgotten_passphrase_restore_from_swb.dart +++ b/lib/pages_desktop_specific/password/forgotten_passphrase_restore_from_swb.dart @@ -96,20 +96,15 @@ class _ForgottenPassphraseRestoreFromSWBState child: Text( "Decrypting ${AppConfig.prefix} backup file", style: STextStyles.pageTitleH2(context).copyWith( - color: - Theme.of(context).extension()!.textWhite, + color: Theme.of( + context, + ).extension()!.textWhite, ), ), ), ), - const SizedBox( - height: 64, - ), - const Center( - child: LoadingIndicator( - width: 100, - ), - ), + const SizedBox(height: 64), + const Center(child: LoadingIndicator(width: 100)), ], ), ), @@ -161,9 +156,7 @@ class _ForgottenPassphraseRestoreFromSWBState ), ], ), - const SizedBox( - height: 44, - ), + const SizedBox(height: 44), Flexible( child: StackRestoreProgressView( jsonString: jsonString, @@ -220,8 +213,9 @@ class _ForgottenPassphraseRestoreFromSWBState ref.refresh(storageCryptoHandlerProvider); await DB.instance.init(); if (mounted) { - Navigator.of(context) - .popUntil(ModalRoute.withName(CreatePasswordView.routeName)); + Navigator.of( + context, + ).popUntil(ModalRoute.withName(CreatePasswordView.routeName)); Navigator.of(context).pop(); } }, @@ -241,21 +235,17 @@ class _ForgottenPassphraseRestoreFromSWBState "Restore from backup", style: STextStyles.desktopH1(context), ), - const SizedBox( - height: 32, - ), + const SizedBox(height: 32), Text( "Use your ${AppConfig.prefix} backup file to restore your wallets, address book, and wallet preferences.", textAlign: TextAlign.center, style: STextStyles.desktopTextSmall(context).copyWith( - color: Theme.of(context) - .extension()! - .textSubtitle1, + color: Theme.of( + context, + ).extension()!.textSubtitle1, ), ), - const SizedBox( - height: 40, - ), + const SizedBox(height: 40), GestureDetector( onTap: () async { try { @@ -290,20 +280,16 @@ class _ForgottenPassphraseRestoreFromSWBState child: UnconstrainedBox( child: Row( children: [ - const SizedBox( - width: 24, - ), + const SizedBox(width: 24), SvgPicture.asset( Assets.svg.folder, - color: Theme.of(context) - .extension()! - .textDark3, + color: Theme.of( + context, + ).extension()!.textDark3, width: 24, height: 24, ), - const SizedBox( - width: 12, - ), + const SizedBox(width: 12), ], ), ), @@ -321,16 +307,14 @@ class _ForgottenPassphraseRestoreFromSWBState setState(() { _enableButton = passwordController.text.isNotEmpty && - fileLocationController.text.isNotEmpty; + fileLocationController.text.isNotEmpty; }); }, ), ), ), ), - const SizedBox( - height: 16, - ), + const SizedBox(height: 16), ClipRRect( borderRadius: BorderRadius.circular( Constants.size.circularBorderRadius, @@ -339,67 +323,63 @@ class _ForgottenPassphraseRestoreFromSWBState key: const Key("restoreFromFilePasswordFieldKey"), focusNode: passwordFocusNode, controller: passwordController, - style: STextStyles.desktopTextMedium(context).copyWith( - height: 2, - ), + style: STextStyles.desktopTextMedium( + context, + ).copyWith(height: 2), obscureText: hidePassword, enableSuggestions: false, autocorrect: false, - decoration: standardInputDecoration( - "Enter passphrase", - passwordFocusNode, - context, - ).copyWith( - suffixIcon: UnconstrainedBox( - child: SizedBox( - height: 70, - child: Row( - children: [ - const SizedBox( - width: 24, - ), - GestureDetector( - key: const Key( - "restoreFromFilePasswordFieldShowPasswordButtonKey", - ), - onTap: () async { - setState(() { - hidePassword = !hidePassword; - }); - }, - child: MouseRegion( - cursor: SystemMouseCursors.click, - child: SvgPicture.asset( - hidePassword - ? Assets.svg.eye - : Assets.svg.eyeSlash, - color: Theme.of(context) - .extension()! - .textDark3, - width: 24, - height: 24, + decoration: + standardInputDecoration( + "Enter passphrase", + passwordFocusNode, + context, + ).copyWith( + suffixIcon: UnconstrainedBox( + child: SizedBox( + height: 70, + child: Row( + children: [ + const SizedBox(width: 24), + GestureDetector( + key: const Key( + "restoreFromFilePasswordFieldShowPasswordButtonKey", + ), + onTap: () async { + setState(() { + hidePassword = !hidePassword; + }); + }, + child: MouseRegion( + cursor: SystemMouseCursors.click, + child: SvgPicture.asset( + hidePassword + ? Assets.svg.eye + : Assets.svg.eyeSlash, + color: Theme.of( + context, + ).extension()!.textDark3, + width: 24, + height: 24, + ), + ), ), - ), - ), - const SizedBox( - width: 12, + const SizedBox(width: 12), + ], ), - ], + ), ), ), - ), - ), onChanged: (newValue) { setState(() { - _enableButton = passwordController.text.isNotEmpty && + _enableButton = + passwordController.text.isNotEmpty && fileLocationController.text.isNotEmpty; }); }, ), ), - const SizedBox( - height: 24, - ), + const SizedBox(height: 24), PrimaryButton( label: "Restore", enabled: _enableButton, @@ -407,9 +387,7 @@ class _ForgottenPassphraseRestoreFromSWBState restore(); }, ), - const SizedBox( - height: kDesktopAppBarHeight, - ), + const SizedBox(height: kDesktopAppBarHeight), ], ), ), diff --git a/lib/pages_desktop_specific/settings/desktop_settings_view.dart b/lib/pages_desktop_specific/settings/desktop_settings_view.dart index d0747f7b63..aae8278fa5 100644 --- a/lib/pages_desktop_specific/settings/desktop_settings_view.dart +++ b/lib/pages_desktop_specific/settings/desktop_settings_view.dart @@ -95,13 +95,7 @@ class _DesktopSettingsViewState extends ConsumerState { appBar: const DesktopAppBar( isCompactHeight: true, leading: Row( - children: [ - SizedBox( - width: 24, - height: 24, - ), - DesktopSettingsTitle(), - ], + children: [SizedBox(width: 24, height: 24), DesktopSettingsTitle()], ), ), body: Row( @@ -110,14 +104,14 @@ class _DesktopSettingsViewState extends ConsumerState { padding: EdgeInsets.all(15.0), child: Align( alignment: Alignment.topLeft, - child: SingleChildScrollView( - child: SettingsMenu(), - ), + child: SingleChildScrollView(child: SettingsMenu()), ), ), Expanded( - child: contentViews[ - ref.watch(selectedSettingsMenuItemStateProvider.state).state], + child: + contentViews[ref + .watch(selectedSettingsMenuItemStateProvider.state) + .state], ), ], ), @@ -130,9 +124,6 @@ class DesktopSettingsTitle extends StatelessWidget { @override Widget build(BuildContext context) { - return Text( - "Settings", - style: STextStyles.desktopH3(context), - ); + return Text("Settings", style: STextStyles.desktopH3(context)); } } diff --git a/lib/pages_desktop_specific/settings/settings_menu.dart b/lib/pages_desktop_specific/settings/settings_menu.dart index 1ec12e5f65..358462af7f 100644 --- a/lib/pages_desktop_specific/settings/settings_menu.dart +++ b/lib/pages_desktop_specific/settings/settings_menu.dart @@ -20,9 +20,7 @@ import 'settings_menu_item.dart'; final selectedSettingsMenuItemStateProvider = StateProvider((_) => 0); class SettingsMenu extends ConsumerStatefulWidget { - const SettingsMenu({ - super.key, - }); + const SettingsMenu({super.key}); @override ConsumerState createState() => _SettingsMenuState(); @@ -57,25 +55,23 @@ class _SettingsMenuState extends ConsumerState { Column( mainAxisSize: MainAxisSize.min, children: [ - if (i > 0) - const SizedBox( - height: 2, - ), + if (i > 0) const SizedBox(height: 2), SettingsMenuItem( icon: SvgPicture.asset( Assets.svg.polygon, width: 11, height: 11, - color: ref + color: + ref .watch( selectedSettingsMenuItemStateProvider .state, ) .state == i - ? Theme.of(context) - .extension()! - .accentColorBlue + ? Theme.of( + context, + ).extension()!.accentColorBlue : Colors.transparent, ), label: labels[i], @@ -83,9 +79,13 @@ class _SettingsMenuState extends ConsumerState { group: ref .watch(selectedSettingsMenuItemStateProvider.state) .state, - onChanged: (newValue) => ref - .read(selectedSettingsMenuItemStateProvider.state) - .state = newValue, + onChanged: (newValue) => + ref + .read( + selectedSettingsMenuItemStateProvider.state, + ) + .state = + newValue, ), ], ), diff --git a/lib/pages_desktop_specific/settings/settings_menu/backup_and_restore/create_auto_backup.dart b/lib/pages_desktop_specific/settings/settings_menu/backup_and_restore/create_auto_backup.dart index 3ffea65084..525d321e52 100644 --- a/lib/pages_desktop_specific/settings/settings_menu/backup_and_restore/create_auto_backup.dart +++ b/lib/pages_desktop_specific/settings/settings_menu/backup_and_restore/create_auto_backup.dart @@ -44,9 +44,7 @@ import '../../../../widgets/stack_dialog.dart'; import '../../../../widgets/stack_text_field.dart'; class CreateAutoBackup extends ConsumerStatefulWidget { - const CreateAutoBackup({ - super.key, - }); + const CreateAutoBackup({super.key}); @override ConsumerState createState() => _CreateAutoBackup(); @@ -154,9 +152,7 @@ class _CreateAutoBackup extends ConsumerState { const DesktopDialogCloseButton(), ], ), - const SizedBox( - height: 30, - ), + const SizedBox(height: 30), Container( alignment: Alignment.centerLeft, padding: const EdgeInsets.only(left: 32), @@ -168,9 +164,7 @@ class _CreateAutoBackup extends ConsumerState { textAlign: TextAlign.left, ), ), - const SizedBox( - height: 10, - ), + const SizedBox(height: 10), Padding( padding: const EdgeInsets.symmetric(horizontal: 32), child: Column( @@ -216,20 +210,16 @@ class _CreateAutoBackup extends ConsumerState { suffixIcon: UnconstrainedBox( child: Row( children: [ - const SizedBox( - width: 16, - ), + const SizedBox(width: 16), SvgPicture.asset( Assets.svg.folder, - color: Theme.of(context) - .extension()! - .textDark3, + color: Theme.of( + context, + ).extension()!.textDark3, width: 16, height: 16, ), - const SizedBox( - width: 12, - ), + const SizedBox(width: 12), ], ), ), @@ -250,20 +240,18 @@ class _CreateAutoBackup extends ConsumerState { }, ), if (!Platform.isAndroid && !Platform.isIOS) - const SizedBox( - height: 24, - ), + const SizedBox(height: 24), if (isDesktop) Padding( padding: const EdgeInsets.only(bottom: 10.0), child: Text( "Create a passphrase", - style: - STextStyles.desktopTextExtraSmall(context).copyWith( - color: Theme.of(context) - .extension()! - .textDark3, - ), + style: STextStyles.desktopTextExtraSmall(context) + .copyWith( + color: Theme.of( + context, + ).extension()!.textDark3, + ), textAlign: TextAlign.left, ), ), @@ -279,46 +267,44 @@ class _CreateAutoBackup extends ConsumerState { obscureText: hidePassword, enableSuggestions: false, autocorrect: false, - decoration: standardInputDecoration( - "Create passphrase", - passphraseFocusNode, - context, - ).copyWith( - labelStyle: - isDesktop ? STextStyles.fieldLabel(context) : null, - suffixIcon: UnconstrainedBox( - child: Row( - children: [ - const SizedBox( - width: 16, - ), - GestureDetector( - key: const Key( - "createBackupPasswordFieldShowPasswordButtonKey", - ), - onTap: () async { - setState(() { - hidePassword = !hidePassword; - }); - }, - child: SvgPicture.asset( - hidePassword - ? Assets.svg.eye - : Assets.svg.eyeSlash, - color: Theme.of(context) - .extension()! - .textDark3, - width: 16, - height: 16, - ), - ), - const SizedBox( - width: 12, + decoration: + standardInputDecoration( + "Create passphrase", + passphraseFocusNode, + context, + ).copyWith( + labelStyle: isDesktop + ? STextStyles.fieldLabel(context) + : null, + suffixIcon: UnconstrainedBox( + child: Row( + children: [ + const SizedBox(width: 16), + GestureDetector( + key: const Key( + "createBackupPasswordFieldShowPasswordButtonKey", + ), + onTap: () async { + setState(() { + hidePassword = !hidePassword; + }); + }, + child: SvgPicture.asset( + hidePassword + ? Assets.svg.eye + : Assets.svg.eyeSlash, + color: Theme.of( + context, + ).extension()!.textDark3, + width: 16, + height: 16, + ), + ), + const SizedBox(width: 12), + ], ), - ], + ), ), - ), - ), onChanged: (newValue) { if (newValue.isEmpty) { setState(() { @@ -386,26 +372,25 @@ class _CreateAutoBackup extends ConsumerState { width: 512, height: 5, fillColor: passwordStrength < 0.51 - ? Theme.of(context) - .extension()! - .accentColorRed + ? Theme.of( + context, + ).extension()!.accentColorRed : passwordStrength < 1 - ? Theme.of(context) - .extension()! - .accentColorYellow - : Theme.of(context) - .extension()! - .accentColorGreen, - backgroundColor: Theme.of(context) - .extension()! - .buttonBackSecondary, - percent: - passwordStrength < 0.25 ? 0.03 : passwordStrength, + ? Theme.of( + context, + ).extension()!.accentColorYellow + : Theme.of( + context, + ).extension()!.accentColorGreen, + backgroundColor: Theme.of( + context, + ).extension()!.buttonBackSecondary, + percent: passwordStrength < 0.25 + ? 0.03 + : passwordStrength, ), ), - const SizedBox( - height: 16, - ), + const SizedBox(height: 16), ClipRRect( borderRadius: BorderRadius.circular( Constants.size.circularBorderRadius, @@ -418,45 +403,42 @@ class _CreateAutoBackup extends ConsumerState { obscureText: hidePassword, enableSuggestions: false, autocorrect: false, - decoration: standardInputDecoration( - "Confirm passphrase", - passphraseRepeatFocusNode, - context, - ).copyWith( - labelStyle: STextStyles.fieldLabel(context), - suffixIcon: UnconstrainedBox( - child: Row( - children: [ - const SizedBox( - width: 16, - ), - GestureDetector( - key: const Key( - "createBackupPasswordFieldShowPasswordButtonKey", - ), - onTap: () async { - setState(() { - hidePassword = !hidePassword; - }); - }, - child: SvgPicture.asset( - hidePassword - ? Assets.svg.eye - : Assets.svg.eyeSlash, - color: Theme.of(context) - .extension()! - .textDark3, - width: 16, - height: 16, - ), - ), - const SizedBox( - width: 12, + decoration: + standardInputDecoration( + "Confirm passphrase", + passphraseRepeatFocusNode, + context, + ).copyWith( + labelStyle: STextStyles.fieldLabel(context), + suffixIcon: UnconstrainedBox( + child: Row( + children: [ + const SizedBox(width: 16), + GestureDetector( + key: const Key( + "createBackupPasswordFieldShowPasswordButtonKey", + ), + onTap: () async { + setState(() { + hidePassword = !hidePassword; + }); + }, + child: SvgPicture.asset( + hidePassword + ? Assets.svg.eye + : Assets.svg.eyeSlash, + color: Theme.of( + context, + ).extension()!.textDark3, + width: 16, + height: 16, + ), + ), + const SizedBox(width: 12), + ], ), - ], + ), ), - ), - ), onChanged: (newValue) { setState(() {}); // TODO: ? check if passwords match? @@ -466,9 +448,7 @@ class _CreateAutoBackup extends ConsumerState { ], ), ), - const SizedBox( - height: 24, - ), + const SizedBox(height: 24), Container( alignment: Alignment.centerLeft, padding: const EdgeInsets.only(left: 32), @@ -480,47 +460,39 @@ class _CreateAutoBackup extends ConsumerState { textAlign: TextAlign.left, ), ), - const SizedBox( - height: 10, - ), + const SizedBox(height: 10), Padding( - padding: const EdgeInsets.only( - left: 32, - right: 32, - ), + padding: const EdgeInsets.only(left: 32, right: 32), child: isDesktop ? DropdownButtonHideUnderline( child: DropdownButton2( isExpanded: true, value: _currentDropDownValue, items: [ - ..._dropDownItems.map( - (e) { - String message = ""; - switch (e) { - case BackupFrequencyType.everyTenMinutes: - message = "Every 10 minutes"; - break; - case BackupFrequencyType.everyAppStart: - message = "Every app startup"; - break; - case BackupFrequencyType.afterClosingAWallet: - message = - "After closing a cryptocurrency wallet"; - break; - } + ..._dropDownItems.map((e) { + String message = ""; + switch (e) { + case BackupFrequencyType.everyTenMinutes: + message = "Every 10 minutes"; + break; + case BackupFrequencyType.everyAppStart: + message = "Every app startup"; + break; + case BackupFrequencyType.afterClosingAWallet: + message = "After closing a cryptocurrency wallet"; + break; + } - return DropdownMenuItem( - value: e, - child: Text( - message, - style: STextStyles.desktopTextExtraExtraSmall( - context, - ), + return DropdownMenuItem( + value: e, + child: Text( + message, + style: STextStyles.desktopTextExtraExtraSmall( + context, ), - ); - }, - ), + ), + ); + }), ], onChanged: (value) { if (value is BackupFrequencyType) { @@ -529,8 +501,9 @@ class _CreateAutoBackup extends ConsumerState { .backupFrequencyType != value) { ref - .read(prefsChangeNotifierProvider) - .backupFrequencyType = value; + .read(prefsChangeNotifierProvider) + .backupFrequencyType = + value; } setState(() { _currentDropDownValue = value; @@ -542,18 +515,18 @@ class _CreateAutoBackup extends ConsumerState { Assets.svg.chevronDown, width: 10, height: 5, - color: Theme.of(context) - .extension()! - .textDark3, + color: Theme.of( + context, + ).extension()!.textDark3, ), ), dropdownStyleData: DropdownStyleData( offset: const Offset(0, -10), elevation: 0, decoration: BoxDecoration( - color: Theme.of(context) - .extension()! - .textFieldDefaultBG, + color: Theme.of( + context, + ).extension()!.textFieldDefaultBG, borderRadius: BorderRadius.circular( Constants.size.circularBorderRadius, ), @@ -581,9 +554,7 @@ class _CreateAutoBackup extends ConsumerState { onPressed: Navigator.of(context).pop, ), ), - const SizedBox( - width: 16, - ), + const SizedBox(width: 16), Expanded( child: PrimaryButton( buttonHeight: ButtonHeight.l, @@ -649,9 +620,7 @@ class _CreateAutoBackup extends ConsumerState { maxHeight: double.infinity, maxWidth: 450, child: Padding( - padding: const EdgeInsets.all( - 32, - ), + padding: const EdgeInsets.all(32), child: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: @@ -663,15 +632,13 @@ class _CreateAutoBackup extends ConsumerState { context, ), ), - const SizedBox( - height: 40, - ), + const SizedBox(height: 40), Text( "This shouldn't take long", - style: STextStyles - .desktopTextExtraExtraSmall( - context, - ), + style: + STextStyles.desktopTextExtraExtraSmall( + context, + ), ), ], ), @@ -695,18 +662,16 @@ class _CreateAutoBackup extends ConsumerState { String adkString; int adkVersion; try { - final adk = - await compute(generateAdk, passphrase); + final adk = await compute( + generateAdk, + passphrase, + ); adkString = Format.uint8listToString(adk.item2); adkVersion = adk.item1; } on Exception catch (e, s) { final String err = getErrorMessageFromSWBException(e); - Logging.instance.e( - err, - error: e, - stackTrace: s, - ); + Logging.instance.e(err, error: e, stackTrace: s); // pop encryption progress dialog Navigator.of(context).pop(); unawaited( @@ -718,11 +683,7 @@ class _CreateAutoBackup extends ConsumerState { ); return; } catch (e, s) { - Logging.instance.e( - "", - error: e, - stackTrace: s, - ); + Logging.instance.e("", error: e, stackTrace: s); // pop encryption progress dialog Navigator.of(context).pop(); unawaited( @@ -745,20 +706,22 @@ class _CreateAutoBackup extends ConsumerState { ); final DateTime now = DateTime.now(); - final String fileToSave = - createAutoBackupFilename(pathToSave, now); + final String fileToSave = createAutoBackupFilename( + pathToSave, + now, + ); final backup = await SWB.createStackWalletJSON( secureStorage: secureStore, ); - final bool result = - await SWB.encryptStackWalletWithADK( - fileToSave, - adkString, - jsonEncode(backup), - adkVersion, - ); + final bool result = await SWB + .encryptStackWalletWithADK( + fileToSave, + adkString, + jsonEncode(backup), + adkVersion, + ); // this future should already be complete unless there was an error encrypting await Future.wait([fut]); @@ -769,15 +732,18 @@ class _CreateAutoBackup extends ConsumerState { if (result) { ref - .read(prefsChangeNotifierProvider) - .autoBackupLocation = pathToSave; + .read(prefsChangeNotifierProvider) + .autoBackupLocation = + pathToSave; ref - .read(prefsChangeNotifierProvider) - .lastAutoBackup = now; + .read(prefsChangeNotifierProvider) + .lastAutoBackup = + now; ref - .read(prefsChangeNotifierProvider) - .isAutoBackupEnabled = true; + .read(prefsChangeNotifierProvider) + .isAutoBackupEnabled = + true; await showDialog( context: context, @@ -813,15 +779,13 @@ class _CreateAutoBackup extends ConsumerState { "${AppConfig.prefix} Auto Backup enabled!", style: STextStyles.desktopH3( - context, - ), + context, + ), ), const DesktopDialogCloseButton(), ], ), - const SizedBox( - height: 40, - ), + const SizedBox(height: 40), Row( children: [ const Spacer(), @@ -831,8 +795,9 @@ class _CreateAutoBackup extends ConsumerState { buttonHeight: ButtonHeight.l, onPressed: () { - Navigator.of(context) - .pop(); + Navigator.of( + context, + ).pop(); }, ), ), diff --git a/lib/pages_desktop_specific/settings/settings_menu/nodes_settings.dart b/lib/pages_desktop_specific/settings/settings_menu/nodes_settings.dart index bf6914869f..3aad798f92 100644 --- a/lib/pages_desktop_specific/settings/settings_menu/nodes_settings.dart +++ b/lib/pages_desktop_specific/settings/settings_menu/nodes_settings.dart @@ -68,9 +68,7 @@ class _NodesSettings extends ConsumerState { @override void initState() { _coins = _coins.toList(); - _coins.removeWhere( - (e) => e is Firo && e.network.isTestNet, - ); + _coins.removeWhere((e) => e is Firo && e.network.isTestNet); searchNodeController = TextEditingController(); searchNodeFocusNode = FocusNode(); @@ -99,11 +97,7 @@ class _NodesSettings extends ConsumerState { List coins = showTestNet ? _coins - : _coins - .where( - (e) => e.network == CryptoCurrencyNetwork.main, - ) - .toList(); + : _coins.where((e) => e.network == CryptoCurrencyNetwork.main).toList(); coins = _search(filter, coins); @@ -131,23 +125,17 @@ class _NodesSettings extends ConsumerState { width: 48, height: 48, ), - const SizedBox( - height: 16, - ), + const SizedBox(height: 16), Text( "Nodes", style: STextStyles.desktopTextSmall(context), ), - const SizedBox( - height: 16, - ), + const SizedBox(height: 16), Text( "Select a coin to see nodes", style: STextStyles.desktopTextExtraExtraSmall(context), ), - const SizedBox( - height: 20, - ), + const SizedBox(height: 20), ClipRRect( borderRadius: BorderRadius.circular( Constants.size.circularBorderRadius, @@ -161,56 +149,58 @@ class _NodesSettings extends ConsumerState { setState(() => filter = newString); }, style: STextStyles.field(context), - decoration: standardInputDecoration( - "Search", - searchNodeFocusNode, - context, - ).copyWith( - prefixIcon: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 10, - vertical: 16, - ), - child: SvgPicture.asset( - Assets.svg.search, - width: 16, - height: 16, - ), - ), - suffixIcon: searchNodeController.text.isNotEmpty - ? Padding( - padding: const EdgeInsets.only(right: 0), - child: UnconstrainedBox( - child: Row( - children: [ - TextFieldIconButton( - child: const XIcon(), - onTap: () async { - setState(() { - searchNodeController.text = ""; - filter = ""; - }); - }, + decoration: + standardInputDecoration( + "Search", + searchNodeFocusNode, + context, + ).copyWith( + prefixIcon: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 10, + vertical: 16, + ), + child: SvgPicture.asset( + Assets.svg.search, + width: 16, + height: 16, + ), + ), + suffixIcon: searchNodeController.text.isNotEmpty + ? Padding( + padding: const EdgeInsets.only( + right: 0, + ), + child: UnconstrainedBox( + child: Row( + children: [ + TextFieldIconButton( + child: const XIcon(), + onTap: () async { + setState(() { + searchNodeController.text = + ""; + filter = ""; + }); + }, + ), + ], ), - ], - ), - ), - ) - : null, - ), + ), + ) + : null, + ), ), ), ], ), - const SizedBox( - height: 20, - ), + const SizedBox(height: 20), Flexible( child: RoundedWhiteContainer( padding: const EdgeInsets.all(0), - borderColor: Theme.of(context) - .extension()! - .background, + borderColor: Theme.of( + context, + ).extension()!.background, child: ListView.separated( controller: nodeScrollController, physics: const AlwaysScrollableScrollPhysics(), @@ -221,8 +211,9 @@ class _NodesSettings extends ConsumerState { final coin = coins[index]; final count = ref .watch( - nodeServiceChangeNotifierProvider - .select((value) => value.getNodesFor(coin)), + nodeServiceChangeNotifierProvider.select( + (value) => value.getNodesFor(coin), + ), ) .length; @@ -261,9 +252,7 @@ class _NodesSettings extends ConsumerState { ); }, child: Padding( - padding: const EdgeInsets.all( - 12.0, - ), + padding: const EdgeInsets.all(12.0), child: Row( children: [ Row( @@ -275,9 +264,7 @@ class _NodesSettings extends ConsumerState { width: 24, height: 24, ), - const SizedBox( - width: 12, - ), + const SizedBox(width: 12), Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -312,9 +299,9 @@ class _NodesSettings extends ConsumerState { }, separatorBuilder: (context, index) => Container( height: 1, - color: Theme.of(context) - .extension()! - .background, + color: Theme.of( + context, + ).extension()!.background, ), itemCount: coins.length, ), diff --git a/lib/providers/db/drift_provider.dart b/lib/providers/db/drift_provider.dart index 658dd5bc7e..ac750ae166 100644 --- a/lib/providers/db/drift_provider.dart +++ b/lib/providers/db/drift_provider.dart @@ -10,7 +10,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; -import '../../db/drift/database.dart'; +import '../../db/drift/database.dart'; final pDrift = Provider.family( (ref, walletId) => Drift.get(walletId), diff --git a/lib/services/auto_swb_service.dart b/lib/services/auto_swb_service.dart index 24f58d0f78..243d5d411e 100644 --- a/lib/services/auto_swb_service.dart +++ b/lib/services/auto_swb_service.dart @@ -20,11 +20,7 @@ import '../utilities/flutter_secure_storage_interface.dart'; import '../utilities/logger.dart'; import '../utilities/prefs.dart'; -enum AutoSWBStatus { - idle, - backingUp, - error, -} +enum AutoSWBStatus { idle, backingUp, error } class AutoSWBService extends ChangeNotifier { Timer? _timer; @@ -74,16 +70,20 @@ class AutoSWBService extends ChangeNotifier { ); final jsonString = jsonEncode(json); - final adkString = - await secureStorageInterface.read(key: "auto_adk_string"); + final adkString = await secureStorageInterface.read( + key: "auto_adk_string", + ); - final adkVersionString = - await secureStorageInterface.read(key: "auto_adk_version_string"); + final adkVersionString = await secureStorageInterface.read( + key: "auto_adk_version_string", + ); final int adkVersion = int.parse(adkVersionString!); final DateTime now = DateTime.now(); - final String fileToSave = - createAutoBackupFilename(autoBackupDirectoryPath, now); + final String fileToSave = createAutoBackupFilename( + autoBackupDirectoryPath, + now, + ); final result = await SWB.encryptStackWalletWithADK( fileToSave, diff --git a/lib/services/exchange/exchange_data_loading_service.dart b/lib/services/exchange/exchange_data_loading_service.dart index 1bf16504d3..29785c2fc5 100644 --- a/lib/services/exchange/exchange_data_loading_service.dart +++ b/lib/services/exchange/exchange_data_loading_service.dart @@ -124,45 +124,41 @@ class ExchangeDataLoadingService { final List currencies; if (contract != null) { - currencies = - await (await isar).currencies - .filter() - .tokenContractEqualTo(contract) - .and() - .group( - (q) => - rateType == ExchangeRateType.fixed - ? q - .rateTypeEqualTo(SupportedRateType.both) - .or() - .rateTypeEqualTo(SupportedRateType.fixed) - : q - .rateTypeEqualTo(SupportedRateType.both) - .or() - .rateTypeEqualTo(SupportedRateType.estimated), - ) - .findAll(); + currencies = await (await isar).currencies + .filter() + .tokenContractEqualTo(contract) + .and() + .group( + (q) => rateType == ExchangeRateType.fixed + ? q + .rateTypeEqualTo(SupportedRateType.both) + .or() + .rateTypeEqualTo(SupportedRateType.fixed) + : q + .rateTypeEqualTo(SupportedRateType.both) + .or() + .rateTypeEqualTo(SupportedRateType.estimated), + ) + .findAll(); } else { - currencies = - await (await isar).currencies - .filter() - .group( - (q) => - rateType == ExchangeRateType.fixed - ? q - .rateTypeEqualTo(SupportedRateType.both) - .or() - .rateTypeEqualTo(SupportedRateType.fixed) - : q - .rateTypeEqualTo(SupportedRateType.both) - .or() - .rateTypeEqualTo(SupportedRateType.estimated), - ) - .and() - .tickerEqualTo(ticker, caseSensitive: false) - .and() - .tokenContractIsNull() - .findAll(); + currencies = await (await isar).currencies + .filter() + .group( + (q) => rateType == ExchangeRateType.fixed + ? q + .rateTypeEqualTo(SupportedRateType.both) + .or() + .rateTypeEqualTo(SupportedRateType.fixed) + : q + .rateTypeEqualTo(SupportedRateType.both) + .or() + .rateTypeEqualTo(SupportedRateType.estimated), + ) + .and() + .tickerEqualTo(ticker, caseSensitive: false) + .and() + .tokenContractIsNull() + .findAll(); } currencies.retainWhere((e) => e.getFuzzyNet() == fuzzyNet); @@ -248,12 +244,11 @@ class ExchangeDataLoadingService { final responseCurrencies = await exchange.getAllCurrencies(false); if (responseCurrencies.value != null) { await (await isar).writeTxn(() async { - final idsToDelete = - await (await isar).currencies - .where() - .exchangeNameEqualTo(ChangeNowExchange.exchangeName) - .idProperty() - .findAll(); + final idsToDelete = await (await isar).currencies + .where() + .exchangeNameEqualTo(ChangeNowExchange.exchangeName) + .idProperty() + .findAll(); await (await isar).currencies.deleteAll(idsToDelete); await (await isar).currencies.putAll(responseCurrencies.value!); }); @@ -405,12 +400,11 @@ class ExchangeDataLoadingService { if (responseCurrencies.value != null) { await (await isar).writeTxn(() async { - final idsToDelete = - await (await isar).currencies - .where() - .exchangeNameEqualTo(TrocadorExchange.exchangeName) - .idProperty() - .findAll(); + final idsToDelete = await (await isar).currencies + .where() + .exchangeNameEqualTo(TrocadorExchange.exchangeName) + .idProperty() + .findAll(); await (await isar).currencies.deleteAll(idsToDelete); await (await isar).currencies.putAll(responseCurrencies.value!); }); @@ -429,12 +423,11 @@ class ExchangeDataLoadingService { if (responseCurrencies.value != null) { await (await isar).writeTxn(() async { - final idsToDelete = - await (await isar).currencies - .where() - .exchangeNameEqualTo(NanswapExchange.exchangeName) - .idProperty() - .findAll(); + final idsToDelete = await (await isar).currencies + .where() + .exchangeNameEqualTo(NanswapExchange.exchangeName) + .idProperty() + .findAll(); await (await isar).currencies.deleteAll(idsToDelete); await (await isar).currencies.putAll(responseCurrencies.value!); }); diff --git a/lib/services/exchange/nanswap/nanswap_exchange.dart b/lib/services/exchange/nanswap/nanswap_exchange.dart index 2392199e79..9bc93ba532 100644 --- a/lib/services/exchange/nanswap/nanswap_exchange.dart +++ b/lib/services/exchange/nanswap/nanswap_exchange.dart @@ -138,24 +138,23 @@ class NanswapExchange extends Exchange { } return ExchangeResponse( - value: - response.value! - .where((e) => filter.contains(e.id)) - .map( - (e) => Currency( - exchangeName: exchangeName, - ticker: e.id, - name: e.name, - network: e.network, - image: e.image, - isFiat: false, - rateType: SupportedRateType.estimated, - isStackCoin: AppConfig.isStackCoin(e.id), - tokenContract: null, - isAvailable: true, - ), - ) - .toList(), + value: response.value! + .where((e) => filter.contains(e.id)) + .map( + (e) => Currency( + exchangeName: exchangeName, + ticker: e.id, + name: e.name, + network: e.network, + image: e.image, + isFiat: false, + rateType: SupportedRateType.estimated, + isStackCoin: AppConfig.isStackCoin(e.id), + tokenContract: null, + isAvailable: true, + ), + ) + .toList(), ); } on ExchangeException catch (e) { return ExchangeResponse(exception: e); diff --git a/lib/services/exchange/trocador/trocador_exchange.dart b/lib/services/exchange/trocador/trocador_exchange.dart index ffb217a9fa..bbcf366f8f 100644 --- a/lib/services/exchange/trocador/trocador_exchange.dart +++ b/lib/services/exchange/trocador/trocador_exchange.dart @@ -67,38 +67,37 @@ class TrocadorExchange extends Exchange { Estimate? estimate, required bool reversed, }) async { - final response = - reversed - ? await TrocadorAPI.createNewPaymentRateTrade( - isOnion: false, - rateId: estimate?.rateId, - fromTicker: from.toLowerCase(), - fromNetwork: onlySupportedNetwork, - toTicker: to.toLowerCase(), - toNetwork: onlySupportedNetwork, - toAmount: amount.toString(), - receivingAddress: addressTo, - receivingMemo: null, - refundAddress: addressRefund, - refundMemo: null, - exchangeProvider: estimate!.exchangeProvider!, - isFixedRate: fixedRate, - ) - : await TrocadorAPI.createNewStandardRateTrade( - isOnion: false, - rateId: estimate?.rateId, - fromTicker: from.toLowerCase(), - fromNetwork: onlySupportedNetwork, - toTicker: to.toLowerCase(), - toNetwork: onlySupportedNetwork, - fromAmount: amount.toString(), - receivingAddress: addressTo, - receivingMemo: null, - refundAddress: addressRefund, - refundMemo: null, - exchangeProvider: estimate!.exchangeProvider!, - isFixedRate: fixedRate, - ); + final response = reversed + ? await TrocadorAPI.createNewPaymentRateTrade( + isOnion: false, + rateId: estimate?.rateId, + fromTicker: from.toLowerCase(), + fromNetwork: onlySupportedNetwork, + toTicker: to.toLowerCase(), + toNetwork: onlySupportedNetwork, + toAmount: amount.toString(), + receivingAddress: addressTo, + receivingMemo: null, + refundAddress: addressRefund, + refundMemo: null, + exchangeProvider: estimate!.exchangeProvider!, + isFixedRate: fixedRate, + ) + : await TrocadorAPI.createNewStandardRateTrade( + isOnion: false, + rateId: estimate?.rateId, + fromTicker: from.toLowerCase(), + fromNetwork: onlySupportedNetwork, + toTicker: to.toLowerCase(), + toNetwork: onlySupportedNetwork, + fromAmount: amount.toString(), + receivingAddress: addressTo, + receivingMemo: null, + refundAddress: addressRefund, + refundMemo: null, + exchangeProvider: estimate!.exchangeProvider!, + isFixedRate: fixedRate, + ); if (response.value == null) { return ExchangeResponse(exception: response.exception); @@ -144,23 +143,22 @@ class TrocadorExchange extends Exchange { _cachedCurrencies?.removeWhere((e) => e.network != onlySupportedNetwork); - final value = - _cachedCurrencies - ?.map( - (e) => Currency( - exchangeName: exchangeName, - ticker: e.ticker, - name: e.name, - network: e.network, - image: e.image, - isFiat: false, - rateType: SupportedRateType.both, - isStackCoin: AppConfig.isStackCoin(e.ticker), - tokenContract: null, - isAvailable: true, - ), - ) - .toList(); + final value = _cachedCurrencies + ?.map( + (e) => Currency( + exchangeName: exchangeName, + ticker: e.ticker, + name: e.name, + network: e.network, + image: e.image, + isFiat: false, + rateType: SupportedRateType.both, + isStackCoin: AppConfig.isStackCoin(e.ticker), + tokenContract: null, + isAvailable: true, + ), + ) + .toList(); if (value == null) { return ExchangeResponse( @@ -222,24 +220,23 @@ class TrocadorExchange extends Exchange { bool fixedRate, bool reversed, ) async { - final response = - reversed - ? await TrocadorAPI.getNewPaymentRate( - isOnion: false, - fromTicker: from, - fromNetwork: onlySupportedNetwork, - toTicker: to, - toNetwork: onlySupportedNetwork, - toAmount: amount.toString(), - ) - : await TrocadorAPI.getNewStandardRate( - isOnion: false, - fromTicker: from, - fromNetwork: onlySupportedNetwork, - toTicker: to, - toNetwork: onlySupportedNetwork, - fromAmount: amount.toString(), - ); + final response = reversed + ? await TrocadorAPI.getNewPaymentRate( + isOnion: false, + fromTicker: from, + fromNetwork: onlySupportedNetwork, + toTicker: to, + toNetwork: onlySupportedNetwork, + toAmount: amount.toString(), + ) + : await TrocadorAPI.getNewStandardRate( + isOnion: false, + fromTicker: from, + fromNetwork: onlySupportedNetwork, + toTicker: to, + toNetwork: onlySupportedNetwork, + fromAmount: amount.toString(), + ); if (response.value == null) { return ExchangeResponse(exception: response.exception); @@ -288,9 +285,8 @@ class TrocadorExchange extends Exchange { } return ExchangeResponse( - value: - estimates - ..sort((a, b) => b.estimatedAmount.compareTo(a.estimatedAmount)), + value: estimates + ..sort((a, b) => b.estimatedAmount.compareTo(a.estimatedAmount)), ); } diff --git a/lib/services/node_service.dart b/lib/services/node_service.dart index c1bc338b37..96491cfe19 100644 --- a/lib/services/node_service.dart +++ b/lib/services/node_service.dart @@ -166,15 +166,14 @@ class NodeService extends ChangeNotifier { } List getNodesFor(CryptoCurrency coin) { - final list = - DB.instance - .values(boxName: DB.boxNameNodeModels) - .where( - (e) => - e.coinName == coin.identifier && - !e.id.startsWith(DefaultNodes.defaultNodeIdPrefix), - ) - .toList(); + final list = DB.instance + .values(boxName: DB.boxNameNodeModels) + .where( + (e) => + e.coinName == coin.identifier && + !e.id.startsWith(DefaultNodes.defaultNodeIdPrefix), + ) + .toList(); // add default to end of list list.addAll( @@ -270,8 +269,10 @@ class NodeService extends ChangeNotifier { bool enabled, bool shouldNotifyListeners, ) async { - final model = - DB.instance.get(boxName: DB.boxNameNodeModels, key: id)!; + final model = DB.instance.get( + boxName: DB.boxNameNodeModels, + key: id, + )!; await DB.instance.put( boxName: DB.boxNameNodeModels, key: model.id, diff --git a/lib/services/wallets.dart b/lib/services/wallets.dart index ffdfbdc0ae..360ee2fc84 100644 --- a/lib/services/wallets.dart +++ b/lib/services/wallets.dart @@ -201,11 +201,10 @@ class Wallets { boxName: DB.boxNameWalletsToDeleteOnStart, )) { await mainDB.isar.writeTxn( - () async => - await mainDB.isar.walletInfo - .where() - .walletIdEqualTo(walletId) - .deleteAll(), + () async => await mainDB.isar.walletInfo + .where() + .walletIdEqualTo(walletId) + .deleteAll(), ); } // clear list @@ -310,11 +309,10 @@ class Wallets { boxName: DB.boxNameWalletsToDeleteOnStart, )) { await mainDB.isar.writeTxn( - () async => - await mainDB.isar.walletInfo - .where() - .walletIdEqualTo(walletId) - .deleteAll(), + () async => await mainDB.isar.walletInfo + .where() + .walletIdEqualTo(walletId) + .deleteAll(), ); } // clear list @@ -394,17 +392,15 @@ class Wallets { final asyncWalletIds = await Future.wait(walletIDInitFutures); asyncWalletIds.removeWhere((e) => e == "dummy_ignore"); - final List> walletInitFutures = - asyncWalletIds - .map( - (id) => _wallets[id]!.init().then((_) { - if (shouldAutoSyncAll || - walletIdsToEnableAutoSync.contains(id)) { - _wallets[id]!.shouldAutoSync = true; - } - }), - ) - .toList(); + final List> walletInitFutures = asyncWalletIds + .map( + (id) => _wallets[id]!.init().then((_) { + if (shouldAutoSyncAll || walletIdsToEnableAutoSync.contains(id)) { + _wallets[id]!.shouldAutoSync = true; + } + }), + ) + .toList(); if (walletInitFutures.isNotEmpty && walletsToInitLinearly.isNotEmpty) { unawaited( @@ -435,11 +431,10 @@ class Wallets { boxName: DB.boxNameWalletsToDeleteOnStart, )) { await mainDB.isar.writeTxn( - () async => - await mainDB.isar.walletInfo - .where() - .walletIdEqualTo(walletId) - .deleteAll(), + () async => await mainDB.isar.walletInfo + .where() + .walletIdEqualTo(walletId) + .deleteAll(), ); } // clear list @@ -447,15 +442,14 @@ class Wallets { boxName: DB.boxNameWalletsToDeleteOnStart, ); - final walletInfoList = - await mainDB.isar.walletInfo - .where() - .filter() - .anyOf( - AppConfig.coins.map((e) => e.identifier), - (q, element) => q.coinNameMatches(element), - ) - .findAll(); + final walletInfoList = await mainDB.isar.walletInfo + .where() + .filter() + .anyOf( + AppConfig.coins.map((e) => e.identifier), + (q, element) => q.coinNameMatches(element), + ) + .findAll(); if (isDuress) { walletInfoList.retainWhere((e) => e.isDuressVisible); @@ -533,17 +527,16 @@ class Wallets { asyncWalletIds.removeWhere((e) => e == "dummy_ignore"); final List idsToRefresh = []; - final List> walletInitFutures = - asyncWalletIds - .map( - (id) => _wallets[id]!.init().then((_) { - if (shouldSyncAllOnceOnStartup || - walletIdsToSyncOnceOnStartup.contains(id)) { - idsToRefresh.add(id); - } - }), - ) - .toList(); + final List> walletInitFutures = asyncWalletIds + .map( + (id) => _wallets[id]!.init().then((_) { + if (shouldSyncAllOnceOnStartup || + walletIdsToSyncOnceOnStartup.contains(id)) { + idsToRefresh.add(id); + } + }), + ) + .toList(); Future _refreshFutures(List idsToRefresh) async { final start = DateTime.now(); diff --git a/lib/themes/stack_colors.dart b/lib/themes/stack_colors.dart index 29804aa0c5..26d1f63196 100644 --- a/lib/themes/stack_colors.dart +++ b/lib/themes/stack_colors.dart @@ -45,7 +45,7 @@ class StackColors extends ThemeExtension { final Color textError; final Color textRestore; -// button background + // button background final Color buttonBackPrimary; final Color buttonBackSecondary; final Color buttonBackPrimaryDisabled; @@ -58,7 +58,7 @@ class StackColors extends ThemeExtension { final Color numpadBackDefault; final Color bottomNavBack; -// button text/element + // button text/element final Color buttonTextPrimary; final Color buttonTextSecondary; final Color buttonTextPrimaryDisabled; @@ -73,17 +73,17 @@ class StackColors extends ThemeExtension { final Color customTextButtonEnabledText; final Color customTextButtonDisabledText; -// switch background + // switch background final Color switchBGOn; final Color switchBGOff; final Color switchBGDisabled; -// switch circle + // switch circle final Color switchCircleOn; final Color switchCircleOff; final Color switchCircleDisabled; -// step indicator background + // step indicator background final Color stepIndicatorBGCheck; final Color stepIndicatorBGNumber; final Color stepIndicatorBGInactive; @@ -93,7 +93,7 @@ class StackColors extends ThemeExtension { final Color stepIndicatorIconNumber; final Color stepIndicatorIconInactive; -// checkbox + // checkbox final Color checkboxBGChecked; final Color checkboxBorderEmpty; final Color checkboxBGDisabled; @@ -101,7 +101,7 @@ class StackColors extends ThemeExtension { final Color checkboxIconDisabled; final Color checkboxTextLabel; -// snack bar + // snack bar final Color snackBarBackSuccess; final Color snackBarBackError; final Color snackBarBackInfo; @@ -109,7 +109,7 @@ class StackColors extends ThemeExtension { final Color snackBarTextError; final Color snackBarTextInfo; -// icons + // icons final Color bottomNavIconBack; final Color bottomNavIconIcon; final Color bottomNavIconIconHighlighted; @@ -122,7 +122,7 @@ class StackColors extends ThemeExtension { final Color settingsIconBack2; final Color settingsIconElement; -// text field + // text field final Color textFieldActiveBG; final Color textFieldDefaultBG; final Color textFieldErrorBG; @@ -145,12 +145,12 @@ class StackColors extends ThemeExtension { final Color textFieldErrorSearchIconRight; final Color textFieldSuccessSearchIconRight; -// settings item level2 + // settings item level2 final Color settingsItem2ActiveBG; final Color settingsItem2ActiveText; final Color settingsItem2ActiveSub; -// radio buttons + // radio buttons final Color radioButtonIconBorder; final Color radioButtonIconBorderDisabled; final Color radioButtonBorderEnabled; @@ -162,19 +162,19 @@ class StackColors extends ThemeExtension { final Color radioButtonLabelEnabled; final Color radioButtonLabelDisabled; -// info text + // info text final Color infoItemBG; final Color infoItemLabel; final Color infoItemText; final Color infoItemIcons; -// popup + // popup final Color popupBG; -// currency list + // currency list final Color currencyListItemBG; -// bottom nav + // bottom nav final Color stackWalletBG; final Color stackWalletMid; final Color stackWalletBottom; @@ -192,7 +192,7 @@ class StackColors extends ThemeExtension { final Color textConfirmTotalAmount; final Color textSelectedWordTableItem; -// rate type toggle + // rate type toggle final Color rateTypeToggleColorOn; final Color rateTypeToggleColorOff; final Color rateTypeToggleDesktopColorOn; @@ -732,7 +732,8 @@ class StackColors extends ThemeExtension { buttonBackBorderDisabled ?? this.buttonBackBorderDisabled, buttonBackBorderSecondary: buttonBackBorderSecondary ?? this.buttonBackBorderSecondary, - buttonBackBorderSecondaryDisabled: buttonBackBorderSecondaryDisabled ?? + buttonBackBorderSecondaryDisabled: + buttonBackBorderSecondaryDisabled ?? this.buttonBackBorderSecondaryDisabled, numberBackDefault: numberBackDefault ?? this.numberBackDefault, numpadBackDefault: numpadBackDefault ?? this.numpadBackDefault, @@ -824,11 +825,13 @@ class StackColors extends ThemeExtension { textFieldSuccessLabel ?? this.textFieldSuccessLabel, textFieldActiveSearchIconRight: textFieldActiveSearchIconRight ?? this.textFieldActiveSearchIconRight, - textFieldDefaultSearchIconRight: textFieldDefaultSearchIconRight ?? + textFieldDefaultSearchIconRight: + textFieldDefaultSearchIconRight ?? this.textFieldDefaultSearchIconRight, textFieldErrorSearchIconRight: textFieldErrorSearchIconRight ?? this.textFieldErrorSearchIconRight, - textFieldSuccessSearchIconRight: textFieldSuccessSearchIconRight ?? + textFieldSuccessSearchIconRight: + textFieldSuccessSearchIconRight ?? this.textFieldSuccessSearchIconRight, settingsItem2ActiveBG: settingsItem2ActiveBG ?? this.settingsItem2ActiveBG, @@ -919,26 +922,14 @@ class StackColors extends ThemeExtension { gradientBackground: other.gradientBackground, homeViewButtonBarBoxShadow: other.homeViewButtonBarBoxShadow, standardBoxShadow: other.standardBoxShadow, - background: Color.lerp( - background, - other.background, - t, - )!, + background: Color.lerp(background, other.background, t)!, backgroundAppBar: Color.lerp( backgroundAppBar, other.backgroundAppBar, t, )!, - overlay: Color.lerp( - overlay, - other.overlay, - t, - )!, - accentColorBlue: Color.lerp( - accentColorBlue, - other.accentColorBlue, - t, - )!, + overlay: Color.lerp(overlay, other.overlay, t)!, + accentColorBlue: Color.lerp(accentColorBlue, other.accentColorBlue, t)!, accentColorGreen: Color.lerp( accentColorGreen, other.accentColorGreen, @@ -949,91 +940,31 @@ class StackColors extends ThemeExtension { other.accentColorYellow, t, )!, - accentColorRed: Color.lerp( - accentColorRed, - other.accentColorRed, - t, - )!, + accentColorRed: Color.lerp(accentColorRed, other.accentColorRed, t)!, accentColorOrange: Color.lerp( accentColorOrange, other.accentColorOrange, t, )!, - accentColorDark: Color.lerp( - accentColorDark, - other.accentColorDark, - t, - )!, - shadow: Color.lerp( - shadow, - other.shadow, - t, - )!, - textDark: Color.lerp( - textDark, - other.textDark, - t, - )!, - textDark2: Color.lerp( - textDark2, - other.textDark2, - t, - )!, - textDark3: Color.lerp( - textDark3, - other.textDark3, - t, - )!, - textSubtitle1: Color.lerp( - textSubtitle1, - other.textSubtitle1, - t, - )!, - textSubtitle2: Color.lerp( - textSubtitle2, - other.textSubtitle2, - t, - )!, - textSubtitle3: Color.lerp( - textSubtitle3, - other.textSubtitle3, - t, - )!, - textSubtitle4: Color.lerp( - textSubtitle4, - other.textSubtitle4, - t, - )!, - textSubtitle5: Color.lerp( - textSubtitle5, - other.textSubtitle5, - t, - )!, - textSubtitle6: Color.lerp( - textSubtitle6, - other.textSubtitle6, - t, - )!, - textWhite: Color.lerp( - textWhite, - other.textWhite, - t, - )!, + accentColorDark: Color.lerp(accentColorDark, other.accentColorDark, t)!, + shadow: Color.lerp(shadow, other.shadow, t)!, + textDark: Color.lerp(textDark, other.textDark, t)!, + textDark2: Color.lerp(textDark2, other.textDark2, t)!, + textDark3: Color.lerp(textDark3, other.textDark3, t)!, + textSubtitle1: Color.lerp(textSubtitle1, other.textSubtitle1, t)!, + textSubtitle2: Color.lerp(textSubtitle2, other.textSubtitle2, t)!, + textSubtitle3: Color.lerp(textSubtitle3, other.textSubtitle3, t)!, + textSubtitle4: Color.lerp(textSubtitle4, other.textSubtitle4, t)!, + textSubtitle5: Color.lerp(textSubtitle5, other.textSubtitle5, t)!, + textSubtitle6: Color.lerp(textSubtitle6, other.textSubtitle6, t)!, + textWhite: Color.lerp(textWhite, other.textWhite, t)!, textFavoriteCard: Color.lerp( textFavoriteCard, other.textFavoriteCard, t, )!, - textError: Color.lerp( - textError, - other.textError, - t, - )!, - textRestore: Color.lerp( - textRestore, - other.textRestore, - t, - )!, + textError: Color.lerp(textError, other.textError, t)!, + textRestore: Color.lerp(textRestore, other.textRestore, t)!, buttonBackPrimary: Color.lerp( buttonBackPrimary, other.buttonBackPrimary, @@ -1084,11 +1015,7 @@ class StackColors extends ThemeExtension { other.numpadBackDefault, t, )!, - bottomNavBack: Color.lerp( - bottomNavBack, - other.bottomNavBack, - t, - )!, + bottomNavBack: Color.lerp(bottomNavBack, other.bottomNavBack, t)!, buttonTextPrimary: Color.lerp( buttonTextPrimary, other.buttonTextPrimary, @@ -1139,11 +1066,7 @@ class StackColors extends ThemeExtension { other.numpadTextDefault, t, )!, - bottomNavText: Color.lerp( - bottomNavText, - other.bottomNavText, - t, - )!, + bottomNavText: Color.lerp(bottomNavText, other.bottomNavText, t)!, customTextButtonEnabledText: Color.lerp( customTextButtonEnabledText, other.customTextButtonEnabledText, @@ -1154,31 +1077,15 @@ class StackColors extends ThemeExtension { other.customTextButtonDisabledText, t, )!, - switchBGOn: Color.lerp( - switchBGOn, - other.switchBGOn, - t, - )!, - switchBGOff: Color.lerp( - switchBGOff, - other.switchBGOff, - t, - )!, + switchBGOn: Color.lerp(switchBGOn, other.switchBGOn, t)!, + switchBGOff: Color.lerp(switchBGOff, other.switchBGOff, t)!, switchBGDisabled: Color.lerp( switchBGDisabled, other.switchBGDisabled, t, )!, - switchCircleOn: Color.lerp( - switchCircleOn, - other.switchCircleOn, - t, - )!, - switchCircleOff: Color.lerp( - switchCircleOff, - other.switchCircleOff, - t, - )!, + switchCircleOn: Color.lerp(switchCircleOn, other.switchCircleOn, t)!, + switchCircleOff: Color.lerp(switchCircleOff, other.switchCircleOff, t)!, switchCircleDisabled: Color.lerp( switchCircleDisabled, other.switchCircleDisabled, @@ -1304,21 +1211,13 @@ class StackColors extends ThemeExtension { other.topNavIconPrimary, t, )!, - topNavIconGreen: Color.lerp( - topNavIconGreen, - other.topNavIconGreen, - t, - )!, + topNavIconGreen: Color.lerp(topNavIconGreen, other.topNavIconGreen, t)!, topNavIconYellow: Color.lerp( topNavIconYellow, other.topNavIconYellow, t, )!, - topNavIconRed: Color.lerp( - topNavIconRed, - other.topNavIconRed, - t, - )!, + topNavIconRed: Color.lerp(topNavIconRed, other.topNavIconRed, t)!, settingsIconBack: Color.lerp( settingsIconBack, other.settingsIconBack, @@ -1509,56 +1408,24 @@ class StackColors extends ThemeExtension { other.radioButtonLabelDisabled, t, )!, - infoItemBG: Color.lerp( - infoItemBG, - other.infoItemBG, - t, - )!, - infoItemLabel: Color.lerp( - infoItemLabel, - other.infoItemLabel, - t, - )!, - infoItemText: Color.lerp( - infoItemText, - other.infoItemText, - t, - )!, - infoItemIcons: Color.lerp( - infoItemIcons, - other.infoItemIcons, - t, - )!, - popupBG: Color.lerp( - popupBG, - other.popupBG, - t, - )!, + infoItemBG: Color.lerp(infoItemBG, other.infoItemBG, t)!, + infoItemLabel: Color.lerp(infoItemLabel, other.infoItemLabel, t)!, + infoItemText: Color.lerp(infoItemText, other.infoItemText, t)!, + infoItemIcons: Color.lerp(infoItemIcons, other.infoItemIcons, t)!, + popupBG: Color.lerp(popupBG, other.popupBG, t)!, currencyListItemBG: Color.lerp( currencyListItemBG, other.currencyListItemBG, t, )!, - stackWalletBG: Color.lerp( - stackWalletBG, - other.stackWalletBG, - t, - )!, - stackWalletMid: Color.lerp( - stackWalletMid, - other.stackWalletMid, - t, - )!, + stackWalletBG: Color.lerp(stackWalletBG, other.stackWalletBG, t)!, + stackWalletMid: Color.lerp(stackWalletMid, other.stackWalletMid, t)!, stackWalletBottom: Color.lerp( stackWalletBottom, other.stackWalletBottom, t, )!, - bottomNavShadow: Color.lerp( - bottomNavShadow, - other.bottomNavShadow, - t, - )!, + bottomNavShadow: Color.lerp(bottomNavShadow, other.bottomNavShadow, t)!, favoriteStarActive: Color.lerp( favoriteStarActive, other.favoriteStarActive, @@ -1569,16 +1436,8 @@ class StackColors extends ThemeExtension { other.favoriteStarInactive, t, )!, - splash: Color.lerp( - splash, - other.splash, - t, - )!, - highlight: Color.lerp( - highlight, - other.highlight, - t, - )!, + splash: Color.lerp(splash, other.splash, t)!, + highlight: Color.lerp(highlight, other.highlight, t)!, warningForeground: Color.lerp( warningForeground, other.warningForeground, @@ -1629,26 +1488,14 @@ class StackColors extends ThemeExtension { other.rateTypeToggleDesktopColorOff, t, )!, - ethTagText: Color.lerp( - ethTagText, - other.ethTagText, - t, - )!, - ethTagBG: Color.lerp( - ethTagBG, - other.ethTagBG, - t, - )!, + ethTagText: Color.lerp(ethTagText, other.ethTagText, t)!, + ethTagBG: Color.lerp(ethTagBG, other.ethTagBG, t)!, ethWalletTagText: Color.lerp( ethWalletTagText, other.ethWalletTagText, t, )!, - ethWalletTagBG: Color.lerp( - ethWalletTagBG, - other.ethWalletTagBG, - t, - )!, + ethWalletTagBG: Color.lerp(ethWalletTagBG, other.ethWalletTagBG, t)!, tokenSummaryTextPrimary: Color.lerp( tokenSummaryTextPrimary, other.tokenSummaryTextPrimary, @@ -1659,11 +1506,7 @@ class StackColors extends ThemeExtension { other.tokenSummaryTextSecondary, t, )!, - tokenSummaryBG: Color.lerp( - tokenSummaryBG, - other.tokenSummaryBG, - t, - )!, + tokenSummaryBG: Color.lerp(tokenSummaryBG, other.tokenSummaryBG, t)!, tokenSummaryButtonBG: Color.lerp( tokenSummaryButtonBG, other.tokenSummaryButtonBG, @@ -1711,125 +1554,95 @@ class StackColors extends ThemeExtension { ButtonStyle? getDeleteEnabledButtonStyle(BuildContext context) => Theme.of(context).textButtonTheme.style?.copyWith( - backgroundColor: MaterialStateProperty.all( - textFieldErrorBG, - ), - ); + backgroundColor: MaterialStateProperty.all(textFieldErrorBG), + ); ButtonStyle? getDeleteDisabledButtonStyle(BuildContext context) => Theme.of(context).textButtonTheme.style?.copyWith( - backgroundColor: MaterialStateProperty.all( - buttonBackSecondaryDisabled, - ), - ); + backgroundColor: MaterialStateProperty.all( + buttonBackSecondaryDisabled, + ), + ); ButtonStyle? getPrimaryEnabledButtonStyle(BuildContext context) => Theme.of(context).textButtonTheme.style?.copyWith( - backgroundColor: MaterialStateProperty.all( - buttonBackPrimary, - ), - ); + backgroundColor: MaterialStateProperty.all(buttonBackPrimary), + ); ButtonStyle? getPrimaryDisabledButtonStyle(BuildContext context) => Theme.of(context).textButtonTheme.style?.copyWith( - backgroundColor: MaterialStateProperty.all( - buttonBackPrimaryDisabled, - ), - ); + backgroundColor: MaterialStateProperty.all( + buttonBackPrimaryDisabled, + ), + ); ButtonStyle? getOutlineBlueButtonStyle(BuildContext context) => Theme.of(context).textButtonTheme.style?.copyWith( - backgroundColor: MaterialStateProperty.all( - Colors.transparent, - ), - side: MaterialStateProperty.all( - BorderSide( - color: customTextButtonEnabledText, - ), - ), - ); + backgroundColor: MaterialStateProperty.all(Colors.transparent), + side: MaterialStateProperty.all( + BorderSide(color: customTextButtonEnabledText), + ), + ); ButtonStyle? getOutlineBlueButtonDisabledStyle(BuildContext context) => Theme.of(context).textButtonTheme.style?.copyWith( - backgroundColor: MaterialStateProperty.all( - Colors.transparent, - ), - side: MaterialStateProperty.all( - BorderSide( - color: customTextButtonDisabledText, - ), - ), - ); + backgroundColor: MaterialStateProperty.all(Colors.transparent), + side: MaterialStateProperty.all( + BorderSide(color: customTextButtonDisabledText), + ), + ); ButtonStyle? getSecondaryEnabledButtonStyle(BuildContext context) => Theme.of(context).textButtonTheme.style?.copyWith( - backgroundColor: MaterialStateProperty.all( - buttonBackSecondary, - ), - shape: MaterialStateProperty.all( - RoundedRectangleBorder( - side: BorderSide( - color: buttonBackBorderSecondary, - width: 1, - ), - borderRadius: BorderRadius.circular(10000), - ), - ), - ); + backgroundColor: MaterialStateProperty.all(buttonBackSecondary), + shape: MaterialStateProperty.all( + RoundedRectangleBorder( + side: BorderSide(color: buttonBackBorderSecondary, width: 1), + borderRadius: BorderRadius.circular(10000), + ), + ), + ); ButtonStyle? getSecondaryDisabledButtonStyle(BuildContext context) => Theme.of(context).textButtonTheme.style?.copyWith( - backgroundColor: MaterialStateProperty.all( - buttonBackSecondaryDisabled, - ), - shape: MaterialStateProperty.all( - RoundedRectangleBorder( - side: BorderSide( - color: buttonBackBorderSecondaryDisabled, - width: 1, - ), - borderRadius: BorderRadius.circular(10000), - ), + backgroundColor: MaterialStateProperty.all( + buttonBackSecondaryDisabled, + ), + shape: MaterialStateProperty.all( + RoundedRectangleBorder( + side: BorderSide( + color: buttonBackBorderSecondaryDisabled, + width: 1, ), - ); + borderRadius: BorderRadius.circular(10000), + ), + ), + ); ButtonStyle? getSmallSecondaryEnabledButtonStyle(BuildContext context) => Theme.of(context).textButtonTheme.style?.copyWith( - backgroundColor: MaterialStateProperty.all( - textFieldDefaultBG, - ), - shape: MaterialStateProperty.all( - RoundedRectangleBorder( - side: BorderSide( - color: buttonBackBorderSecondary, - width: 1, - ), - borderRadius: BorderRadius.circular(10000), - ), - ), - ); + backgroundColor: MaterialStateProperty.all(textFieldDefaultBG), + shape: MaterialStateProperty.all( + RoundedRectangleBorder( + side: BorderSide(color: buttonBackBorderSecondary, width: 1), + borderRadius: BorderRadius.circular(10000), + ), + ), + ); ButtonStyle? getDesktopMenuButtonStyle(BuildContext context) => Theme.of(context).textButtonTheme.style?.copyWith( - backgroundColor: MaterialStateProperty.all( - popupBG, - ), - ); + backgroundColor: MaterialStateProperty.all(popupBG), + ); ButtonStyle? getDesktopMenuButtonStyleSelected(BuildContext context) => Theme.of(context).textButtonTheme.style?.copyWith( - backgroundColor: MaterialStateProperty.all( - textFieldDefaultBG, - ), - ); + backgroundColor: MaterialStateProperty.all(textFieldDefaultBG), + ); ButtonStyle? getDesktopSettingsButtonStyle(BuildContext context) => Theme.of(context).textButtonTheme.style?.copyWith( - backgroundColor: MaterialStateProperty.all( - background, - ), - overlayColor: MaterialStateProperty.all( - Colors.transparent, - ), - ); + backgroundColor: MaterialStateProperty.all(background), + overlayColor: MaterialStateProperty.all(Colors.transparent), + ); } diff --git a/lib/utilities/amount/amount.dart b/lib/utilities/amount/amount.dart index a1a68576f2..54d8944d5f 100644 --- a/lib/utilities/amount/amount.dart +++ b/lib/utilities/amount/amount.dart @@ -15,31 +15,23 @@ import 'package:decimal/decimal.dart'; import '../util.dart'; class Amount { - Amount({ - required BigInt rawValue, - required this.fractionDigits, - }) : assert(fractionDigits >= 0), - _value = rawValue; + Amount({required BigInt rawValue, required this.fractionDigits}) + : assert(fractionDigits >= 0), + _value = rawValue; /// special zero case with [fractionDigits] set to 0 - static Amount get zero => Amount( - rawValue: BigInt.zero, - fractionDigits: 0, - ); + static Amount get zero => Amount(rawValue: BigInt.zero, fractionDigits: 0); Amount.zeroWith({required this.fractionDigits}) - : assert(fractionDigits >= 0), - _value = BigInt.zero; + : assert(fractionDigits >= 0), + _value = BigInt.zero; /// truncate decimal value to [fractionDigits] places Amount.fromDecimal(Decimal amount, {required this.fractionDigits}) - : assert(fractionDigits >= 0), - _value = amount.shift(fractionDigits).toBigInt(); + : assert(fractionDigits >= 0), + _value = amount.shift(fractionDigits).toBigInt(); - static Amount? tryParseFiatString( - String value, { - required String locale, - }) { + static Amount? tryParseFiatString(String value, {required String locale}) { final parts = value.split(" "); if (parts.first.isEmpty) { @@ -98,9 +90,7 @@ class Amount { return jsonEncode(toMap()); } - String fiatString({ - required String locale, - }) { + String fiatString({required String locale}) { final wholeNumber = decimal.truncate(); // get number symbols for decimal place and group separator @@ -172,10 +162,7 @@ class Amount { "fractionDigits do not match: this=$this, other=$other", ); } - return Amount( - rawValue: raw + other.raw, - fractionDigits: fractionDigits, - ); + return Amount(rawValue: raw + other.raw, fractionDigits: fractionDigits); } Amount operator -(Amount other) { @@ -184,10 +171,7 @@ class Amount { "fractionDigits do not match: this=$this, other=$other", ); } - return Amount( - rawValue: raw - other.raw, - fractionDigits: fractionDigits, - ); + return Amount(rawValue: raw - other.raw, fractionDigits: fractionDigits); } Amount operator *(Amount other) { @@ -196,10 +180,7 @@ class Amount { "fractionDigits do not match: this=$this, other=$other", ); } - return Amount( - rawValue: raw * other.raw, - fractionDigits: fractionDigits, - ); + return Amount(rawValue: raw * other.raw, fractionDigits: fractionDigits); } // =========================================================================== @@ -226,18 +207,12 @@ class Amount { extension DecimalAmountExt on Decimal { Amount toAmount({required int fractionDigits}) { - return Amount.fromDecimal( - this, - fractionDigits: fractionDigits, - ); + return Amount.fromDecimal(this, fractionDigits: fractionDigits); } } extension IntAmountExtension on int { Amount toAmountAsRaw({required int fractionDigits}) { - return Amount( - rawValue: BigInt.from(this), - fractionDigits: fractionDigits, - ); + return Amount(rawValue: BigInt.from(this), fractionDigits: fractionDigits); } } diff --git a/lib/utilities/amount/amount_formatter.dart b/lib/utilities/amount/amount_formatter.dart index 44746b8cdb..1f3380cb2b 100644 --- a/lib/utilities/amount/amount_formatter.dart +++ b/lib/utilities/amount/amount_formatter.dart @@ -8,21 +8,19 @@ import '../../wallets/crypto_currency/crypto_currency.dart'; final pAmountUnit = Provider.family( (ref, coin) => ref.watch( - prefsChangeNotifierProvider.select( - (value) => value.amountUnit(coin), - ), + prefsChangeNotifierProvider.select((value) => value.amountUnit(coin)), ), ); final pMaxDecimals = Provider.family( (ref, coin) => ref.watch( - prefsChangeNotifierProvider.select( - (value) => value.maxDecimals(coin), - ), + prefsChangeNotifierProvider.select((value) => value.maxDecimals(coin)), ), ); -final pAmountFormatter = - Provider.family((ref, coin) { +final pAmountFormatter = Provider.family(( + ref, + coin, +) { final locale = ref.watch( localeServiceChangeNotifierProvider.select((value) => value.locale), ); @@ -67,10 +65,7 @@ class AmountFormatter { ); } - Amount? tryParse( - String string, { - EthContract? ethContract, - }) { + Amount? tryParse(String string, {EthContract? ethContract}) { return unit.tryParse( string, locale: locale, diff --git a/lib/utilities/amount/amount_unit.dart b/lib/utilities/amount/amount_unit.dart index 79e45232b3..a955e0f5e8 100644 --- a/lib/utilities/amount/amount_unit.dart +++ b/lib/utilities/amount/amount_unit.dart @@ -29,8 +29,7 @@ enum AmountUnit { zepto(21), yocto(24), ronto(27), - quecto(30), - ; + quecto(30); const AmountUnit(this.shift); final int shift; @@ -169,9 +168,7 @@ extension AmountUnitExt on AmountUnit { case AmountUnit.atto: return "wei"; default: - throw ArgumentError( - "Does eth even allow more than 18 decimal places?", - ); + throw ArgumentError("Does eth even allow more than 18 decimal places?"); } } @@ -292,8 +289,9 @@ extension AmountUnitExt on AmountUnit { if (remainder.length > actualDecimalPlaces) { // check for loss of precision - final remainingRemainder = - BigInt.tryParse(remainder.substring(actualDecimalPlaces)); + final remainingRemainder = BigInt.tryParse( + remainder.substring(actualDecimalPlaces), + ); if (remainingRemainder != null) { didLosePrecision = remainingRemainder > BigInt.zero; } diff --git a/lib/utilities/barcode_scanner_interface.dart b/lib/utilities/barcode_scanner_interface.dart index f8256f2e55..0cb5cfc618 100644 --- a/lib/utilities/barcode_scanner_interface.dart +++ b/lib/utilities/barcode_scanner_interface.dart @@ -61,19 +61,18 @@ Future checkCamPermDeniedMobileAndOpenAppSettings( if ((iosShow || androidShow) && context.mounted) { final trySettings = await showDialog( context: context, - builder: - (context) => StackDialog( - title: "Camera permissions required", - message: "Open settings?", - leftButton: SecondaryButton( - label: "Cancel", - onPressed: Navigator.of(context).pop, - ), - rightButton: PrimaryButton( - label: "Continue", - onPressed: () => Navigator.of(context).pop(true), - ), - ), + builder: (context) => StackDialog( + title: "Camera permissions required", + message: "Open settings?", + leftButton: SecondaryButton( + label: "Cancel", + onPressed: Navigator.of(context).pop, + ), + rightButton: PrimaryButton( + label: "Continue", + onPressed: () => Navigator.of(context).pop(true), + ), + ), ); if (trySettings == true) { @@ -83,15 +82,14 @@ Future checkCamPermDeniedMobileAndOpenAppSettings( if (context.mounted) { await showDialog( context: context, - builder: - (context) => StackDialog( - title: "Could not open app settings", - message: "You will need manually go find your app settings", - rightButton: PrimaryButton( - label: "Ok", - onPressed: Navigator.of(context).pop, - ), - ), + builder: (context) => StackDialog( + title: "Could not open app settings", + message: "You will need manually go find your app settings", + rightButton: PrimaryButton( + label: "Ok", + onPressed: Navigator.of(context).pop, + ), + ), ); } } diff --git a/lib/utilities/default_epicboxes.dart b/lib/utilities/default_epicboxes.dart index a2c9b01f09..dff6fe618e 100644 --- a/lib/utilities/default_epicboxes.dart +++ b/lib/utilities/default_epicboxes.dart @@ -17,37 +17,37 @@ abstract class DefaultEpicBoxes { static List get defaultIds => ['americas', 'asia', 'europe']; static EpicBoxServerModel get americas => EpicBoxServerModel( - host: 'epicbox.stackwallet.com', - port: 443, - name: 'Americas', - id: 'americas', - useSSL: true, - enabled: true, - isFailover: true, - isDown: false, - ); + host: 'epicbox.stackwallet.com', + port: 443, + name: 'Americas', + id: 'americas', + useSSL: true, + enabled: true, + isFailover: true, + isDown: false, + ); static EpicBoxServerModel get asia => EpicBoxServerModel( - host: 'epicbox.hyperbig.com', - port: 443, - name: 'Asia', - id: 'asia', - useSSL: true, - enabled: true, - isFailover: true, - isDown: false, - ); + host: 'epicbox.hyperbig.com', + port: 443, + name: 'Asia', + id: 'asia', + useSSL: true, + enabled: true, + isFailover: true, + isDown: false, + ); static EpicBoxServerModel get europe => EpicBoxServerModel( - host: 'epicbox.fastepic.eu', - port: 443, - name: 'Europe', - id: 'europe', - useSSL: true, - enabled: true, - isFailover: true, - isDown: false, - ); + host: 'epicbox.fastepic.eu', + port: 443, + name: 'Europe', + id: 'europe', + useSSL: true, + enabled: true, + isFailover: true, + isDown: false, + ); static final defaultEpicBoxServer = americas; } diff --git a/lib/utilities/show_loading.dart b/lib/utilities/show_loading.dart index 040bc23037..0930c8fc50 100644 --- a/lib/utilities/show_loading.dart +++ b/lib/utilities/show_loading.dart @@ -16,16 +16,8 @@ import '../themes/stack_colors.dart'; import '../widgets/custom_loading_overlay.dart'; import 'logger.dart'; -Future minWaitFuture( - Future future, { - required Duration delay, -}) async { - final results = await Future.wait( - [ - future, - Future.delayed(delay), - ], - ); +Future minWaitFuture(Future future, {required Duration delay}) async { + final results = await Future.wait([future, Future.delayed(delay)]); return results.first as T; } @@ -47,10 +39,9 @@ Future showLoading({ builder: (_) => WillPopScope( onWillPop: () async => false, child: Container( - color: Theme.of(context) - .extension()! - .overlay - .withOpacity(opaqueBG ? 1.0 : 0.6), + color: Theme.of( + context, + ).extension()!.overlay.withOpacity(opaqueBG ? 1.0 : 0.6), child: CustomLoadingOverlay( message: message, subMessage: subMessage, diff --git a/lib/wallets/crypto_currency/coins/namecoin.dart b/lib/wallets/crypto_currency/coins/namecoin.dart index 7945e8bca7..f69b3d6953 100644 --- a/lib/wallets/crypto_currency/coins/namecoin.dart +++ b/lib/wallets/crypto_currency/coins/namecoin.dart @@ -148,11 +148,10 @@ class Namecoin extends Bip39HDCurrency with ElectrumXCurrencyInterface { return (address: addr, addressType: AddressType.p2pkh); case DerivePathType.bip49: - final p2wpkhScript = - coinlib.P2WPKHAddress.fromPublicKey( - publicKey, - hrp: networkParams.bech32Hrp, - ).program.script; + final p2wpkhScript = coinlib.P2WPKHAddress.fromPublicKey( + publicKey, + hrp: networkParams.bech32Hrp, + ).program.script; final addr = coinlib.P2SHAddress.fromRedeemScript( p2wpkhScript, diff --git a/lib/wallets/isar/models/token_wallet_info.dart b/lib/wallets/isar/models/token_wallet_info.dart index 842d04bf0d..8cbebbb39c 100644 --- a/lib/wallets/isar/models/token_wallet_info.dart +++ b/lib/wallets/isar/models/token_wallet_info.dart @@ -53,11 +53,10 @@ class TokenWalletInfo implements IsarId { required Isar isar, }) async { // // ensure we are updating using the latest entry of this in the db - final thisEntry = - await isar.tokenWalletInfo - .where() - .walletIdTokenAddressEqualTo(walletId, tokenAddress) - .findFirst(); + final thisEntry = await isar.tokenWalletInfo + .where() + .walletIdTokenAddressEqualTo(walletId, tokenAddress) + .findFirst(); if (thisEntry == null) { throw Exception( "Attempted to update cached token balance before object was saved in db", diff --git a/lib/wallets/isar/models/wallet_info.dart b/lib/wallets/isar/models/wallet_info.dart index 5b2d6569c8..e2cdcddc53 100644 --- a/lib/wallets/isar/models/wallet_info.dart +++ b/lib/wallets/isar/models/wallet_info.dart @@ -114,10 +114,9 @@ class WalletInfo implements IsarId { } @ignore - Map get otherData => - otherDataJsonString == null - ? {} - : Map.from(jsonDecode(otherDataJsonString!) as Map); + Map get otherData => otherDataJsonString == null + ? {} + : Map.from(jsonDecode(otherDataJsonString!) as Map); @ignore bool get isViewOnly => @@ -248,12 +247,11 @@ class WalletInfo implements IsarId { if (customIndexOverride != null) { index = customIndexOverride; } else if (flag) { - final highest = - await isar.walletInfo - .where() - .sortByFavouriteOrderIndexDesc() - .favouriteOrderIndexProperty() - .findFirst(); + final highest = await isar.walletInfo + .where() + .sortByFavouriteOrderIndexDesc() + .favouriteOrderIndexProperty() + .findFirst(); index = (highest ?? 0) + 1; } else { index = -1; @@ -336,8 +334,10 @@ class WalletInfo implements IsarId { /// Can be dangerous. Don't use unless you know the consequences Future setMnemonicVerified({required Isar isar}) async { - final meta = - await isar.walletInfoMeta.where().walletIdEqualTo(walletId).findFirst(); + final meta = await isar.walletInfoMeta + .where() + .walletIdEqualTo(walletId) + .findFirst(); if (meta == null) { await isar.writeTxn(() async { await isar.walletInfoMeta.put( diff --git a/lib/wallets/wallet/impl/bitcoin_wallet.dart b/lib/wallets/wallet/impl/bitcoin_wallet.dart index 6361ec135d..1854af8d75 100644 --- a/lib/wallets/wallet/impl/bitcoin_wallet.dart +++ b/lib/wallets/wallet/impl/bitcoin_wallet.dart @@ -37,18 +37,17 @@ class BitcoinWallet extends Bip39HDWallet @override Future> fetchAddressesForElectrumXScan() async { - final allAddresses = - await mainDB - .getAddresses(walletId) - .filter() - .not() - .group( - (q) => q - .typeEqualTo(AddressType.nonWallet) - .or() - .subTypeEqualTo(AddressSubType.nonWallet), - ) - .findAll(); + final allAddresses = await mainDB + .getAddresses(walletId) + .filter() + .not() + .group( + (q) => q + .typeEqualTo(AddressType.nonWallet) + .or() + .subTypeEqualTo(AddressSubType.nonWallet), + ) + .findAll(); return allAddresses; } diff --git a/lib/wallets/wallet/impl/bitcoincash_wallet.dart b/lib/wallets/wallet/impl/bitcoincash_wallet.dart index 5edcbf9f75..1c4a53d6db 100644 --- a/lib/wallets/wallet/impl/bitcoincash_wallet.dart +++ b/lib/wallets/wallet/impl/bitcoincash_wallet.dart @@ -67,20 +67,19 @@ class BitcoincashWallet @override Future> fetchAddressesForElectrumXScan() async { - final allAddresses = - await mainDB - .getAddresses(walletId) - .filter() - .not() - .typeEqualTo(AddressType.nonWallet) - .and() - .group( - (q) => q - .subTypeEqualTo(AddressSubType.receiving) - .or() - .subTypeEqualTo(AddressSubType.change), - ) - .findAll(); + final allAddresses = await mainDB + .getAddresses(walletId) + .filter() + .not() + .typeEqualTo(AddressType.nonWallet) + .and() + .group( + (q) => q + .subTypeEqualTo(AddressSubType.receiving) + .or() + .subTypeEqualTo(AddressSubType.change), + ) + .findAll(); return allAddresses; } @@ -103,17 +102,15 @@ class BitcoincashWallet final List
allAddressesOld = await fetchAddressesForElectrumXScan(); - final Set receivingAddresses = - allAddressesOld - .where((e) => e.subType == AddressSubType.receiving) - .map((e) => convertAddressString(e.value)) - .toSet(); - - final Set changeAddresses = - allAddressesOld - .where((e) => e.subType == AddressSubType.change) - .map((e) => convertAddressString(e.value)) - .toSet(); + final Set receivingAddresses = allAddressesOld + .where((e) => e.subType == AddressSubType.receiving) + .map((e) => convertAddressString(e.value)) + .toSet(); + + final Set changeAddresses = allAddressesOld + .where((e) => e.subType == AddressSubType.change) + .map((e) => convertAddressString(e.value)) + .toSet(); final allAddressesSet = {...receivingAddresses, ...changeAddresses}; diff --git a/lib/wallets/wallet/impl/dash_wallet.dart b/lib/wallets/wallet/impl/dash_wallet.dart index 9d39bd26f7..adb9e7d66e 100644 --- a/lib/wallets/wallet/impl/dash_wallet.dart +++ b/lib/wallets/wallet/impl/dash_wallet.dart @@ -36,18 +36,17 @@ class DashWallet extends Bip39HDWallet @override Future> fetchAddressesForElectrumXScan() async { - final allAddresses = - await mainDB - .getAddresses(walletId) - .filter() - .not() - .group( - (q) => q - .typeEqualTo(AddressType.nonWallet) - .or() - .subTypeEqualTo(AddressSubType.nonWallet), - ) - .findAll(); + final allAddresses = await mainDB + .getAddresses(walletId) + .filter() + .not() + .group( + (q) => q + .typeEqualTo(AddressType.nonWallet) + .or() + .subTypeEqualTo(AddressSubType.nonWallet), + ) + .findAll(); return allAddresses; } @@ -60,16 +59,14 @@ class DashWallet extends Bip39HDWallet await fetchAddressesForElectrumXScan(); // Separate receiving and change addresses. - final Set receivingAddresses = - allAddressesOld - .where((e) => e.subType == AddressSubType.receiving) - .map((e) => e.value) - .toSet(); - final Set changeAddresses = - allAddressesOld - .where((e) => e.subType == AddressSubType.change) - .map((e) => e.value) - .toSet(); + final Set receivingAddresses = allAddressesOld + .where((e) => e.subType == AddressSubType.receiving) + .map((e) => e.value) + .toSet(); + final Set changeAddresses = allAddressesOld + .where((e) => e.subType == AddressSubType.change) + .map((e) => e.value) + .toSet(); // Remove duplicates. final allAddressesSet = {...receivingAddresses, ...changeAddresses}; @@ -83,11 +80,10 @@ class DashWallet extends Bip39HDWallet final List> allTransactions = []; for (final txHash in allTxHashes) { // Check for duplicates by searching for tx by tx_hash in db. - final storedTx = - await mainDB.isar.transactionV2s - .where() - .txidWalletIdEqualTo(txHash["tx_hash"] as String, walletId) - .findFirst(); + final storedTx = await mainDB.isar.transactionV2s + .where() + .txidWalletIdEqualTo(txHash["tx_hash"] as String, walletId) + .findFirst(); if (storedTx == null || storedTx.height == null || diff --git a/lib/wallets/wallet/impl/dogecoin_wallet.dart b/lib/wallets/wallet/impl/dogecoin_wallet.dart index 01a1eed402..e456297fde 100644 --- a/lib/wallets/wallet/impl/dogecoin_wallet.dart +++ b/lib/wallets/wallet/impl/dogecoin_wallet.dart @@ -38,18 +38,17 @@ class DogecoinWallet @override Future> fetchAddressesForElectrumXScan() async { - final allAddresses = - await mainDB - .getAddresses(walletId) - .filter() - .not() - .group( - (q) => q - .typeEqualTo(AddressType.nonWallet) - .or() - .subTypeEqualTo(AddressSubType.nonWallet), - ) - .findAll(); + final allAddresses = await mainDB + .getAddresses(walletId) + .filter() + .not() + .group( + (q) => q + .typeEqualTo(AddressType.nonWallet) + .or() + .subTypeEqualTo(AddressSubType.nonWallet), + ) + .findAll(); return allAddresses; } @@ -62,16 +61,14 @@ class DogecoinWallet await fetchAddressesForElectrumXScan(); // Separate receiving and change addresses. - final Set receivingAddresses = - allAddressesOld - .where((e) => e.subType == AddressSubType.receiving) - .map((e) => e.value) - .toSet(); - final Set changeAddresses = - allAddressesOld - .where((e) => e.subType == AddressSubType.change) - .map((e) => e.value) - .toSet(); + final Set receivingAddresses = allAddressesOld + .where((e) => e.subType == AddressSubType.receiving) + .map((e) => e.value) + .toSet(); + final Set changeAddresses = allAddressesOld + .where((e) => e.subType == AddressSubType.change) + .map((e) => e.value) + .toSet(); // Remove duplicates. final allAddressesSet = {...receivingAddresses, ...changeAddresses}; @@ -85,11 +82,10 @@ class DogecoinWallet final List> allTransactions = []; for (final txHash in allTxHashes) { // Check for duplicates by searching for tx by tx_hash in db. - final storedTx = - await mainDB.isar.transactionV2s - .where() - .txidWalletIdEqualTo(txHash["tx_hash"] as String, walletId) - .findFirst(); + final storedTx = await mainDB.isar.transactionV2s + .where() + .txidWalletIdEqualTo(txHash["tx_hash"] as String, walletId) + .findFirst(); if (storedTx == null || storedTx.height == null || diff --git a/lib/wallets/wallet/impl/ecash_wallet.dart b/lib/wallets/wallet/impl/ecash_wallet.dart index 4a72b2b945..cc358ae662 100644 --- a/lib/wallets/wallet/impl/ecash_wallet.dart +++ b/lib/wallets/wallet/impl/ecash_wallet.dart @@ -55,16 +55,15 @@ class EcashWallet extends Bip39HDWallet @override Future> fetchAddressesForElectrumXScan() async { - final allAddresses = - await mainDB - .getAddresses(walletId) - .filter() - .not() - .typeEqualTo(AddressType.nonWallet) - .and() - .not() - .subTypeEqualTo(AddressSubType.nonWallet) - .findAll(); + final allAddresses = await mainDB + .getAddresses(walletId) + .filter() + .not() + .typeEqualTo(AddressType.nonWallet) + .and() + .not() + .subTypeEqualTo(AddressSubType.nonWallet) + .findAll(); return allAddresses; } @@ -87,17 +86,15 @@ class EcashWallet extends Bip39HDWallet final List
allAddressesOld = await fetchAddressesForElectrumXScan(); - final Set receivingAddresses = - allAddressesOld - .where((e) => e.subType == AddressSubType.receiving) - .map((e) => convertAddressString(e.value)) - .toSet(); + final Set receivingAddresses = allAddressesOld + .where((e) => e.subType == AddressSubType.receiving) + .map((e) => convertAddressString(e.value)) + .toSet(); - final Set changeAddresses = - allAddressesOld - .where((e) => e.subType == AddressSubType.change) - .map((e) => convertAddressString(e.value)) - .toSet(); + final Set changeAddresses = allAddressesOld + .where((e) => e.subType == AddressSubType.change) + .map((e) => convertAddressString(e.value)) + .toSet(); final allAddressesSet = {...receivingAddresses, ...changeAddresses}; @@ -108,11 +105,10 @@ class EcashWallet extends Bip39HDWallet final List> allTransactions = []; for (final txHash in allTxHashes) { - final storedTx = - await mainDB.isar.transactionV2s - .where() - .txidWalletIdEqualTo(txHash["tx_hash"] as String, walletId) - .findFirst(); + final storedTx = await mainDB.isar.transactionV2s + .where() + .txidWalletIdEqualTo(txHash["tx_hash"] as String, walletId) + .findFirst(); if (storedTx == null || storedTx.height == null || diff --git a/lib/wallets/wallet/impl/ethereum_wallet.dart b/lib/wallets/wallet/impl/ethereum_wallet.dart index 743d380e16..06c8bd110b 100644 --- a/lib/wallets/wallet/impl/ethereum_wallet.dart +++ b/lib/wallets/wallet/impl/ethereum_wallet.dart @@ -133,10 +133,9 @@ class EthereumWallet extends Bip39Wallet with PrivateKeyInterface { inputs: List.unmodifiable(inputs), outputs: List.unmodifiable(outputs), version: -1, - type: - addressTo == myAddress - ? TransactionType.sentToSelf - : TransactionType.outgoing, + type: addressTo == myAddress + ? TransactionType.sentToSelf + : TransactionType.outgoing, subType: TransactionSubType.none, otherData: jsonEncode(otherData), ); diff --git a/lib/wallets/wallet/impl/fact0rn_wallet.dart b/lib/wallets/wallet/impl/fact0rn_wallet.dart index 0f6a93d0d9..8700ae7805 100644 --- a/lib/wallets/wallet/impl/fact0rn_wallet.dart +++ b/lib/wallets/wallet/impl/fact0rn_wallet.dart @@ -35,18 +35,17 @@ class Fact0rnWallet @override Future> fetchAddressesForElectrumXScan() async { - final allAddresses = - await mainDB - .getAddresses(walletId) - .filter() - .not() - .group( - (q) => q - .typeEqualTo(AddressType.nonWallet) - .or() - .subTypeEqualTo(AddressSubType.nonWallet), - ) - .findAll(); + final allAddresses = await mainDB + .getAddresses(walletId) + .filter() + .not() + .group( + (q) => q + .typeEqualTo(AddressType.nonWallet) + .or() + .subTypeEqualTo(AddressSubType.nonWallet), + ) + .findAll(); return allAddresses; } @@ -59,16 +58,14 @@ class Fact0rnWallet await fetchAddressesForElectrumXScan(); // Separate receiving and change addresses. - final Set receivingAddresses = - allAddressesOld - .where((e) => e.subType == AddressSubType.receiving) - .map((e) => e.value) - .toSet(); - final Set changeAddresses = - allAddressesOld - .where((e) => e.subType == AddressSubType.change) - .map((e) => e.value) - .toSet(); + final Set receivingAddresses = allAddressesOld + .where((e) => e.subType == AddressSubType.receiving) + .map((e) => e.value) + .toSet(); + final Set changeAddresses = allAddressesOld + .where((e) => e.subType == AddressSubType.change) + .map((e) => e.value) + .toSet(); // Remove duplicates. final allAddressesSet = {...receivingAddresses, ...changeAddresses}; @@ -82,11 +79,10 @@ class Fact0rnWallet final List> allTransactions = []; for (final txHash in allTxHashes) { // Check for duplicates by searching for tx by tx_hash in db. - final storedTx = - await mainDB.isar.transactionV2s - .where() - .txidWalletIdEqualTo(txHash["tx_hash"] as String, walletId) - .findFirst(); + final storedTx = await mainDB.isar.transactionV2s + .where() + .txidWalletIdEqualTo(txHash["tx_hash"] as String, walletId) + .findFirst(); if (storedTx == null || storedTx.height == null || diff --git a/lib/wallets/wallet/impl/firo_wallet.dart b/lib/wallets/wallet/impl/firo_wallet.dart index e55052e903..d0c096c185 100644 --- a/lib/wallets/wallet/impl/firo_wallet.dart +++ b/lib/wallets/wallet/impl/firo_wallet.dart @@ -81,17 +81,15 @@ class FiroWallet extends Bip39HDWallet final List
allAddressesOld = await fetchAddressesForElectrumXScan(); - final Set receivingAddresses = - allAddressesOld - .where((e) => e.subType == AddressSubType.receiving) - .map((e) => convertAddressString(e.value)) - .toSet(); - - final Set changeAddresses = - allAddressesOld - .where((e) => e.subType == AddressSubType.change) - .map((e) => convertAddressString(e.value)) - .toSet(); + final Set receivingAddresses = allAddressesOld + .where((e) => e.subType == AddressSubType.receiving) + .map((e) => convertAddressString(e.value)) + .toSet(); + + final Set changeAddresses = allAddressesOld + .where((e) => e.subType == AddressSubType.change) + .map((e) => convertAddressString(e.value)) + .toSet(); final allAddressesSet = {...receivingAddresses, ...changeAddresses}; @@ -99,23 +97,21 @@ class FiroWallet extends Bip39HDWallet allAddressesSet, ); - final sparkCoins = - await mainDB.isar.sparkCoins - .where() - .walletIdEqualToAnyLTagHash(walletId) - .findAll(); + final sparkCoins = await mainDB.isar.sparkCoins + .where() + .walletIdEqualToAnyLTagHash(walletId) + .findAll(); final List> allTransactions = []; // some lelantus transactions aren't fetched via wallet addresses so they // will never show as confirmed in the gui. - final unconfirmedTransactions = - await mainDB.isar.transactionV2s - .where() - .walletIdEqualTo(walletId) - .filter() - .heightIsNull() - .findAll(); + final unconfirmedTransactions = await mainDB.isar.transactionV2s + .where() + .walletIdEqualTo(walletId) + .filter() + .heightIsNull() + .findAll(); for (final tx in unconfirmedTransactions) { final txn = await electrumXCachedClient.getTransaction( txHash: tx.txid, @@ -154,13 +150,12 @@ class FiroWallet extends Bip39HDWallet final currentHeight = await chainHeight; for (final txHash in allTxHashes) { - final storedTx = - await mainDB.isar.transactionV2s - .where() - .walletIdEqualTo(walletId) - .filter() - .txidEqualTo(txHash["tx_hash"] as String) - .findFirst(); + final storedTx = await mainDB.isar.transactionV2s + .where() + .walletIdEqualTo(walletId) + .filter() + .txidEqualTo(txHash["tx_hash"] as String) + .findFirst(); if (storedTx?.isConfirmed( currentHeight, @@ -214,8 +209,9 @@ class FiroWallet extends Bip39HDWallet bool isSparkMint = false; final bool isSparkSpend = txData["type"] == 9 && txData["version"] == 3; final bool isMySpark = sparkTxids.contains(txData["txid"] as String); - final bool isMySpentSpark = - missing.where((e) => e.txid == txData["txid"]).isNotEmpty; + final bool isMySpentSpark = missing + .where((e) => e.txid == txData["txid"]) + .isNotEmpty; final sparkCoinsInvolvedReceived = sparkCoins.where( (e) => @@ -298,19 +294,17 @@ class FiroWallet extends Bip39HDWallet if (output.addresses.isEmpty && output.scriptPubKeyHex.length >= 488) { // likely spark related - final opByte = - output.scriptPubKeyHex - .substring(0, 2) - .toUint8ListFromHex - .first; + final opByte = output.scriptPubKeyHex + .substring(0, 2) + .toUint8ListFromHex + .first; if (opByte == OP_SPARKMINT || opByte == OP_SPARKSMINT) { final serCoin = base64Encode( output.scriptPubKeyHex.substring(2, 488).toUint8ListFromHex, ); - final coin = - sparkCoinsInvolvedReceived - .where((e) => e.serializedCoinB64!.startsWith(serCoin)) - .firstOrNull; + final coin = sparkCoinsInvolvedReceived + .where((e) => e.serializedCoinB64!.startsWith(serCoin)) + .firstOrNull; if (coin == null) { // not ours @@ -403,10 +397,9 @@ class FiroWallet extends Bip39HDWallet txid: txData["txid"] as String, network: cryptoCurrency.network, ); - spentSparkCoins = - sparkCoinsInvolvedSpent - .where((e) => tags.contains(e.lTagHash)) - .toList(); + spentSparkCoins = sparkCoinsInvolvedSpent + .where((e) => tags.contains(e.lTagHash)) + .toList(); } else if (isSparkSpend) { parseAnonFees(); } else if (isSparkMint) { @@ -490,11 +483,10 @@ class FiroWallet extends Bip39HDWallet if (usedCoins.isNotEmpty) { input = input.copyWith( addresses: usedCoins.map((e) => e.address).toList(), - valueStringSats: - usedCoins - .map((e) => e.value) - .reduce((value, element) => value += element) - .toString(), + valueStringSats: usedCoins + .map((e) => e.value) + .reduce((value, element) => value += element) + .toString(), walletOwns: true, ); wasSentFromThisWallet = true; @@ -505,11 +497,10 @@ class FiroWallet extends Bip39HDWallet spentSparkCoins.isNotEmpty) { input = input.copyWith( addresses: spentSparkCoins.map((e) => e.address).toList(), - valueStringSats: - spentSparkCoins - .map((e) => e.value) - .fold(BigInt.zero, (p, e) => p + e) - .toString(), + valueStringSats: spentSparkCoins + .map((e) => e.value) + .fold(BigInt.zero, (p, e) => p + e) + .toString(), walletOwns: true, ); wasSentFromThisWallet = true; diff --git a/lib/wallets/wallet/impl/litecoin_wallet.dart b/lib/wallets/wallet/impl/litecoin_wallet.dart index db497a9040..6ce770c615 100644 --- a/lib/wallets/wallet/impl/litecoin_wallet.dart +++ b/lib/wallets/wallet/impl/litecoin_wallet.dart @@ -49,20 +49,19 @@ class LitecoinWallet @override Future> fetchAddressesForElectrumXScan() async { - final allAddresses = - await mainDB - .getAddresses(walletId) - .filter() - .not() - .group( - (q) => q - .typeEqualTo(AddressType.mweb) - .or() - .typeEqualTo(AddressType.nonWallet) - .or() - .subTypeEqualTo(AddressSubType.nonWallet), - ) - .findAll(); + final allAddresses = await mainDB + .getAddresses(walletId) + .filter() + .not() + .group( + (q) => q + .typeEqualTo(AddressType.mweb) + .or() + .typeEqualTo(AddressType.nonWallet) + .or() + .subTypeEqualTo(AddressSubType.nonWallet), + ) + .findAll(); return allAddresses; } @@ -75,16 +74,14 @@ class LitecoinWallet await fetchAddressesForElectrumXScan(); // Separate receiving and change addresses. - final Set receivingAddresses = - allAddressesOld - .where((e) => e.subType == AddressSubType.receiving) - .map((e) => e.value) - .toSet(); - final Set changeAddresses = - allAddressesOld - .where((e) => e.subType == AddressSubType.change) - .map((e) => e.value) - .toSet(); + final Set receivingAddresses = allAddressesOld + .where((e) => e.subType == AddressSubType.receiving) + .map((e) => e.value) + .toSet(); + final Set changeAddresses = allAddressesOld + .where((e) => e.subType == AddressSubType.change) + .map((e) => e.value) + .toSet(); // Remove duplicates. final allAddressesSet = {...receivingAddresses, ...changeAddresses}; @@ -102,11 +99,10 @@ class LitecoinWallet final List> allTransactions = []; for (final txHash in allTxHashes) { // Check for duplicates by searching for tx by tx_hash in db. - final storedTx = - await mainDB.isar.transactionV2s - .where() - .txidWalletIdEqualTo(txHash["tx_hash"] as String, walletId) - .findFirst(); + final storedTx = await mainDB.isar.transactionV2s + .where() + .txidWalletIdEqualTo(txHash["tx_hash"] as String, walletId) + .findFirst(); if (storedTx == null || storedTx.height == null || @@ -239,10 +235,9 @@ class LitecoinWallet final db = Drift.get(walletId); - final mwebUtxo = - await (db.select( - db.mwebUtxos, - )..where((e) => e.outputId.equals(outputId))).getSingleOrNull(); + final mwebUtxo = await (db.select( + db.mwebUtxos, + )..where((e) => e.outputId.equals(outputId))).getSingleOrNull(); final output = OutputV2.isarCantDoRequiredInDefaultConstructor( scriptPubKeyHex: "mweb", @@ -283,13 +278,12 @@ class LitecoinWallet // Check for special Litecoin outputs like ordinals. if (outputs.isNotEmpty) { // may not catch every case but it is much quicker - final hasOrdinal = - await mainDB.isar.ordinals - .where() - .filter() - .walletIdEqualTo(walletId) - .utxoTXIDEqualTo(txData["txid"] as String) - .isNotEmpty(); + final hasOrdinal = await mainDB.isar.ordinals + .where() + .filter() + .walletIdEqualTo(walletId) + .utxoTXIDEqualTo(txData["txid"] as String) + .isNotEmpty(); if (hasOrdinal) { subType = TransactionSubType.ordinal; } else { diff --git a/lib/wallets/wallet/impl/namecoin_wallet.dart b/lib/wallets/wallet/impl/namecoin_wallet.dart index a6dd6f74b7..9f3cf460d5 100644 --- a/lib/wallets/wallet/impl/namecoin_wallet.dart +++ b/lib/wallets/wallet/impl/namecoin_wallet.dart @@ -72,18 +72,17 @@ class NamecoinWallet @override Future> fetchAddressesForElectrumXScan() async { - final allAddresses = - await mainDB - .getAddresses(walletId) - .filter() - .not() - .group( - (q) => q - .typeEqualTo(AddressType.nonWallet) - .or() - .subTypeEqualTo(AddressSubType.nonWallet), - ) - .findAll(); + final allAddresses = await mainDB + .getAddresses(walletId) + .filter() + .not() + .group( + (q) => q + .typeEqualTo(AddressType.nonWallet) + .or() + .subTypeEqualTo(AddressSubType.nonWallet), + ) + .findAll(); return allAddresses; } @@ -140,9 +139,8 @@ class NamecoinWallet blockReason = "Contains name"; try { - final rawNameOP = - (output["scriptPubKey"]["nameOp"] as Map) - .cast(); + final rawNameOP = (output["scriptPubKey"]["nameOp"] as Map) + .cast(); otherDataString = jsonEncode({ UTXOOtherDataKeys.nameOpData: jsonEncode(rawNameOP), @@ -227,16 +225,14 @@ class NamecoinWallet await fetchAddressesForElectrumXScan(); // Separate receiving and change addresses. - final Set receivingAddresses = - allAddressesOld - .where((e) => e.subType == AddressSubType.receiving) - .map((e) => e.value) - .toSet(); - final Set changeAddresses = - allAddressesOld - .where((e) => e.subType == AddressSubType.change) - .map((e) => e.value) - .toSet(); + final Set receivingAddresses = allAddressesOld + .where((e) => e.subType == AddressSubType.receiving) + .map((e) => e.value) + .toSet(); + final Set changeAddresses = allAddressesOld + .where((e) => e.subType == AddressSubType.change) + .map((e) => e.value) + .toSet(); // Remove duplicates. final allAddressesSet = {...receivingAddresses, ...changeAddresses}; @@ -250,11 +246,10 @@ class NamecoinWallet final List> allTransactions = []; for (final txHash in allTxHashes) { // Check for duplicates by searching for tx by tx_hash in db. - final storedTx = - await mainDB.isar.transactionV2s - .where() - .txidWalletIdEqualTo(txHash["tx_hash"] as String, walletId) - .findFirst(); + final storedTx = await mainDB.isar.transactionV2s + .where() + .txidWalletIdEqualTo(txHash["tx_hash"] as String, walletId) + .findFirst(); if (storedTx == null || storedTx.height == null || @@ -442,8 +437,11 @@ class NamecoinWallet ) async { // first check own utxos. Should only need to check NAME NEW here. // NAME UPDATE and NAME FIRST UPDATE will appear readable from electrumx - final utxos = - await mainDB.getUTXOs(walletId).filter().otherDataIsNotNull().findAll(); + final utxos = await mainDB + .getUTXOs(walletId) + .filter() + .otherDataIsNotNull() + .findAll(); for (final utxo in utxos) { final nameOp = getOpNameDataFrom(utxo); if (nameOp?.op == OpName.nameNew) { @@ -509,18 +507,17 @@ class NamecoinWallet try { final currentHeight = await chainHeight; // not ideal filtering - final utxos = - await mainDB - .getUTXOs(walletId) - .filter() - .otherDataIsNotNull() - .and() - .blockHeightIsNotNull() - .and() - .blockHeightGreaterThan(0) - .and() - .blockHeightLessThan(currentHeight - kNameWaitBlocks) - .findAll(); + final utxos = await mainDB + .getUTXOs(walletId) + .filter() + .otherDataIsNotNull() + .and() + .blockHeightIsNotNull() + .and() + .blockHeightGreaterThan(0) + .and() + .blockHeightLessThan(currentHeight - kNameWaitBlocks) + .findAll(); Logging.instance.t( "_unknownNameNewOutputs(count=${_unknownNameNewOutputs.length})" @@ -572,8 +569,9 @@ class NamecoinWallet data.salt, ); - String noteName = - data.name.startsWith("d/") ? data.name.substring(2) : data.name; + String noteName = data.name.startsWith("d/") + ? data.name.substring(2) + : data.name; if (!noteName.endsWith(".bit")) { noteName += ".bit"; } @@ -638,8 +636,10 @@ class NamecoinWallet assert(txData.recipients!.where((e) => !e.isChange).length == 1); if (!isForFeeCalcPurposesOnly) { - final nameAmount = - txData.recipients!.where((e) => !e.isChange).first.amount; + final nameAmount = txData.recipients! + .where((e) => !e.isChange) + .first + .amount; switch (txData.opNameState!.type) { case OpName.nameNew: @@ -664,10 +664,9 @@ class NamecoinWallet ); // TODO: [prio=high]: check this opt in rbf - final sequence = - this is RbfInterface && (this as RbfInterface).flagOptInRBF - ? 0xffffffff - 10 - : 0xffffffff - 1; + final sequence = this is RbfInterface && (this as RbfInterface).flagOptInRBF + ? 0xffffffff - 10 + : 0xffffffff - 1; // Add transaction inputs for (int i = 0; i < inputsWithKeys.length; i++) { @@ -737,10 +736,9 @@ class NamecoinWallet txid: inputsWithKeys[i].utxo.txid, vout: inputsWithKeys[i].utxo.vout, ), - addresses: - inputsWithKeys[i].utxo.address == null - ? [] - : [inputsWithKeys[i].utxo.address!], + addresses: inputsWithKeys[i].utxo.address == null + ? [] + : [inputsWithKeys[i].utxo.address!], valueStringSats: inputsWithKeys[i].utxo.value.toString(), witness: null, innerRedeemScriptAsm: null, @@ -872,9 +870,9 @@ class NamecoinWallet version: clTx.version, type: tempOutputs.map((e) => e.walletOwns).fold(true, (p, e) => p &= e) && - txData.paynymAccountLite == null - ? TransactionType.sentToSelf - : TransactionType.outgoing, + txData.paynymAccountLite == null + ? TransactionType.sentToSelf + : TransactionType.outgoing, subType: TransactionSubType.none, otherData: null, ), @@ -1023,20 +1021,19 @@ class NamecoinWallet final canCPFP = this is CpfpInterface && coinControl; - final spendableOutputs = - availableOutputs - .where( - (e) => - !e.isBlocked && - (e.used != true) && - (canCPFP || - e.isConfirmed( - currentChainHeight, - cryptoCurrency.minConfirms, - cryptoCurrency.minCoinbaseConfirms, - )), - ) - .toList(); + final spendableOutputs = availableOutputs + .where( + (e) => + !e.isBlocked && + (e.used != true) && + (canCPFP || + e.isConfirmed( + currentChainHeight, + cryptoCurrency.minConfirms, + cryptoCurrency.minCoinbaseConfirms, + )), + ) + .toList(); if (coinControl) { if (spendableOutputs.length < availableOutputs.length) { @@ -1118,24 +1115,22 @@ class NamecoinWallet final List recipientsAmtArray = [satoshiAmountToSend]; // gather required signing data - final inputsWithKeys = - (await addSigningKeys( - utxoObjectsToUse.map((e) => StandardInput(e)).toList(), - )).whereType().toList(); + final inputsWithKeys = (await addSigningKeys( + utxoObjectsToUse.map((e) => StandardInput(e)).toList(), + )).whereType().toList(); final int vSizeForOneOutput; try { - vSizeForOneOutput = - (await _createNameTx( - inputsWithKeys: inputsWithKeys, - isForFeeCalcPurposesOnly: true, - txData: txData.copyWith( - recipients: await helperRecipientsConvert( - [recipientAddress], - [satoshisBeingUsed], - ), - ), - )).vSize!; + vSizeForOneOutput = (await _createNameTx( + inputsWithKeys: inputsWithKeys, + isForFeeCalcPurposesOnly: true, + txData: txData.copyWith( + recipients: await helperRecipientsConvert( + [recipientAddress], + [satoshisBeingUsed], + ), + ), + )).vSize!; } catch (e, s) { Logging.instance.e("vSizeForOneOutput: $e", error: e, stackTrace: s); rethrow; @@ -1146,20 +1141,19 @@ class NamecoinWallet BigInt maxBI(BigInt a, BigInt b) => a > b ? a : b; try { - vSizeForTwoOutPuts = - (await _createNameTx( - inputsWithKeys: inputsWithKeys, - isForFeeCalcPurposesOnly: true, - txData: txData.copyWith( - recipients: await helperRecipientsConvert( - [recipientAddress, (await getCurrentChangeAddress())!.value], - [ - satoshiAmountToSend, - maxBI(BigInt.zero, satoshisBeingUsed - satoshiAmountToSend), - ], - ), - ), - )).vSize!; + vSizeForTwoOutPuts = (await _createNameTx( + inputsWithKeys: inputsWithKeys, + isForFeeCalcPurposesOnly: true, + txData: txData.copyWith( + recipients: await helperRecipientsConvert( + [recipientAddress, (await getCurrentChangeAddress())!.value], + [ + satoshiAmountToSend, + maxBI(BigInt.zero, satoshisBeingUsed - satoshiAmountToSend), + ], + ), + ), + )).vSize!; } catch (e, s) { Logging.instance.e("vSizeForTwoOutPuts: $e", error: e, stackTrace: s); rethrow; @@ -1170,18 +1164,18 @@ class NamecoinWallet satsPerVByte != null ? (satsPerVByte * vSizeForOneOutput) : estimateTxFee( - vSize: vSizeForOneOutput, - feeRatePerKB: selectedTxFeeRate, - ), + vSize: vSizeForOneOutput, + feeRatePerKB: selectedTxFeeRate, + ), ); // Assume 2 outputs, one for recipient and one for change final feeForTwoOutputs = BigInt.from( satsPerVByte != null ? (satsPerVByte * vSizeForTwoOutPuts) : estimateTxFee( - vSize: vSizeForTwoOutPuts, - feeRatePerKB: selectedTxFeeRate, - ), + vSize: vSizeForTwoOutPuts, + feeRatePerKB: selectedTxFeeRate, + ), ); Logging.instance.d( diff --git a/lib/wallets/wallet/impl/particl_wallet.dart b/lib/wallets/wallet/impl/particl_wallet.dart index eb9fb60437..855b0a409c 100644 --- a/lib/wallets/wallet/impl/particl_wallet.dart +++ b/lib/wallets/wallet/impl/particl_wallet.dart @@ -45,18 +45,17 @@ class ParticlWallet @override Future> fetchAddressesForElectrumXScan() async { - final allAddresses = - await mainDB - .getAddresses(walletId) - .filter() - .not() - .group( - (q) => q - .typeEqualTo(AddressType.nonWallet) - .or() - .subTypeEqualTo(AddressSubType.nonWallet), - ) - .findAll(); + final allAddresses = await mainDB + .getAddresses(walletId) + .filter() + .not() + .group( + (q) => q + .typeEqualTo(AddressType.nonWallet) + .or() + .subTypeEqualTo(AddressSubType.nonWallet), + ) + .findAll(); return allAddresses; } @@ -140,16 +139,14 @@ class ParticlWallet await fetchAddressesForElectrumXScan(); // Separate receiving and change addresses. - final Set receivingAddresses = - allAddressesOld - .where((e) => e.subType == AddressSubType.receiving) - .map((e) => e.value) - .toSet(); - final Set changeAddresses = - allAddressesOld - .where((e) => e.subType == AddressSubType.change) - .map((e) => e.value) - .toSet(); + final Set receivingAddresses = allAddressesOld + .where((e) => e.subType == AddressSubType.receiving) + .map((e) => e.value) + .toSet(); + final Set changeAddresses = allAddressesOld + .where((e) => e.subType == AddressSubType.change) + .map((e) => e.value) + .toSet(); // Remove duplicates. final allAddressesSet = {...receivingAddresses, ...changeAddresses}; @@ -163,11 +160,10 @@ class ParticlWallet final List> allTransactions = []; for (final txHash in allTxHashes) { // Check for duplicates by searching for tx by tx_hash in db. - final storedTx = - await mainDB.isar.transactionV2s - .where() - .txidWalletIdEqualTo(txHash["tx_hash"] as String, walletId) - .findFirst(); + final storedTx = await mainDB.isar.transactionV2s + .where() + .txidWalletIdEqualTo(txHash["tx_hash"] as String, walletId) + .findFirst(); if (storedTx == null || storedTx.height == null || @@ -382,31 +378,28 @@ class ParticlWallet switch (sd.derivePathType) { case DerivePathType.bip44: - data = - bitcoindart - .P2PKH( - data: bitcoindart.PaymentData(pubkey: pubKey), - network: convertedNetwork, - ) - .data; + data = bitcoindart + .P2PKH( + data: bitcoindart.PaymentData(pubkey: pubKey), + network: convertedNetwork, + ) + .data; break; case DerivePathType.bip49: - final p2wpkh = - bitcoindart - .P2WPKH( - data: bitcoindart.PaymentData(pubkey: pubKey), - network: convertedNetwork, - ) - .data; + final p2wpkh = bitcoindart + .P2WPKH( + data: bitcoindart.PaymentData(pubkey: pubKey), + network: convertedNetwork, + ) + .data; redeem = p2wpkh.output; - data = - bitcoindart - .P2SH( - data: bitcoindart.PaymentData(redeem: p2wpkh), - network: convertedNetwork, - ) - .data; + data = bitcoindart + .P2SH( + data: bitcoindart.PaymentData(redeem: p2wpkh), + network: convertedNetwork, + ) + .data; break; case DerivePathType.bip84: @@ -414,13 +407,12 @@ class ParticlWallet // prevOut: coinlib.OutPoint.fromHex(sd.utxo.txid, sd.utxo.vout), // publicKey: keys.publicKey, // ); - data = - bitcoindart - .P2WPKH( - data: bitcoindart.PaymentData(pubkey: pubKey), - network: convertedNetwork, - ) - .data; + data = bitcoindart + .P2WPKH( + data: bitcoindart.PaymentData(pubkey: pubKey), + network: convertedNetwork, + ) + .data; break; case DerivePathType.bip86: @@ -469,10 +461,9 @@ class ParticlWallet txid: insAndKeys[i].utxo.txid, vout: insAndKeys[i].utxo.vout, ), - addresses: - insAndKeys[i].utxo.address == null - ? [] - : [insAndKeys[i].utxo.address!], + addresses: insAndKeys[i].utxo.address == null + ? [] + : [insAndKeys[i].utxo.address!], valueStringSats: insAndKeys[i].utxo.value.toString(), witness: null, innerRedeemScriptAsm: null, diff --git a/lib/wallets/wallet/impl/peercoin_wallet.dart b/lib/wallets/wallet/impl/peercoin_wallet.dart index 8046f0d23c..b8a3a8a5e7 100644 --- a/lib/wallets/wallet/impl/peercoin_wallet.dart +++ b/lib/wallets/wallet/impl/peercoin_wallet.dart @@ -37,18 +37,17 @@ class PeercoinWallet @override Future> fetchAddressesForElectrumXScan() async { - final allAddresses = - await mainDB - .getAddresses(walletId) - .filter() - .not() - .group( - (q) => q - .typeEqualTo(AddressType.nonWallet) - .or() - .subTypeEqualTo(AddressSubType.nonWallet), - ) - .findAll(); + final allAddresses = await mainDB + .getAddresses(walletId) + .filter() + .not() + .group( + (q) => q + .typeEqualTo(AddressType.nonWallet) + .or() + .subTypeEqualTo(AddressSubType.nonWallet), + ) + .findAll(); return allAddresses; } @@ -98,16 +97,14 @@ class PeercoinWallet await fetchAddressesForElectrumXScan(); // Separate receiving and change addresses. - final Set receivingAddresses = - allAddressesOld - .where((e) => e.subType == AddressSubType.receiving) - .map((e) => e.value) - .toSet(); - final Set changeAddresses = - allAddressesOld - .where((e) => e.subType == AddressSubType.change) - .map((e) => e.value) - .toSet(); + final Set receivingAddresses = allAddressesOld + .where((e) => e.subType == AddressSubType.receiving) + .map((e) => e.value) + .toSet(); + final Set changeAddresses = allAddressesOld + .where((e) => e.subType == AddressSubType.change) + .map((e) => e.value) + .toSet(); // Remove duplicates. final allAddressesSet = {...receivingAddresses, ...changeAddresses}; @@ -121,11 +118,10 @@ class PeercoinWallet final List> allTransactions = []; for (final txHash in allTxHashes) { // Check for duplicates by searching for tx by tx_hash in db. - final storedTx = - await mainDB.isar.transactionV2s - .where() - .txidWalletIdEqualTo(txHash["tx_hash"] as String, walletId) - .findFirst(); + final storedTx = await mainDB.isar.transactionV2s + .where() + .txidWalletIdEqualTo(txHash["tx_hash"] as String, walletId) + .findFirst(); if (storedTx == null || storedTx.height == null || diff --git a/lib/wallets/wallet/impl/stellar_wallet.dart b/lib/wallets/wallet/impl/stellar_wallet.dart index 86cc1aa026..17b22ed675 100644 --- a/lib/wallets/wallet/impl/stellar_wallet.dart +++ b/lib/wallets/wallet/impl/stellar_wallet.dart @@ -140,8 +140,9 @@ class StellarWallet extends Bip39Wallet { HttpClient? _httpClient; if (AppConfig.hasFeature(AppFeature.tor) && prefs.useTor) { - final ({InternetAddress host, int port}) proxyInfo = - TorService.sharedInstance.getProxyInfo(); + final ({InternetAddress host, int port}) proxyInfo = TorService + .sharedInstance + .getProxyInfo(); _httpClient = HttpClient(); SocksTCPClient.assignToHttpClient(_httpClient, [ @@ -470,11 +471,10 @@ class StellarWallet extends Bip39Wallet { final List transactionList = []; stellar.Page payments; try { - payments = - await (await stellarSdk).payments - .forAccount(myAddress.value) - .order(stellar.RequestBuilderOrder.DESC) - .execute(); + payments = await (await stellarSdk).payments + .forAccount(myAddress.value) + .order(stellar.RequestBuilderOrder.DESC) + .execute(); } catch (e) { if (e is stellar.ErrorResponse && e.body.contains( @@ -561,11 +561,10 @@ class StellarWallet extends Bip39Wallet { } final otherData = { - "overrideFee": - Amount( - rawValue: BigInt.from(fee), - fractionDigits: cryptoCurrency.fractionDigits, - ).toJsonString(), + "overrideFee": Amount( + rawValue: BigInt.from(fee), + fractionDigits: cryptoCurrency.fractionDigits, + ).toJsonString(), }; final theTransaction = TransactionV2( @@ -647,11 +646,10 @@ class StellarWallet extends Bip39Wallet { } final otherData = { - "overrideFee": - Amount( - rawValue: BigInt.from(fee), - fractionDigits: cryptoCurrency.fractionDigits, - ).toJsonString(), + "overrideFee": Amount( + rawValue: BigInt.from(fee), + fractionDigits: cryptoCurrency.fractionDigits, + ).toJsonString(), }; final theTransaction = TransactionV2( diff --git a/lib/wallets/wallet/impl/sub_wallets/eth_token_wallet.dart b/lib/wallets/wallet/impl/sub_wallets/eth_token_wallet.dart index e45babf9f9..b6c7fbe684 100644 --- a/lib/wallets/wallet/impl/sub_wallets/eth_token_wallet.dart +++ b/lib/wallets/wallet/impl/sub_wallets/eth_token_wallet.dart @@ -110,10 +110,9 @@ class EthTokenWallet extends Wallet { inputs: List.unmodifiable(inputs), outputs: List.unmodifiable(outputs), version: -1, - type: - addressTo == myAddress - ? TransactionType.sentToSelf - : TransactionType.outgoing, + type: addressTo == myAddress + ? TransactionType.sentToSelf + : TransactionType.outgoing, subType: TransactionSubType.ethToken, otherData: jsonEncode(otherData), ); @@ -217,11 +216,10 @@ class EthTokenWallet extends Wallet { // double check balance after internalSharedPrepareSend call to ensure // balance is up to date - final info = - await mainDB.isar.tokenWalletInfo - .where() - .walletIdTokenAddressEqualTo(walletId, tokenContract.address) - .findFirst(); + final info = await mainDB.isar.tokenWalletInfo + .where() + .walletIdTokenAddressEqualTo(walletId, tokenContract.address) + .findFirst(); final availableBalance = info?.getCachedBalance().spendable ?? Amount.zeroWith(fractionDigits: tokenContract.decimals); @@ -302,11 +300,10 @@ class EthTokenWallet extends Wallet { @override Future updateBalance() async { try { - final info = - await mainDB.isar.tokenWalletInfo - .where() - .walletIdTokenAddressEqualTo(walletId, tokenContract.address) - .findFirst(); + final info = await mainDB.isar.tokenWalletInfo + .where() + .walletIdTokenAddressEqualTo(walletId, tokenContract.address) + .findFirst(); final response = await EthereumAPI.getWalletTokenBalance( address: (await getCurrentReceivingAddress())!.value, contractAddress: tokenContract.address, diff --git a/lib/wallets/wallet/intermediate/cryptonote_wallet.dart b/lib/wallets/wallet/intermediate/cryptonote_wallet.dart index 0d32e07a3c..a25647bc91 100644 --- a/lib/wallets/wallet/intermediate/cryptonote_wallet.dart +++ b/lib/wallets/wallet/intermediate/cryptonote_wallet.dart @@ -4,7 +4,8 @@ import '../wallet_mixin_interfaces/coin_control_interface.dart'; import '../wallet_mixin_interfaces/mnemonic_interface.dart'; import 'external_wallet.dart'; -abstract class CryptonoteWallet extends ExternalWallet +abstract class CryptonoteWallet + extends ExternalWallet with MnemonicInterface, CoinControlInterface { CryptonoteWallet(super.currency); } diff --git a/lib/wallets/wallet/wallet.dart b/lib/wallets/wallet/wallet.dart index 0fa72d6822..5ae6121615 100644 --- a/lib/wallets/wallet/wallet.dart +++ b/lib/wallets/wallet/wallet.dart @@ -6,6 +6,8 @@ import 'package:mutex/mutex.dart'; import '../../db/isar/main_db.dart'; import '../../models/isar/models/blockchain_data/address.dart'; +import '../../models/isar/models/blockchain_data/transaction.dart'; +import '../../models/isar/models/blockchain_data/v2/transaction_v2.dart'; import '../../models/isar/models/ethereum/eth_contract.dart'; import '../../models/keys/view_only_wallet_data.dart'; import '../../models/node_model.dart'; @@ -15,6 +17,8 @@ import '../../services/event_bus/events/global/refresh_percent_changed_event.dar import '../../services/event_bus/events/global/wallet_sync_status_changed_event.dart'; import '../../services/event_bus/global_event_bus.dart'; import '../../services/node_service.dart'; +import '../../services/transaction_notification_tracker.dart'; +import '../../widgets/crypto_notifications.dart'; import '../../utilities/amount/amount.dart'; import '../../utilities/constants.dart'; import '../../utilities/enums/sync_type_enum.dart'; @@ -244,11 +248,10 @@ abstract class Wallet { required NodeService nodeService, required Prefs prefs, }) async { - final walletInfo = - await mainDB.isar.walletInfo - .where() - .walletIdEqualTo(walletId) - .findFirst(); + final walletInfo = await mainDB.isar.walletInfo + .where() + .walletIdEqualTo(walletId) + .findFirst(); Logging.instance.i( "Wallet.load loading" @@ -438,10 +441,9 @@ abstract class Wallet { final bool hasNetwork = await pingCheck(); if (_isConnected != hasNetwork) { - final NodeConnectionStatus status = - hasNetwork - ? NodeConnectionStatus.connected - : NodeConnectionStatus.disconnected; + final NodeConnectionStatus status = hasNetwork + ? NodeConnectionStatus.connected + : NodeConnectionStatus.disconnected; if (!doNotFireRefreshEvents) { GlobalEventBus.instance.fire( NodeConnectionStatusChangedEvent(status, walletId, cryptoCurrency), @@ -683,6 +685,14 @@ abstract class Wallet { await (this as SparkInterface).refreshSparkData((0.3, 0.6)); } + // Capture known transaction IDs before updating so we can detect new ones. + final knownTxids = await mainDB.isar.transactionV2s + .where() + .walletIdEqualTo(walletId) + .txidProperty() + .findAll(); + final knownTxidSet = knownTxids.toSet(); + if (this is NamecoinWallet) { await updateUTXOs(); _fireRefreshPercentChange(0.6); @@ -699,6 +709,49 @@ abstract class Wallet { await fetchFuture; } + // Check for new incoming transactions and fire notification events. + try { + final tracker = TransactionNotificationTracker(walletId: walletId); + final allTxs = await mainDB.isar.transactionV2s + .where() + .walletIdEqualTo(walletId) + .findAll(); + + for (final tx in allTxs) { + if (!knownTxidSet.contains(tx.txid) && + tx.type == TransactionType.incoming && + !tracker.wasNotifiedPending(tx.txid)) { + final amount = tx.getAmountReceivedInThisWallet( + fractionDigits: cryptoCurrency.fractionDigits, + ); + + CryptoNotificationsEventBus.instance.fire( + CryptoNotificationEvent( + title: "Incoming ${cryptoCurrency.prettyName} transaction", + walletId: walletId, + walletName: info.name, + date: DateTime.fromMillisecondsSinceEpoch(tx.timestamp * 1000), + shouldWatchForUpdates: tx.height == null || tx.height! <= 0, + coin: cryptoCurrency, + txid: tx.txid, + confirmations: tx.getConfirmations(info.cachedChainHeight), + requiredConfirmations: cryptoCurrency.minConfirms, + payload: + "${amount.decimal.toStringAsFixed(cryptoCurrency.fractionDigits)} ${cryptoCurrency.ticker}", + ), + ); + + await tracker.addNotifiedPending(tx.txid); + } + } + } catch (e, s) { + Logging.instance.w( + "Transaction notification check failed: $e", + error: e, + stackTrace: s, + ); + } + // TODO: [prio=low] handle this differently. Extra modification of this file for coin specific functionality should be avoided. if (!viewOnly && this is PaynymInterface && codesToCheck.isNotEmpty) { await (this as PaynymInterface).checkForNotificationTransactionsTo( @@ -756,11 +809,10 @@ abstract class Wallet { // Check if there's another wallet of this coin on the sync list. final List walletIds = []; for (final id in prefs.walletIdsSyncOnStartup) { - final wallet = - mainDB.isar.walletInfo - .where() - .walletIdEqualTo(id) - .findFirstSync()!; + final wallet = mainDB.isar.walletInfo + .where() + .walletIdEqualTo(id) + .findFirstSync()!; if (wallet.coin == cryptoCurrency) { walletIds.add(id); diff --git a/lib/wallets/wallet/wallet_mixin_interfaces/electrumx_interface.dart b/lib/wallets/wallet/wallet_mixin_interfaces/electrumx_interface.dart index 26106e6778..0af68f2a3c 100644 --- a/lib/wallets/wallet/wallet_mixin_interfaces/electrumx_interface.dart +++ b/lib/wallets/wallet/wallet_mixin_interfaces/electrumx_interface.dart @@ -152,9 +152,9 @@ mixin ElectrumXInterface if (txData.type == TxType.mweb || txData.type == TxType.mwebPegOut) { if (utxos == null) { final db = Drift.get(walletId); - final mwebUtxos = - await (db.select(db.mwebUtxos) - ..where((e) => e.used.equals(false))).get(); + final mwebUtxos = await (db.select( + db.mwebUtxos, + )..where((e) => e.used.equals(false))).get(); availableOutputs = mwebUtxos.map((e) => MwebInput(e)).toList(); } else { @@ -172,23 +172,22 @@ mixin ElectrumXInterface final canCPFP = this is CpfpInterface && coinControl; - final spendableOutputs = - availableOutputs.where((e) { - if (e is StandardInput) { - return !e.utxo.isBlocked && - (e.utxo.used != true) && - (canCPFP || - e.utxo.isConfirmed( - currentChainHeight, - cryptoCurrency.minConfirms, - cryptoCurrency.minCoinbaseConfirms, - )); - } else if (e is MwebInput) { - return !e.utxo.blocked && !e.utxo.used; - } else { - return false; - } - }).toList(); + final spendableOutputs = availableOutputs.where((e) { + if (e is StandardInput) { + return !e.utxo.isBlocked && + (e.utxo.used != true) && + (canCPFP || + e.utxo.isConfirmed( + currentChainHeight, + cryptoCurrency.minConfirms, + cryptoCurrency.minCoinbaseConfirms, + )); + } else if (e is MwebInput) { + return !e.utxo.blocked && !e.utxo.used; + } else { + return false; + } + }).toList(); final spendableSatoshiValue = spendableOutputs.fold( BigInt.zero, (p, e) => p + e.value, @@ -296,16 +295,15 @@ mixin ElectrumXInterface final int vSizeForOneOutput; try { - vSizeForOneOutput = - (await buildTransaction( - inputsWithKeys: inputsWithKeys, - txData: txData.copyWith( - recipients: await helperRecipientsConvert( - [recipientAddress], - [satoshisBeingUsed - BigInt.one], - ), - ), - )).vSize!; + vSizeForOneOutput = (await buildTransaction( + inputsWithKeys: inputsWithKeys, + txData: txData.copyWith( + recipients: await helperRecipientsConvert( + [recipientAddress], + [satoshisBeingUsed - BigInt.one], + ), + ), + )).vSize!; } catch (e, s) { Logging.instance.e("vSizeForOneOutput: $e", error: e, stackTrace: s); rethrow; @@ -316,22 +314,21 @@ mixin ElectrumXInterface BigInt maxBI(BigInt a, BigInt b) => a > b ? a : b; try { - vSizeForTwoOutPuts = - (await buildTransaction( - inputsWithKeys: inputsWithKeys, - txData: txData.copyWith( - recipients: await helperRecipientsConvert( - [recipientAddress, (await changeAddress()).value], - [ - satoshiAmountToSend, - maxBI( - BigInt.zero, - satoshisBeingUsed - (satoshiAmountToSend + BigInt.one), - ), - ], + vSizeForTwoOutPuts = (await buildTransaction( + inputsWithKeys: inputsWithKeys, + txData: txData.copyWith( + recipients: await helperRecipientsConvert( + [recipientAddress, (await changeAddress()).value], + [ + satoshiAmountToSend, + maxBI( + BigInt.zero, + satoshisBeingUsed - (satoshiAmountToSend + BigInt.one), ), - ), - )).vSize!; + ], + ), + ), + )).vSize!; } catch (e, s) { Logging.instance.e("vSizeForTwoOutPuts: $e", error: e, stackTrace: s); rethrow; @@ -344,9 +341,9 @@ mixin ElectrumXInterface satsPerVByte != null ? (satsPerVByte * vSizeForOneOutput) : estimateTxFee( - vSize: vSizeForOneOutput, - feeRatePerKB: selectedTxFeeRate, - ), + vSize: vSizeForOneOutput, + feeRatePerKB: selectedTxFeeRate, + ), ); // Assume 2 outputs, one for recipient and one for change final feeForTwoOutputs = @@ -355,9 +352,9 @@ mixin ElectrumXInterface satsPerVByte != null ? (satsPerVByte * vSizeForTwoOutPuts) : estimateTxFee( - vSize: vSizeForTwoOutPuts, - feeRatePerKB: selectedTxFeeRate, - ), + vSize: vSizeForTwoOutPuts, + feeRatePerKB: selectedTxFeeRate, + ), ); Logging.instance.d("feeForTwoOutputs: $feeForTwoOutputs"); @@ -513,28 +510,30 @@ mixin ElectrumXInterface BigInt feeForOneOutput; if (overrideFeeAmount == null) { - final int vSizeForOneOutput = - (await buildTransaction( - inputsWithKeys: inputsWithKeys, - txData: txData.copyWith( - recipients: await helperRecipientsConvert( - [recipientAddress], - [satoshisBeingUsed - BigInt.one], - ), - ), - )).vSize!; + final int vSizeForOneOutput = (await buildTransaction( + inputsWithKeys: inputsWithKeys, + txData: txData.copyWith( + recipients: await helperRecipientsConvert( + [recipientAddress], + [satoshisBeingUsed - BigInt.one], + ), + ), + )).vSize!; feeForOneOutput = BigInt.from( satsPerVByte != null ? (satsPerVByte * vSizeForOneOutput) : estimateTxFee( - vSize: vSizeForOneOutput, - feeRatePerKB: feeRatePerKB, - ), + vSize: vSizeForOneOutput, + feeRatePerKB: feeRatePerKB, + ), ); if (satsPerVByte == null) { - final roughEstimate = - roughFeeEstimate(inputsWithKeys.length, 1, feeRatePerKB).raw; + final roughEstimate = roughFeeEstimate( + inputsWithKeys.length, + 1, + feeRatePerKB, + ).raw; if (feeForOneOutput < roughEstimate) { feeForOneOutput = roughEstimate; } @@ -604,8 +603,8 @@ mixin ElectrumXInterface final code = await (this as PaynymInterface) .paymentCodeStringByKey(address.otherData!); - final bip47base = - await (this as PaynymInterface).getBip47BaseNode(); + final bip47base = await (this as PaynymInterface) + .getBip47BaseNode(); final privateKey = await (this as PaynymInterface) .getPrivateKeyForPaynymReceivingAddress( @@ -664,10 +663,9 @@ mixin ElectrumXInterface ); // TODO: [prio=high]: check this opt in rbf - final sequence = - this is RbfInterface && (this as RbfInterface).flagOptInRBF - ? 0xffffffff - 10 - : 0xffffffff - 1; + final sequence = this is RbfInterface && (this as RbfInterface).flagOptInRBF + ? 0xffffffff - 10 + : 0xffffffff - 1; bool isMweb = false; bool hasNonWitnessInput = false; @@ -907,44 +905,43 @@ mixin ElectrumXInterface raw: clTx.toHex(), // dirty shortcut for peercoin's weirdness vSize: this is PeercoinWallet ? clTx.size : clTx.vSize(), - tempTx: - txData.type == TxType.mwebPegIn - ? null - : txData.type.isMweb() - ? TransactionV2( - walletId: walletId, - blockHash: null, - hash: clTx.hashHex, - txid: clTx.txid, - height: null, - timestamp: DateTime.timestamp().millisecondsSinceEpoch ~/ 1000, - inputs: List.unmodifiable(tempInputs), - outputs: List.unmodifiable(tempOutputs), - version: clTx.version, - type: TransactionType.outgoing, - subType: TransactionSubType.mweb, - otherData: null, - ) - : TransactionV2( - walletId: walletId, - blockHash: null, - hash: clTx.hashHex, - txid: clTx.txid, - height: null, - timestamp: DateTime.timestamp().millisecondsSinceEpoch ~/ 1000, - inputs: List.unmodifiable(tempInputs), - outputs: List.unmodifiable(tempOutputs), - version: clTx.version, - type: - tempOutputs - .map((e) => e.walletOwns) - .fold(true, (p, e) => p &= e) && - txData.paynymAccountLite == null - ? TransactionType.sentToSelf - : TransactionType.outgoing, - subType: TransactionSubType.none, - otherData: null, - ), + tempTx: txData.type == TxType.mwebPegIn + ? null + : txData.type.isMweb() + ? TransactionV2( + walletId: walletId, + blockHash: null, + hash: clTx.hashHex, + txid: clTx.txid, + height: null, + timestamp: DateTime.timestamp().millisecondsSinceEpoch ~/ 1000, + inputs: List.unmodifiable(tempInputs), + outputs: List.unmodifiable(tempOutputs), + version: clTx.version, + type: TransactionType.outgoing, + subType: TransactionSubType.mweb, + otherData: null, + ) + : TransactionV2( + walletId: walletId, + blockHash: null, + hash: clTx.hashHex, + txid: clTx.txid, + height: null, + timestamp: DateTime.timestamp().millisecondsSinceEpoch ~/ 1000, + inputs: List.unmodifiable(tempInputs), + outputs: List.unmodifiable(tempOutputs), + version: clTx.version, + type: + tempOutputs + .map((e) => e.walletOwns) + .fold(true, (p, e) => p &= e) && + txData.paynymAccountLite == null + ? TransactionType.sentToSelf + : TransactionType.outgoing, + subType: TransactionSubType.none, + otherData: null, + ), ); } @@ -1023,21 +1020,20 @@ mixin ElectrumXInterface } Future updateElectrumX() async { - final failovers = - nodeService - .failoverNodesFor(currency: cryptoCurrency) - .map( - (e) => ElectrumXNode( - address: e.host, - port: e.port, - name: e.name, - id: e.id, - useSSL: e.useSSL, - torEnabled: e.torEnabled, - clearnetEnabled: e.clearnetEnabled, - ), - ) - .toList(); + final failovers = nodeService + .failoverNodesFor(currency: cryptoCurrency) + .map( + (e) => ElectrumXNode( + address: e.host, + port: e.port, + name: e.name, + id: e.id, + useSSL: e.useSSL, + torEnabled: e.torEnabled, + clearnetEnabled: e.clearnetEnabled, + ), + ) + .toList(); final newNode = await _getCurrentElectrumXNode(); try { @@ -1118,10 +1114,12 @@ mixin ElectrumXInterface publicKey: keys.publicKey.data, type: addressData.addressType, derivationIndex: index + j, - derivationPath: - isViewOnly ? null : (DerivationPath()..value = derivePath), - subType: - chain == 0 ? AddressSubType.receiving : AddressSubType.change, + derivationPath: isViewOnly + ? null + : (DerivationPath()..value = derivePath), + subType: chain == 0 + ? AddressSubType.receiving + : AddressSubType.change, ); addressArray.add(address); @@ -1199,8 +1197,9 @@ mixin ElectrumXInterface publicKey: keys.publicKey.data, type: addressData.addressType, derivationIndex: index, - derivationPath: - isViewOnly ? null : (DerivationPath()..value = derivePath), + derivationPath: isViewOnly + ? null + : (DerivationPath()..value = derivePath), subType: chain == 0 ? AddressSubType.receiving : AddressSubType.change, ); @@ -1391,21 +1390,18 @@ mixin ElectrumXInterface numberOfBlocksFast: f, numberOfBlocksAverage: m, numberOfBlocksSlow: s, - fast: - Amount.fromDecimal( - fast, - fractionDigits: info.coin.fractionDigits, - ).raw, - medium: - Amount.fromDecimal( - medium, - fractionDigits: info.coin.fractionDigits, - ).raw, - slow: - Amount.fromDecimal( - slow, - fractionDigits: info.coin.fractionDigits, - ).raw, + fast: Amount.fromDecimal( + fast, + fractionDigits: info.coin.fractionDigits, + ).raw, + medium: Amount.fromDecimal( + medium, + fractionDigits: info.coin.fractionDigits, + ).raw, + slow: Amount.fromDecimal( + slow, + fractionDigits: info.coin.fractionDigits, + ).raw, ); Logging.instance.d("fetched fees: $feeObject"); @@ -1691,8 +1687,8 @@ mixin ElectrumXInterface await mainDB.updateOrPutAddresses(addressesToStore); if (this is PaynymInterface) { - final notificationAddress = - await (this as PaynymInterface).getMyNotificationAddress(); + final notificationAddress = await (this as PaynymInterface) + .getMyNotificationAddress(); await (this as BitcoinWallet).updateTransactions( overrideAddresses: [notificationAddress], @@ -1824,19 +1820,18 @@ mixin ElectrumXInterface Logging.instance.d("Sent txHash: $txHash"); txData = txData.copyWith( - usedUTXOs: - txData.usedUTXOs!.map((e) { - if (e is StandardInput) { - return StandardInput( - e.utxo.copyWith(used: true), - derivePathType: e.derivePathType, - ); - } else if (e is MwebInput) { - return MwebInput(e.utxo.copyWith(used: true)); - } else { - return e; - } - }).toList(), + usedUTXOs: txData.usedUTXOs!.map((e) { + if (e is StandardInput) { + return StandardInput( + e.utxo.copyWith(used: true), + derivePathType: e.derivePathType, + ); + } else if (e is MwebInput) { + return MwebInput(e.utxo.copyWith(used: true)); + } else { + return e; + } + }).toList(), // TODO revisit setting these both txHash: txHash, @@ -1870,8 +1865,8 @@ mixin ElectrumXInterface final balance = txData.type == TxType.mweb || txData.type == TxType.mwebPegOut - ? info.cachedBalanceSecondary - : info.cachedBalance; + ? info.cachedBalanceSecondary + : info.cachedBalance; final feeRateType = txData.feeRateType; final customSatsPerVByte = txData.satsPerVByte; final feeRateAmount = txData.feeRateAmount; @@ -2173,11 +2168,11 @@ mixin ElectrumXInterface receiveFutures.add( canBatch ? checkGapsBatched( - txCountBatchSize, - root, - type, - receiveChain, - ) + txCountBatchSize, + root, + type, + receiveChain, + ) : checkGapsLinearly(root, type, receiveChain), ); } @@ -2197,11 +2192,11 @@ mixin ElectrumXInterface changeFutures.add( canBatch ? checkGapsBatched( - txCountBatchSize, - root, - type, - changeChain, - ) + txCountBatchSize, + root, + type, + changeChain, + ) : checkGapsLinearly(root, type, changeChain), ); } diff --git a/lib/wallets/wallet/wallet_mixin_interfaces/mweb_interface.dart b/lib/wallets/wallet/wallet_mixin_interfaces/mweb_interface.dart index 82f45ff347..9cdb309421 100644 --- a/lib/wallets/wallet/wallet_mixin_interfaces/mweb_interface.dart +++ b/lib/wallets/wallet/wallet_mixin_interfaces/mweb_interface.dart @@ -212,9 +212,9 @@ mixin MwebInterface try { await db.transaction(() async { final prev = - await (db.select(db.mwebUtxos)..where( - (e) => e.outputId.equals(utxo.outputId), - )).getSingleOrNull(); + await (db.select(db.mwebUtxos) + ..where((e) => e.outputId.equals(utxo.outputId))) + .getSingleOrNull(); if (prev == null) { final newUtxo = MwebUtxosCompanion( @@ -254,10 +254,9 @@ mixin MwebInterface blockHash: null, // ?? hash: "", txid: fakeTxid, - timestamp: - utxo.height < 1 - ? DateTime.now().millisecondsSinceEpoch ~/ 1000 - : utxo.blockTime, + timestamp: utxo.height < 1 + ? DateTime.now().millisecondsSinceEpoch ~/ 1000 + : utxo.blockTime, height: utxo.height, inputs: [], outputs: [ @@ -272,13 +271,11 @@ mixin MwebInterface type: TransactionType.incoming, subType: TransactionSubType.mweb, otherData: jsonEncode({ - TxV2OdKeys.overrideFee: - Amount( - rawValue: - BigInt - .zero, // TODO fill in correctly when we have a real txid - fractionDigits: cryptoCurrency.fractionDigits, - ).toJsonString(), + TxV2OdKeys.overrideFee: Amount( + rawValue: BigInt + .zero, // TODO fill in correctly when we have a real txid + fractionDigits: cryptoCurrency.fractionDigits, + ).toJsonString(), }), ); @@ -359,19 +356,18 @@ mixin MwebInterface } Future checkMwebSpends() async { - final pending = - await mainDB.isar.transactionV2s - .where() - .walletIdEqualTo(walletId) - .filter() - .heightIsNull() - .and() - .blockHashIsNull() - .and() - .subTypeEqualTo(TransactionSubType.mweb) - .and() - .typeEqualTo(TransactionType.outgoing) - .findAll(); + final pending = await mainDB.isar.transactionV2s + .where() + .walletIdEqualTo(walletId) + .filter() + .heightIsNull() + .and() + .blockHashIsNull() + .and() + .subTypeEqualTo(TransactionSubType.mweb) + .and() + .typeEqualTo(TransactionType.outgoing) + .findAll(); Logging.instance.f(pending); @@ -391,11 +387,10 @@ mixin MwebInterface // dummy to show tx as confirmed. Need a better way to handle this as its kind of stupid, resulting in terrible UX final dummyHeight = await chainHeight; - TransactionV2? transaction = - await mainDB.isar.transactionV2s - .where() - .txidWalletIdEqualTo(tx.txid, walletId) - .findFirst(); + TransactionV2? transaction = await mainDB.isar.transactionV2s + .where() + .txidWalletIdEqualTo(tx.txid, walletId) + .findFirst(); if (transaction == null || transaction.height == null) { transaction = (transaction ?? tx).copyWith(height: dummyHeight); @@ -504,19 +499,18 @@ mixin MwebInterface Logging.instance.d("Sent txHash: $txHash"); txData = txData.copyWith( - usedUTXOs: - txData.usedUTXOs!.map((e) { - if (e is StandardInput) { - return StandardInput( - e.utxo.copyWith(used: true), - derivePathType: e.derivePathType, - ); - } else if (e is MwebInput) { - return MwebInput(e.utxo.copyWith(used: true)); - } else { - return e; - } - }).toList(), + usedUTXOs: txData.usedUTXOs!.map((e) { + if (e is StandardInput) { + return StandardInput( + e.utxo.copyWith(used: true), + derivePathType: e.derivePathType, + ); + } else if (e is MwebInput) { + return MwebInput(e.utxo.copyWith(used: true)); + } else { + return e; + } + }).toList(), txHash: txHash, txid: txHash, ); @@ -530,8 +524,10 @@ mixin MwebInterface ); // Update used mweb utxos as used in database - final usedMwebUtxos = - txData.usedUTXOs!.whereType().map((e) => e.utxo).toList(); + final usedMwebUtxos = txData.usedUTXOs! + .whereType() + .map((e) => e.utxo) + .toList(); Logging.instance.i("Used mweb inputs: $usedMwebUtxos"); @@ -557,10 +553,9 @@ mixin MwebInterface @override Future prepareSend({required TxData txData}) async { - final hasMwebOutputs = - txData.recipients! - .where((e) => e.addressType == AddressType.mweb) - .isNotEmpty; + final hasMwebOutputs = txData.recipients! + .where((e) => e.addressType == AddressType.mweb) + .isNotEmpty; if (hasMwebOutputs) { // assume pegin tx txData = txData.copyWith(type: TxType.mwebPegIn); @@ -571,10 +566,9 @@ mixin MwebInterface /// prepare mweb transaction where spending mweb outputs Future prepareSendMweb({required TxData txData}) async { - final hasMwebOutputs = - txData.recipients! - .where((e) => e.addressType == AddressType.mweb) - .isNotEmpty; + final hasMwebOutputs = txData.recipients! + .where((e) => e.addressType == AddressType.mweb) + .isNotEmpty; final type = hasMwebOutputs ? TxType.mweb : TxType.mwebPegOut; @@ -594,25 +588,23 @@ mixin MwebInterface try { final currentHeight = await chainHeight; - final spendableUtxos = - await mainDB.isar.utxos - .where() - .walletIdEqualTo(walletId) - .filter() - .isBlockedEqualTo(false) - .and() - .group((q) => q.usedEqualTo(false).or().usedIsNull()) - .and() - .valueGreaterThan(0) - .findAll(); + final spendableUtxos = await mainDB.isar.utxos + .where() + .walletIdEqualTo(walletId) + .filter() + .isBlockedEqualTo(false) + .and() + .group((q) => q.usedEqualTo(false).or().usedIsNull()) + .and() + .valueGreaterThan(0) + .findAll(); spendableUtxos.removeWhere( - (e) => - !e.isConfirmed( - currentHeight, - cryptoCurrency.minConfirms, - cryptoCurrency.minCoinbaseConfirms, - ), + (e) => !e.isConfirmed( + currentHeight, + cryptoCurrency.minConfirms, + cryptoCurrency.minCoinbaseConfirms, + ), ); if (spendableUtxos.isEmpty) { @@ -713,9 +705,9 @@ mixin MwebInterface try { final currentHeight = await chainHeight; final db = Drift.get(walletId); - final mwebUtxos = - await (db.select(db.mwebUtxos) - ..where((e) => e.used.equals(false))).get(); + final mwebUtxos = await (db.select( + db.mwebUtxos, + )..where((e) => e.used.equals(false))).get(); Amount satoshiBalanceTotal = Amount( rawValue: BigInt.zero, @@ -979,18 +971,17 @@ mixin MwebInterface ); BigInt maxBI(BigInt a, BigInt b) => a > b ? a : b; - final posUtxos = - utxos - .where( - (utxo) => processedTx.inputs.any( - (input) => - input.prevOut.hash.toHex == - Uint8List.fromList( - utxo.id.toUint8ListFromHex.reversed.toList(), - ).toHex, - ), - ) - .toList(); + final posUtxos = utxos + .where( + (utxo) => processedTx.inputs.any( + (input) => + input.prevOut.hash.toHex == + Uint8List.fromList( + utxo.id.toUint8ListFromHex.reversed.toList(), + ).toHex, + ), + ) + .toList(); final posOutputSum = processedTx.outputs.fold( BigInt.zero, diff --git a/lib/wallets/wallet/wallet_mixin_interfaces/ordinals_interface.dart b/lib/wallets/wallet/wallet_mixin_interfaces/ordinals_interface.dart index 686d1f90a9..37fa15c767 100644 --- a/lib/wallets/wallet/wallet_mixin_interfaces/ordinals_interface.dart +++ b/lib/wallets/wallet/wallet_mixin_interfaces/ordinals_interface.dart @@ -44,10 +44,9 @@ mixin OrdinalsInterface uniqueAddresses.cast(), ); - final ords = - inscriptions - .map((e) => Ordinal.fromInscriptionData(e, walletId)) - .toList(); + final ords = inscriptions + .map((e) => Ordinal.fromInscriptionData(e, walletId)) + .toList(); await mainDB.isar.writeTxn(() async { await mainDB.isar.ordinals diff --git a/lib/wallets/wallet/wallet_mixin_interfaces/paynym_interface.dart b/lib/wallets/wallet/wallet_mixin_interfaces/paynym_interface.dart index 0d993036d3..83f3d76cf6 100644 --- a/lib/wallets/wallet/wallet_mixin_interfaces/paynym_interface.dart +++ b/lib/wallets/wallet/wallet_mixin_interfaces/paynym_interface.dart @@ -95,29 +95,25 @@ mixin PaynymInterface }) async { final keys = await lookupKey(sender.toString()); - final address = - await mainDB - .getAddresses(walletId) - .filter() - .subTypeEqualTo(AddressSubType.paynymReceive) - .and() - .group((q) { - if (isSegwit) { - return q - .typeEqualTo(AddressType.p2sh) - .or() - .typeEqualTo(AddressType.p2wpkh); - } else { - return q.typeEqualTo(AddressType.p2pkh); - } - }) - .and() - .anyOf( - keys, - (q, String e) => q.otherDataEqualTo(e), - ) - .sortByDerivationIndexDesc() - .findFirst(); + final address = await mainDB + .getAddresses(walletId) + .filter() + .subTypeEqualTo(AddressSubType.paynymReceive) + .and() + .group((q) { + if (isSegwit) { + return q + .typeEqualTo(AddressType.p2sh) + .or() + .typeEqualTo(AddressType.p2wpkh); + } else { + return q.typeEqualTo(AddressType.p2pkh); + } + }) + .and() + .anyOf(keys, (q, String e) => q.otherDataEqualTo(e)) + .sortByDerivationIndexDesc() + .findFirst(); if (address == null) { final generatedAddress = await _generatePaynymReceivingAddress( @@ -126,12 +122,11 @@ mixin PaynymInterface generateSegwitAddress: isSegwit, ); - final existing = - await mainDB - .getAddresses(walletId) - .filter() - .valueEqualTo(generatedAddress.value) - .findFirst(); + final existing = await mainDB + .getAddresses(walletId) + .filter() + .valueEqualTo(generatedAddress.value) + .findFirst(); if (existing == null) { // Add that new address @@ -164,22 +159,20 @@ mixin PaynymInterface index: 0, ); - final addressString = - generateSegwitAddress - ? paymentAddress.getReceiveAddressP2WPKH() - : paymentAddress.getReceiveAddressP2PKH(); + final addressString = generateSegwitAddress + ? paymentAddress.getReceiveAddressP2WPKH() + : paymentAddress.getReceiveAddressP2PKH(); final address = Address( walletId: walletId, value: addressString, publicKey: [], derivationIndex: index, - derivationPath: - DerivationPath() - ..value = _receivingPaynymAddressDerivationPath( - index, - testnet: info.coin.network.isTestNet, - ), + derivationPath: DerivationPath() + ..value = _receivingPaynymAddressDerivationPath( + index, + testnet: info.coin.network.isTestNet, + ), type: generateSegwitAddress ? AddressType.p2wpkh : AddressType.p2pkh, subType: AddressSubType.paynymReceive, otherData: await storeCode(sender.toString()), @@ -203,22 +196,20 @@ mixin PaynymInterface index: index, ); - final addressString = - generateSegwitAddress - ? paymentAddress.getSendAddressP2WPKH() - : paymentAddress.getSendAddressP2PKH(); + final addressString = generateSegwitAddress + ? paymentAddress.getSendAddressP2WPKH() + : paymentAddress.getSendAddressP2PKH(); final address = Address( walletId: walletId, value: addressString, publicKey: [], derivationIndex: index, - derivationPath: - DerivationPath() - ..value = _sendPaynymAddressDerivationPath( - index, - testnet: info.coin.network.isTestNet, - ), + derivationPath: DerivationPath() + ..value = _sendPaynymAddressDerivationPath( + index, + testnet: info.coin.network.isTestNet, + ), type: AddressType.nonWallet, subType: AddressSubType.paynymSend, otherData: await storeCode(other.toString()), @@ -249,12 +240,11 @@ mixin PaynymInterface generateSegwitAddress: isSegwit, ); - final existing = - await mainDB - .getAddresses(walletId) - .filter() - .valueEqualTo(nextAddress.value) - .findFirst(); + final existing = await mainDB + .getAddresses(walletId) + .filter() + .valueEqualTo(nextAddress.value) + .findFirst(); if (existing == null) { // Add that new address @@ -404,19 +394,15 @@ mixin PaynymInterface for (int i = startIndex; i < maxCount; i++) { final keys = await lookupKey(pCode.toString()); - final address = - await mainDB - .getAddresses(walletId) - .filter() - .subTypeEqualTo(AddressSubType.paynymSend) - .and() - .anyOf( - keys, - (q, String e) => q.otherDataEqualTo(e), - ) - .and() - .derivationIndexEqualTo(i) - .findFirst(); + final address = await mainDB + .getAddresses(walletId) + .filter() + .subTypeEqualTo(AddressSubType.paynymSend) + .and() + .anyOf(keys, (q, String e) => q.otherDataEqualTo(e)) + .and() + .derivationIndexEqualTo(i) + .findFirst(); if (address != null) { final count = await fetchTxCount( @@ -527,10 +513,9 @@ mixin PaynymInterface } // gather required signing data - final inputsWithKeys = - (await addSigningKeys( - utxoObjectsToUse.map((e) => StandardInput(e)).toList(), - )).whereType().toList(); + final inputsWithKeys = (await addSigningKeys( + utxoObjectsToUse.map((e) => StandardInput(e)).toList(), + )).whereType().toList(); final vSizeForNoChange = BigInt.from( (await _createNotificationTx( @@ -826,8 +811,8 @@ mixin PaynymInterface clTx = clTx.addInput(input); } - final String notificationAddress = - targetPaymentCode.notificationAddressP2PKH(); + final String notificationAddress = targetPaymentCode + .notificationAddressP2PKH(); final address = coinlib.Address.fromString( normalizeAddress(notificationAddress), @@ -995,13 +980,12 @@ mixin PaynymInterface final myNotificationAddress = await getMyNotificationAddress(); - final txns = - await mainDB.isar.transactionV2s - .where() - .walletIdEqualTo(walletId) - .filter() - .subTypeEqualTo(TransactionSubType.bip47Notification) - .findAll(); + final txns = await mainDB.isar.transactionV2s + .where() + .walletIdEqualTo(walletId) + .filter() + .subTypeEqualTo(TransactionSubType.bip47Notification) + .findAll(); for (final tx in txns) { switch (tx.type) { @@ -1035,15 +1019,14 @@ mixin PaynymInterface case TransactionType.outgoing: for (final output in tx.outputs) { for (final outputAddress in output.addresses) { - final address = - await mainDB.isar.addresses - .where() - .walletIdEqualTo(walletId) - .filter() - .subTypeEqualTo(AddressSubType.paynymNotification) - .and() - .valueEqualTo(outputAddress) - .findFirst(); + final address = await mainDB.isar.addresses + .where() + .walletIdEqualTo(walletId) + .filter() + .subTypeEqualTo(AddressSubType.paynymNotification) + .and() + .valueEqualTo(outputAddress) + .findFirst(); if (address?.otherData != null) { final code = await paymentCodeStringByKey(address!.otherData!); @@ -1097,8 +1080,8 @@ mixin PaynymInterface final designatedInput = transaction.inputs.first; - final txPoint = - designatedInput.outpoint!.txid.toUint8ListFromHex.reversed.toList(); + final txPoint = designatedInput.outpoint!.txid.toUint8ListFromHex.reversed + .toList(); final txPointIndex = designatedInput.outpoint!.vout; final rev = Uint8List(txPoint.length + 4); @@ -1156,8 +1139,8 @@ mixin PaynymInterface final designatedInput = transaction.inputs.first; - final txPoint = - designatedInput.outpoint!.txid.toUint8ListFromHex.toList(); + final txPoint = designatedInput.outpoint!.txid.toUint8ListFromHex + .toList(); final txPointIndex = designatedInput.outpoint!.vout; final rev = Uint8List(txPoint.length + 4); @@ -1202,13 +1185,12 @@ mixin PaynymInterface Future> getAllPaymentCodesFromNotificationTransactions() async { - final txns = - await mainDB.isar.transactionV2s - .where() - .walletIdEqualTo(walletId) - .filter() - .subTypeEqualTo(TransactionSubType.bip47Notification) - .findAll(); + final txns = await mainDB.isar.transactionV2s + .where() + .walletIdEqualTo(walletId) + .filter() + .subTypeEqualTo(TransactionSubType.bip47Notification) + .findAll(); final List codes = []; @@ -1219,15 +1201,14 @@ mixin PaynymInterface for (final outputAddress in output.addresses.where( (e) => e.isNotEmpty, )) { - final address = - await mainDB.isar.addresses - .where() - .walletIdEqualTo(walletId) - .filter() - .subTypeEqualTo(AddressSubType.paynymNotification) - .and() - .valueEqualTo(outputAddress) - .findFirst(); + final address = await mainDB.isar.addresses + .where() + .walletIdEqualTo(walletId) + .filter() + .subTypeEqualTo(AddressSubType.paynymNotification) + .and() + .valueEqualTo(outputAddress) + .findFirst(); if (address?.otherData != null) { final codeString = await paymentCodeStringByKey( @@ -1273,15 +1254,14 @@ mixin PaynymInterface Future checkForNotificationTransactionsTo( Set otherCodeStrings, ) async { - final sentNotificationTransactions = - await mainDB.isar.transactionV2s - .where() - .walletIdEqualTo(walletId) - .filter() - .subTypeEqualTo(TransactionSubType.bip47Notification) - .and() - .typeEqualTo(TransactionType.outgoing) - .findAll(); + final sentNotificationTransactions = await mainDB.isar.transactionV2s + .where() + .walletIdEqualTo(walletId) + .filter() + .subTypeEqualTo(TransactionSubType.bip47Notification) + .and() + .typeEqualTo(TransactionType.outgoing) + .findAll(); final List codes = []; for (final codeString in otherCodeStrings) { @@ -1510,17 +1490,16 @@ mixin PaynymInterface } Future
getMyNotificationAddress() async { - final storedAddress = - await mainDB - .getAddresses(walletId) - .filter() - .subTypeEqualTo(AddressSubType.paynymNotification) - .and() - .typeEqualTo(AddressType.p2pkh) - .and() - .not() - .typeEqualTo(AddressType.nonWallet) - .findFirst(); + final storedAddress = await mainDB + .getAddresses(walletId) + .filter() + .subTypeEqualTo(AddressSubType.paynymNotification) + .and() + .typeEqualTo(AddressType.p2pkh) + .and() + .not() + .typeEqualTo(AddressType.nonWallet) + .findFirst(); if (storedAddress != null) { return storedAddress; @@ -1539,19 +1518,20 @@ mixin PaynymInterface pubkey: paymentCode.notificationPublicKey(), ); - final addressString = - btc_dart.P2PKH(data: data, network: networkType).data.address!; + final addressString = btc_dart + .P2PKH(data: data, network: networkType) + .data + .address!; Address address = Address( walletId: walletId, value: addressString, publicKey: paymentCode.getPubKey(), derivationIndex: 0, - derivationPath: - DerivationPath() - ..value = _notificationDerivationPath( - testnet: info.coin.network.isTestNet, - ), + derivationPath: DerivationPath() + ..value = _notificationDerivationPath( + testnet: info.coin.network.isTestNet, + ), type: AddressType.p2pkh, subType: AddressSubType.paynymNotification, otherData: await storeCode(paymentCode.toString()), @@ -1562,17 +1542,16 @@ mixin PaynymInterface // beginning to see if there already was notification address. This would // lead to a Unique Index violation error await mainDB.isar.writeTxn(() async { - final storedAddress = - await mainDB - .getAddresses(walletId) - .filter() - .subTypeEqualTo(AddressSubType.paynymNotification) - .and() - .typeEqualTo(AddressType.p2pkh) - .and() - .not() - .typeEqualTo(AddressType.nonWallet) - .findFirst(); + final storedAddress = await mainDB + .getAddresses(walletId) + .filter() + .subTypeEqualTo(AddressSubType.paynymNotification) + .and() + .typeEqualTo(AddressType.p2pkh) + .and() + .not() + .typeEqualTo(AddressType.nonWallet) + .findFirst(); if (storedAddress == null) { await mainDB.isar.addresses.put(address); @@ -1650,21 +1629,19 @@ mixin PaynymInterface overrideAddresses ?? await fetchAddressesForElectrumXScan(); // Separate receiving and change addresses. - final Set receivingAddresses = - allAddressesOld - .where( - (e) => - e.subType == AddressSubType.receiving || - e.subType == AddressSubType.paynymNotification || - e.subType == AddressSubType.paynymReceive, - ) - .map((e) => e.value) - .toSet(); - final Set changeAddresses = - allAddressesOld - .where((e) => e.subType == AddressSubType.change) - .map((e) => e.value) - .toSet(); + final Set receivingAddresses = allAddressesOld + .where( + (e) => + e.subType == AddressSubType.receiving || + e.subType == AddressSubType.paynymNotification || + e.subType == AddressSubType.paynymReceive, + ) + .map((e) => e.value) + .toSet(); + final Set changeAddresses = allAddressesOld + .where((e) => e.subType == AddressSubType.change) + .map((e) => e.value) + .toSet(); // Remove duplicates. final allAddressesSet = {...receivingAddresses, ...changeAddresses}; @@ -1674,16 +1651,15 @@ mixin PaynymInterface allAddressesSet, ); - final unconfirmedTxs = - await mainDB.isar.transactionV2s - .where() - .walletIdEqualTo(walletId) - .filter() - .heightIsNull() - .or() - .heightEqualTo(0) - .txidProperty() - .findAll(); + final unconfirmedTxs = await mainDB.isar.transactionV2s + .where() + .walletIdEqualTo(walletId) + .filter() + .heightIsNull() + .or() + .heightEqualTo(0) + .txidProperty() + .findAll(); allTxHashes.addAll(unconfirmedTxs.map((e) => {"tx_hash": e})); @@ -1715,13 +1691,12 @@ mixin PaynymInterface "'message': 'No such mempool or blockchain transaction", )) { await mainDB.isar.writeTxn( - () async => - await mainDB.isar.transactionV2s - .where() - .walletIdEqualTo(walletId) - .filter() - .txidEqualTo(txid) - .deleteFirst(), + () async => await mainDB.isar.transactionV2s + .where() + .walletIdEqualTo(walletId) + .filter() + .txidEqualTo(txid) + .deleteFirst(), ); continue; } else { diff --git a/lib/widgets/animated_widgets/rotating_arrows.dart b/lib/widgets/animated_widgets/rotating_arrows.dart index 3da54f63aa..b253610206 100644 --- a/lib/widgets/animated_widgets/rotating_arrows.dart +++ b/lib/widgets/animated_widgets/rotating_arrows.dart @@ -76,12 +76,14 @@ class _RotatingArrowsState extends State values: [ ValueDelegate.color( const ["**"], - value: widget.color ?? + value: + widget.color ?? Theme.of(context).extension()!.accentColorDark, ), ValueDelegate.strokeColor( const ["**"], - value: widget.color ?? + value: + widget.color ?? Theme.of(context).extension()!.accentColorDark, ), ], diff --git a/lib/widgets/custom_buttons/app_bar_icon_button.dart b/lib/widgets/custom_buttons/app_bar_icon_button.dart index 5147f132d7..3d80a22fbc 100644 --- a/lib/widgets/custom_buttons/app_bar_icon_button.dart +++ b/lib/widgets/custom_buttons/app_bar_icon_button.dart @@ -84,18 +84,16 @@ class AppBarBackButton extends StatelessWidget { final isDesktop = Util.isDesktop; return Padding( padding: isDesktop - ? const EdgeInsets.symmetric( - vertical: 20, - horizontal: 24, - ) + ? const EdgeInsets.symmetric(vertical: 20, horizontal: 24) : const EdgeInsets.all(10), child: AppBarIconButton( semanticsLabel: semanticsLabel, - size: size ?? + size: + size ?? (isDesktop ? isCompact - ? 42 - : 56 + ? 42 + : 56 : 32), color: isDesktop ? Theme.of(context).extension()!.textFieldDefaultBG diff --git a/lib/widgets/custom_buttons/paynym_follow_toggle_button.dart b/lib/widgets/custom_buttons/paynym_follow_toggle_button.dart index a2c4db1003..989c212625 100644 --- a/lib/widgets/custom_buttons/paynym_follow_toggle_button.dart +++ b/lib/widgets/custom_buttons/paynym_follow_toggle_button.dart @@ -29,11 +29,7 @@ import '../desktop/primary_button.dart'; import '../desktop/secondary_button.dart'; import '../loading_indicator.dart'; -enum PaynymFollowToggleButtonStyle { - primary, - detailsPopup, - detailsDesktop, -} +enum PaynymFollowToggleButtonStyle { primary, detailsPopup, detailsDesktop } const kDisableFollowing = true; @@ -63,12 +59,8 @@ class _PaynymFollowToggleButtonState unawaited( showDialog( context: context, - builder: (context) => const LoadingIndicator( - width: 200, - ), - ).then( - (_) => loadingPopped = true, - ), + builder: (context) => const LoadingIndicator(width: 200), + ).then((_) => loadingPopped = true), ); // get wallet to access paynym calls @@ -81,29 +73,35 @@ class _PaynymFollowToggleButtonState final myPCode = await wallet.getPaymentCode(isSegwit: false); - PaynymResponse token = - await ref.read(paynymAPIProvider).token(myPCode.toString()); + PaynymResponse token = await ref + .read(paynymAPIProvider) + .token(myPCode.toString()); // sign token with notification private key String signature = await wallet.signStringWithNotificationKey(token.value!); - var result = await ref.read(paynymAPIProvider).follow( + var result = await ref + .read(paynymAPIProvider) + .follow( token.value!, signature, followedAccount.value!.nonSegwitPaymentCode.code, ); int i = 0; - for (; - i < 10 && - result.statusCode == 401; //"401 Unauthorized - Bad signature"; - i++) { + for ( + ; + i < 10 && result.statusCode == 401; //"401 Unauthorized - Bad signature"; + i++ + ) { token = await ref.read(paynymAPIProvider).token(myPCode.toString()); // sign token with notification private key signature = await wallet.signStringWithNotificationKey(token.value!); - result = await ref.read(paynymAPIProvider).follow( + result = await ref + .read(paynymAPIProvider) + .follow( token.value!, signature, followedAccount.value!.nonSegwitPaymentCode.code, @@ -172,12 +170,8 @@ class _PaynymFollowToggleButtonState unawaited( showDialog( context: context, - builder: (context) => const LoadingIndicator( - width: 200, - ), - ).then( - (_) => loadingPopped = true, - ), + builder: (context) => const LoadingIndicator(width: 200), + ).then((_) => loadingPopped = true), ); final wallet = @@ -189,29 +183,35 @@ class _PaynymFollowToggleButtonState final myPCode = await wallet.getPaymentCode(isSegwit: false); - PaynymResponse token = - await ref.read(paynymAPIProvider).token(myPCode.toString()); + PaynymResponse token = await ref + .read(paynymAPIProvider) + .token(myPCode.toString()); // sign token with notification private key String signature = await wallet.signStringWithNotificationKey(token.value!); - var result = await ref.read(paynymAPIProvider).unfollow( + var result = await ref + .read(paynymAPIProvider) + .unfollow( token.value!, signature, followedAccount.value!.nonSegwitPaymentCode.code, ); int i = 0; - for (; - i < 10 && - result.statusCode == 401; //"401 Unauthorized - Bad signature"; - i++) { + for ( + ; + i < 10 && result.statusCode == 401; //"401 Unauthorized - Bad signature"; + i++ + ) { token = await ref.read(paynymAPIProvider).token(myPCode.toString()); // sign token with notification private key signature = await wallet.signStringWithNotificationKey(token.value!); - result = await ref.read(paynymAPIProvider).unfollow( + result = await ref + .read(paynymAPIProvider) + .unfollow( token.value!, signature, followedAccount.value!.nonSegwitPaymentCode.code, @@ -239,8 +239,9 @@ class _PaynymFollowToggleButtonState final myAccount = ref.read(myPaynymAccountStateProvider.state).state!; - myAccount.following - .removeWhere((e) => e.nymId == followedAccount.value!.nymID); + myAccount.following.removeWhere( + (e) => e.nymId == followedAccount.value!.nymID, + ); ref.read(myPaynymAccountStateProvider.state).state = myAccount.copyWith(); @@ -314,8 +315,9 @@ class _PaynymFollowToggleButtonState isFollowing ? Assets.svg.userMinus : Assets.svg.userPlus, width: 16, height: 16, - color: - Theme.of(context).extension()!.buttonTextSecondary, + color: Theme.of( + context, + ).extension()!.buttonTextSecondary, ), onPressed: kDisableFollowing ? null : _onPressed, ); @@ -328,8 +330,9 @@ class _PaynymFollowToggleButtonState isFollowing ? Assets.svg.userMinus : Assets.svg.userPlus, width: 16, height: 16, - color: - Theme.of(context).extension()!.buttonTextSecondary, + color: Theme.of( + context, + ).extension()!.buttonTextSecondary, ), iconSpacing: 6, onPressed: kDisableFollowing ? null : _onPressed, diff --git a/lib/widgets/date_picker/date_picker.dart b/lib/widgets/date_picker/date_picker.dart index 328e2c0960..260fafebde 100644 --- a/lib/widgets/date_picker/date_picker.dart +++ b/lib/widgets/date_picker/date_picker.dart @@ -34,16 +34,14 @@ Future showSWDatePicker(BuildContext context) async { firstDate: DateTime(2007), lastDate: now, currentDate: now, - buttonPadding: const EdgeInsets.only( - right: 16, - ), + buttonPadding: const EdgeInsets.only(right: 16), centerAlignModePicker: true, - selectedDayHighlightColor: - Theme.of(context).extension()!.accentColorDark, - daySplashColor: Theme.of(context) - .extension()! - .accentColorDark - .withOpacity(0.6), + selectedDayHighlightColor: Theme.of( + context, + ).extension()!.accentColorDark, + daySplashColor: Theme.of( + context, + ).extension()!.accentColorDark.withOpacity(0.6), ), ); return date?.first; @@ -63,10 +61,7 @@ Future?> _showDatePickerDialog({ TransitionBuilder? builder, }) { final dialog = Dialog( - insetPadding: const EdgeInsets.symmetric( - horizontal: 16, - vertical: 16, - ), + insetPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 16), backgroundColor: Theme.of(context).extension()!.popupBG, surfaceTintColor: Colors.transparent, shadowColor: Colors.transparent, diff --git a/lib/widgets/desktop/primary_button.dart b/lib/widgets/desktop/primary_button.dart index c2f1269984..596cc236da 100644 --- a/lib/widgets/desktop/primary_button.dart +++ b/lib/widgets/desktop/primary_button.dart @@ -54,9 +54,9 @@ class PrimaryButton extends StatelessWidget { return STextStyles.desktopTextExtraExtraSmall(context).copyWith( color: enabled ? Theme.of(context).extension()!.buttonTextPrimary - : Theme.of(context) - .extension()! - .buttonTextPrimaryDisabled, + : Theme.of( + context, + ).extension()!.buttonTextPrimaryDisabled, ); case ButtonHeight.m: @@ -64,9 +64,9 @@ class PrimaryButton extends StatelessWidget { return STextStyles.desktopTextExtraSmall(context).copyWith( color: enabled ? Theme.of(context).extension()!.buttonTextPrimary - : Theme.of(context) - .extension()! - .buttonTextPrimaryDisabled, + : Theme.of( + context, + ).extension()!.buttonTextPrimaryDisabled, ); case ButtonHeight.xl: @@ -81,17 +81,17 @@ class PrimaryButton extends StatelessWidget { fontSize: 10, color: enabled ? Theme.of(context).extension()!.buttonTextPrimary - : Theme.of(context) - .extension()! - .buttonTextPrimaryDisabled, + : Theme.of( + context, + ).extension()!.buttonTextPrimaryDisabled, ); } return STextStyles.button(context).copyWith( color: enabled ? Theme.of(context).extension()!.buttonTextPrimary - : Theme.of(context) - .extension()! - .buttonTextPrimaryDisabled, + : Theme.of( + context, + ).extension()!.buttonTextPrimaryDisabled, ); } } @@ -145,34 +145,26 @@ class PrimaryButton extends StatelessWidget { textButton: TextButton( onPressed: enabled ? onPressed : null, style: enabled - ? Theme.of(context) - .extension()! - .getPrimaryEnabledButtonStyle(context) + ? Theme.of( + context, + ).extension()!.getPrimaryEnabledButtonStyle(context) : Theme.of(context) - .extension()! - .getPrimaryDisabledButtonStyle(context), + .extension()! + .getPrimaryDisabledButtonStyle(context), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ if (icon != null) icon!, - if (icon != null && label != null) - SizedBox( - width: iconSpacing, - ), + if (icon != null && label != null) SizedBox(width: iconSpacing), if (label != null) Column( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ - Text( - label!, - style: getStyle(isDesktop, context), - ), + Text(label!, style: getStyle(isDesktop, context)), if (buttonHeight != null && buttonHeight == ButtonHeight.s) - const SizedBox( - height: 2, - ), + const SizedBox(height: 2), ], ), ], diff --git a/lib/widgets/detail_item.dart b/lib/widgets/detail_item.dart index 91a662538d..59d11e1e7c 100644 --- a/lib/widgets/detail_item.dart +++ b/lib/widgets/detail_item.dart @@ -51,14 +51,12 @@ class DetailItem extends StatelessWidget { horizontal: horizontal, borderColor: borderColor, expandDetail: expandDetail, - title: - disableSelectableText - ? Text(title, style: STextStyles.itemSubtitle(context)) - : SelectableText(title, style: STextStyles.itemSubtitle(context)), - detail: - disableSelectableText - ? Text(_detail, style: detailStyle) - : SelectableText(_detail, style: detailStyle), + title: disableSelectableText + ? Text(title, style: STextStyles.itemSubtitle(context)) + : SelectableText(title, style: STextStyles.itemSubtitle(context)), + detail: disableSelectableText + ? Text(_detail, style: detailStyle) + : SelectableText(_detail, style: detailStyle), ); } } @@ -85,48 +83,45 @@ class DetailItemBase extends StatelessWidget { Widget build(BuildContext context) { return ConditionalParent( condition: !Util.isDesktop || borderColor != null, - builder: - (child) => RoundedWhiteContainer( - padding: - Util.isDesktop - ? const EdgeInsets.all(16) - : const EdgeInsets.all(12), - borderColor: borderColor, - child: child, - ), + builder: (child) => RoundedWhiteContainer( + padding: Util.isDesktop + ? const EdgeInsets.all(16) + : const EdgeInsets.all(12), + borderColor: borderColor, + child: child, + ), child: ConditionalParent( condition: Util.isDesktop && borderColor == null, - builder: - (child) => Padding(padding: const EdgeInsets.all(16), child: child), - child: - horizontal - ? Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - title, - if (expandDetail) const SizedBox(width: 16), - ConditionalParent( - condition: expandDetail, - builder: (child) => Expanded(child: child), - child: detail, - ), - ], - ) - : Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [title, button ?? Container()], - ), - const SizedBox(height: 5), - ConditionalParent( - condition: expandDetail, - builder: (child) => Expanded(child: child), - child: detail, - ), - ], - ), + builder: (child) => + Padding(padding: const EdgeInsets.all(16), child: child), + child: horizontal + ? Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + title, + if (expandDetail) const SizedBox(width: 16), + ConditionalParent( + condition: expandDetail, + builder: (child) => Expanded(child: child), + child: detail, + ), + ], + ) + : Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [title, button ?? Container()], + ), + const SizedBox(height: 5), + ConditionalParent( + condition: expandDetail, + builder: (child) => Expanded(child: child), + child: detail, + ), + ], + ), ), ); } diff --git a/lib/widgets/dialogs/s_dialog.dart b/lib/widgets/dialogs/s_dialog.dart index a6b32148c4..b90b1051a2 100644 --- a/lib/widgets/dialogs/s_dialog.dart +++ b/lib/widgets/dialogs/s_dialog.dart @@ -29,7 +29,8 @@ class SDialog extends StatelessWidget { return Padding( padding: margin ?? EdgeInsets.all(Util.isDesktop ? 32 : 16), child: Column( - mainAxisAlignment: mainAxisAlignment ?? + mainAxisAlignment: + mainAxisAlignment ?? (Util.isDesktop ? MainAxisAlignment.center : MainAxisAlignment.end), crossAxisAlignment: crossAxisAlignment ?? CrossAxisAlignment.center, children: [ @@ -38,21 +39,15 @@ class SDialog extends StatelessWidget { borderRadius: BorderRadius.circular(20), child: Container( decoration: BoxDecoration( - color: background ?? + color: + background ?? Theme.of(context).extension()!.popupBG, - borderRadius: BorderRadius.circular( - 20, - ), + borderRadius: BorderRadius.circular(20), ), child: ConditionalParent( condition: contentCanScroll, - builder: (child) => SingleChildScrollView( - child: child, - ), - child: Padding( - padding: padding, - child: child, - ), + builder: (child) => SingleChildScrollView(child: child), + child: Padding(padding: padding, child: child), ), ), ), diff --git a/lib/widgets/icon_widgets/eth_token_icon.dart b/lib/widgets/icon_widgets/eth_token_icon.dart index 0b0104fbf9..285061bc48 100644 --- a/lib/widgets/icon_widgets/eth_token_icon.dart +++ b/lib/widgets/icon_widgets/eth_token_icon.dart @@ -41,18 +41,14 @@ class _EthTokenIconState extends ConsumerState { super.initState(); ExchangeDataLoadingService.instance.isar.then((isar) async { - final currency = - await isar.currencies - .where() - .exchangeNameEqualTo(ChangeNowExchange.exchangeName) - .filter() - .tokenContractEqualTo( - widget.contractAddress, - caseSensitive: false, - ) - .and() - .imageIsNotEmpty() - .findFirst(); + final currency = await isar.currencies + .where() + .exchangeNameEqualTo(ChangeNowExchange.exchangeName) + .filter() + .tokenContractEqualTo(widget.contractAddress, caseSensitive: false) + .and() + .imageIsNotEmpty() + .findFirst(); if (mounted) { WidgetsBinding.instance.addPostFrameCallback((_) { diff --git a/lib/widgets/node_card.dart b/lib/widgets/node_card.dart index 85f16a1354..e3e4130f69 100644 --- a/lib/widgets/node_card.dart +++ b/lib/widgets/node_card.dart @@ -59,8 +59,10 @@ class _NodeCardState extends ConsumerState { bool _advancedIsExpanded = false; Future _notifyWalletsOfUpdatedNode(WidgetRef ref) async { - final wallets = - ref.read(pWallets).wallets.where((e) => e.info.coin == widget.coin); + final wallets = ref + .read(pWallets) + .wallets + .where((e) => e.info.coin == widget.coin); final prefs = ref.read(prefsChangeNotifierProvider); switch (prefs.syncType) { @@ -100,12 +102,14 @@ class _NodeCardState extends ConsumerState { @override Widget build(BuildContext context) { final node = ref.watch( - nodeServiceChangeNotifierProvider - .select((value) => value.getPrimaryNodeFor(currency: widget.coin)), + nodeServiceChangeNotifierProvider.select( + (value) => value.getPrimaryNodeFor(currency: widget.coin), + ), ); final _node = ref.watch( - nodeServiceChangeNotifierProvider - .select((value) => value.getNodeById(id: nodeId)), + nodeServiceChangeNotifierProvider.select( + (value) => value.getNodeById(id: nodeId), + ), )!; if (node?.name == _node.name) { @@ -155,14 +159,10 @@ class _NodeCardState extends ConsumerState { }, header: child, body: Padding( - padding: const EdgeInsets.only( - bottom: 24, - ), + padding: const EdgeInsets.only(bottom: 24), child: Row( children: [ - const SizedBox( - width: 66, - ), + const SizedBox(width: 66), CustomTextButton( text: "Connect", enabled: _status == "Disconnected", @@ -223,9 +223,7 @@ class _NodeCardState extends ConsumerState { } }, ), - const SizedBox( - width: 48, - ), + const SizedBox(width: 48), CustomTextButton( text: "Details", onTap: () { @@ -253,13 +251,13 @@ class _NodeCardState extends ConsumerState { height: isDesktop ? 40 : 24, decoration: BoxDecoration( color: _node.id.startsWith(DefaultNodes.defaultNodeIdPrefix) - ? Theme.of(context) - .extension()! - .buttonBackSecondary + ? Theme.of( + context, + ).extension()!.buttonBackSecondary : Theme.of(context) - .extension()! - .infoItemIcons - .withOpacity(0.2), + .extension()! + .infoItemIcons + .withOpacity(0.2), borderRadius: BorderRadius.circular(100), ), child: Center( @@ -269,32 +267,22 @@ class _NodeCardState extends ConsumerState { width: isDesktop ? 20 : 14, color: _node.id.startsWith(DefaultNodes.defaultNodeIdPrefix) - ? Theme.of(context) - .extension()! - .accentColorDark - : Theme.of(context) - .extension()! - .infoItemIcons, + ? Theme.of( + context, + ).extension()!.accentColorDark + : Theme.of( + context, + ).extension()!.infoItemIcons, ), ), ), - const SizedBox( - width: 12, - ), + const SizedBox(width: 12), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - _node.name, - style: STextStyles.titleBold12(context), - ), - const SizedBox( - height: 2, - ), - Text( - _status, - style: STextStyles.label(context), - ), + Text(_node.name, style: STextStyles.titleBold12(context)), + const SizedBox(height: 2), + Text(_status, style: STextStyles.label(context)), ], ), const Spacer(), @@ -302,12 +290,12 @@ class _NodeCardState extends ConsumerState { SvgPicture.asset( Assets.svg.network, color: _status == "Connected" - ? Theme.of(context) - .extension()! - .accentColorGreen - : Theme.of(context) - .extension()! - .buttonBackSecondary, + ? Theme.of( + context, + ).extension()!.accentColorGreen + : Theme.of( + context, + ).extension()!.buttonBackSecondary, width: 20, height: 20, ), @@ -318,9 +306,9 @@ class _NodeCardState extends ConsumerState { : Assets.svg.chevronDown, width: 12, height: 6, - color: Theme.of(context) - .extension()! - .textSubtitle1, + color: Theme.of( + context, + ).extension()!.textSubtitle1, ), ], ), diff --git a/lib/widgets/node_options_sheet.dart b/lib/widgets/node_options_sheet.dart index 511be23958..69dc849697 100644 --- a/lib/widgets/node_options_sheet.dart +++ b/lib/widgets/node_options_sheet.dart @@ -44,8 +44,10 @@ class NodeOptionsSheet extends ConsumerWidget { final String popBackToRoute; Future _notifyWalletsOfUpdatedNode(WidgetRef ref) async { - final wallets = - ref.read(pWallets).wallets.where((e) => e.info.coin == coin); + final wallets = ref + .read(pWallets) + .wallets + .where((e) => e.info.coin == coin); final prefs = ref.read(prefsChangeNotifierProvider); switch (prefs.syncType) { @@ -80,11 +82,13 @@ class NodeOptionsSheet extends ConsumerWidget { Widget build(BuildContext context, WidgetRef ref) { final maxHeight = MediaQuery.of(context).size.height * 0.60; final node = ref.watch( - nodeServiceChangeNotifierProvider - .select((value) => value.getNodeById(id: nodeId)), + nodeServiceChangeNotifierProvider.select( + (value) => value.getNodeById(id: nodeId), + ), )!; - final status = ref + final status = + ref .watch( nodeServiceChangeNotifierProvider.select( (value) => value.getPrimaryNodeFor(currency: coin), @@ -98,9 +102,7 @@ class NodeOptionsSheet extends ConsumerWidget { return Container( decoration: BoxDecoration( color: Theme.of(context).extension()!.popupBG, - borderRadius: const BorderRadius.vertical( - top: Radius.circular(20), - ), + borderRadius: const BorderRadius.vertical(top: Radius.circular(20)), ), child: LimitedBox( maxHeight: maxHeight, @@ -119,9 +121,9 @@ class NodeOptionsSheet extends ConsumerWidget { Center( child: Container( decoration: BoxDecoration( - color: Theme.of(context) - .extension()! - .textFieldDefaultBG, + color: Theme.of( + context, + ).extension()!.textFieldDefaultBG, borderRadius: BorderRadius.circular( Constants.size.circularBorderRadius, ), @@ -130,9 +132,7 @@ class NodeOptionsSheet extends ConsumerWidget { height: 4, ), ), - const SizedBox( - height: 36, - ), + const SizedBox(height: 36), Text( "Node options", style: STextStyles.pageTitleH2(context), @@ -146,15 +146,17 @@ class NodeOptionsSheet extends ConsumerWidget { width: 32, height: 32, decoration: BoxDecoration( - color: node.id - .startsWith(DefaultNodes.defaultNodeIdPrefix) - ? Theme.of(context) - .extension()! - .textSubtitle4 + color: + node.id.startsWith( + DefaultNodes.defaultNodeIdPrefix, + ) + ? Theme.of( + context, + ).extension()!.textSubtitle4 : Theme.of(context) - .extension()! - .infoItemIcons - .withOpacity(0.2), + .extension()! + .infoItemIcons + .withOpacity(0.2), borderRadius: BorderRadius.circular(100), ), child: Center( @@ -162,21 +164,20 @@ class NodeOptionsSheet extends ConsumerWidget { Assets.svg.node, height: 15, width: 19, - color: node.id.startsWith( - DefaultNodes.defaultNodeIdPrefix, - ) - ? Theme.of(context) - .extension()! - .accentColorDark - : Theme.of(context) - .extension()! - .infoItemIcons, + color: + node.id.startsWith( + DefaultNodes.defaultNodeIdPrefix, + ) + ? Theme.of( + context, + ).extension()!.accentColorDark + : Theme.of( + context, + ).extension()!.infoItemIcons, ), ), ), - const SizedBox( - width: 12, - ), + const SizedBox(width: 12), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -184,25 +185,20 @@ class NodeOptionsSheet extends ConsumerWidget { node.name, style: STextStyles.titleBold12(context), ), - const SizedBox( - height: 2, - ), - Text( - status, - style: STextStyles.label(context), - ), + const SizedBox(height: 2), + Text(status, style: STextStyles.label(context)), ], ), const Spacer(), SvgPicture.asset( Assets.svg.network, color: status == "Connected" - ? Theme.of(context) - .extension()! - .accentColorGreen - : Theme.of(context) - .extension()! - .buttonBackSecondary, + ? Theme.of( + context, + ).extension()!.accentColorGreen + : Theme.of( + context, + ).extension()!.buttonBackSecondary, width: 18, ), ], @@ -220,36 +216,30 @@ class NodeOptionsSheet extends ConsumerWidget { Navigator.pop(context); Navigator.of(context).pushNamed( NodeDetailsView.routeName, - arguments: Tuple3( - coin, - node.id, - popBackToRoute, - ), + arguments: Tuple3(coin, node.id, popBackToRoute), ); }, child: Text( "Details", style: STextStyles.button(context).copyWith( - color: Theme.of(context) - .extension()! - .accentColorDark, + color: Theme.of( + context, + ).extension()!.accentColorDark, ), ), ), ), // if (!node.id.startsWith("default")) - const SizedBox( - width: 12, - ), + const SizedBox(width: 12), Expanded( child: TextButton( style: status == "Connected" ? Theme.of(context) - .extension()! - .getPrimaryDisabledButtonStyle(context) + .extension()! + .getPrimaryDisabledButtonStyle(context) : Theme.of(context) - .extension()! - .getPrimaryEnabledButtonStyle(context), + .extension()! + .getPrimaryEnabledButtonStyle(context), onPressed: status == "Connected" ? null : () async { @@ -306,9 +296,7 @@ class NodeOptionsSheet extends ConsumerWidget { ), ], ), - const SizedBox( - height: 24, - ), + const SizedBox(height: 24), ], ), ), diff --git a/lib/widgets/qr_scanner.dart b/lib/widgets/qr_scanner.dart index 66941ac9d3..1b805333bf 100644 --- a/lib/widgets/qr_scanner.dart +++ b/lib/widgets/qr_scanner.dart @@ -17,8 +17,9 @@ class QrScanner extends ConsumerWidget { child: Scaffold( backgroundColor: Theme.of(context).extension()!.background, appBar: AppBar( - backgroundColor: - Theme.of(context).extension()!.backgroundAppBar, + backgroundColor: Theme.of( + context, + ).extension()!.backgroundAppBar, leading: const AppBarBackButton(), title: Text("Scan QR code", style: STextStyles.navBarTitle(context)), ), diff --git a/lib/widgets/stack_dialog.dart b/lib/widgets/stack_dialog.dart index 2c56aa7c03..c2d5a788e4 100644 --- a/lib/widgets/stack_dialog.dart +++ b/lib/widgets/stack_dialog.dart @@ -37,10 +37,9 @@ class StackDialogBase extends StatelessWidget { bottom: 16 + keyboardPaddingAmount, ), child: Column( - mainAxisAlignment: - !Util.isDesktop - ? MainAxisAlignment.end - : MainAxisAlignment.center, + mainAxisAlignment: !Util.isDesktop + ? MainAxisAlignment.end + : MainAxisAlignment.center, children: [ Flexible( child: SingleChildScrollView( @@ -48,8 +47,9 @@ class StackDialogBase extends StatelessWidget { borderRadius: BorderRadius.circular(20), child: Container( decoration: BoxDecoration( - color: - Theme.of(context).extension()!.popupBG, + color: Theme.of( + context, + ).extension()!.popupBG, borderRadius: BorderRadius.circular(20), ), child: Padding(padding: padding, child: child), @@ -199,26 +199,22 @@ class StackOkDialog extends StatelessWidget { const SizedBox(width: 8), Expanded( child: TextButton( - onPressed: - !Util.isDesktop - ? () { - Navigator.of(context).pop(); - onOkPressed?.call("OK"); + onPressed: !Util.isDesktop + ? () { + Navigator.of(context).pop(); + onOkPressed?.call("OK"); + } + : () { + if (desktopPopRootNavigator) { + Navigator.of(context, rootNavigator: true).pop(); + } else { + int count = 0; + Navigator.of( + context, + ).popUntil((_) => count++ >= 2); + // onOkPressed?.call("OK"); } - : () { - if (desktopPopRootNavigator) { - Navigator.of( - context, - rootNavigator: true, - ).pop(); - } else { - int count = 0; - Navigator.of( - context, - ).popUntil((_) => count++ >= 2); - // onOkPressed?.call("OK"); - } - }, + }, style: Theme.of(context) .extension()! .getPrimaryEnabledButtonStyle(context), diff --git a/lib/widgets/textfields/frost_step_field.dart b/lib/widgets/textfields/frost_step_field.dart index f94fac2b41..4a788a5bd3 100644 --- a/lib/widgets/textfields/frost_step_field.dart +++ b/lib/widgets/textfields/frost_step_field.dart @@ -128,15 +128,14 @@ class _FrostStepFieldState extends ConsumerState { Widget build(BuildContext context) { return ConditionalParent( condition: widget.label != null, - builder: - (child) => Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - Text(widget.label!, style: STextStyles.w500_14(context)), - const SizedBox(height: 4), - child, - ], - ), + builder: (child) => Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Text(widget.label!, style: STextStyles.w500_14(context)), + const SizedBox(height: 4), + child, + ], + ), child: TextField( controller: widget.controller, focusNode: widget.focusNode, @@ -147,60 +146,55 @@ class _FrostStepFieldState extends ConsumerState { onChanged: _changed, decoration: InputDecoration( hintText: widget.hint, - fillColor: - widget.focusNode.hasFocus - ? Theme.of( - context, - ).extension()!.textFieldActiveBG - : Theme.of( - context, - ).extension()!.textFieldDefaultBG, - hintStyle: - Util.isDesktop - ? STextStyles.desktopTextFieldLabel(context) - : STextStyles.fieldLabel(context), + fillColor: widget.focusNode.hasFocus + ? Theme.of(context).extension()!.textFieldActiveBG + : Theme.of(context).extension()!.textFieldDefaultBG, + hintStyle: Util.isDesktop + ? STextStyles.desktopTextFieldLabel(context) + : STextStyles.fieldLabel(context), enabledBorder: _inputBorder, focusedBorder: _inputBorder, errorBorder: _inputBorder, disabledBorder: _inputBorder, focusedErrorBorder: _inputBorder, suffixIcon: Padding( - padding: - _isEmpty - ? const EdgeInsets.only(right: 8) - : const EdgeInsets.only(right: 0), + padding: _isEmpty + ? const EdgeInsets.only(right: 8) + : const EdgeInsets.only(right: 0), child: UnconstrainedBox( child: Row( mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ !_isEmpty ? TextFieldIconButton( - semanticsLabel: - "Clear Button. Clears The Frost Step Field Input.", - key: _xKey, - onTap: () { - widget.controller.text = ""; - - _changed(widget.controller.text); - }, - child: const XIcon(), - ) + semanticsLabel: + "Clear Button. Clears The Frost Step Field Input.", + key: _xKey, + onTap: () { + widget.controller.text = ""; + + _changed(widget.controller.text); + }, + child: const XIcon(), + ) : TextFieldIconButton( - semanticsLabel: - "Paste Button. Pastes From Clipboard To Frost Step Field Input.", - key: _pasteKey, - onTap: () async { - final ClipboardData? data = await Clipboard.getData( - Clipboard.kTextPlain, - ); - if (data?.text != null && data!.text!.isNotEmpty) { - widget.controller.text = data.text!.trim(); - } - - _changed(widget.controller.text); - }, - child: _isEmpty ? const ClipboardIcon() : const XIcon(), - ), + semanticsLabel: + "Paste Button. Pastes From Clipboard To Frost Step Field Input.", + key: _pasteKey, + onTap: () async { + final ClipboardData? data = await Clipboard.getData( + Clipboard.kTextPlain, + ); + if (data?.text != null && data!.text!.isNotEmpty) { + widget.controller.text = data.text!.trim(); + } + + _changed(widget.controller.text); + }, + child: _isEmpty + ? const ClipboardIcon() + : const XIcon(), + ), if (_isEmpty && widget.showQrScanOption) TextFieldIconButton( semanticsLabel: diff --git a/lib/widgets/transaction_card.dart b/lib/widgets/transaction_card.dart index 211776fe80..d7531a0520 100644 --- a/lib/widgets/transaction_card.dart +++ b/lib/widgets/transaction_card.dart @@ -117,8 +117,11 @@ class _TransactionCardState extends ConsumerState { @override void initState() { walletId = widget.walletId; - minConfirms = - ref.read(pWallets).getWallet(walletId).cryptoCurrency.minConfirms; + minConfirms = ref + .read(pWallets) + .getWallet(walletId) + .cryptoCurrency + .minConfirms; _transaction = widget.transaction; isTokenTx = _transaction.subType == TransactionSubType.ethToken; if (Util.isDesktop) { @@ -152,17 +155,15 @@ class _TransactionCardState extends ConsumerState { prefsChangeNotifierProvider.select((value) => value.currency), ); - final price = - ref - .watch( - priceAnd24hChangeNotifierProvider.select( - (value) => - isTokenTx - ? value.getTokenPrice(_transaction.otherData!) - : value.getPrice(coin), - ), - ) - ?.value; + final price = ref + .watch( + priceAnd24hChangeNotifierProvider.select( + (value) => isTokenTx + ? value.getTokenPrice(_transaction.otherData!) + : value.getPrice(coin), + ), + ) + ?.value; final currentHeight = ref.watch( pWallets.select( @@ -215,16 +216,15 @@ class _TransactionCardState extends ConsumerState { if (Util.isDesktop) { await showDialog( context: context, - builder: - (context) => DesktopDialog( - maxHeight: MediaQuery.of(context).size.height - 64, - maxWidth: 580, - child: TransactionDetailsView( - transaction: _transaction, - coin: coin, - walletId: walletId, - ), - ), + builder: (context) => DesktopDialog( + maxHeight: MediaQuery.of(context).size.height - 64, + maxWidth: 580, + child: TransactionDetailsView( + transaction: _transaction, + coin: coin, + walletId: walletId, + ), + ), ); } else { unawaited( @@ -259,13 +259,13 @@ class _TransactionCardState extends ConsumerState { child: Text( _transaction.isCancelled ? coin is Ethereum - ? "Failed" - : "Cancelled" + ? "Failed" + : "Cancelled" : whatIsIt( - _transaction.type, - coin, - currentHeight, - ), + _transaction.type, + coin, + currentHeight, + ), style: STextStyles.itemSubtitle12(context), ), ), diff --git a/lib/widgets/tx_key_widget.dart b/lib/widgets/tx_key_widget.dart index f9e1fb4bc5..4355604304 100644 --- a/lib/widgets/tx_key_widget.dart +++ b/lib/widgets/tx_key_widget.dart @@ -38,18 +38,14 @@ class _TxKeyWidgetState extends ConsumerState { try { final verified = await showDialog( context: context, - builder: - (context) => - Util.isDesktop - ? const RequestDesktopAuthDialog( - title: "Show private view key", - ) - : const PinpadDialog( - biometricsAuthenticationTitle: "Show private view key", - biometricsLocalizedReason: - "Authenticate to show private view key", - biometricsCancelButtonString: "CANCEL", - ), + builder: (context) => Util.isDesktop + ? const RequestDesktopAuthDialog(title: "Show private view key") + : const PinpadDialog( + biometricsAuthenticationTitle: "Show private view key", + biometricsLocalizedReason: + "Authenticate to show private view key", + biometricsCancelButtonString: "CANCEL", + ), barrierDismissible: !Util.isDesktop, ); @@ -76,16 +72,15 @@ class _TxKeyWidgetState extends ConsumerState { @override Widget build(BuildContext context) { return DetailItemBase( - button: - _private == null - ? CustomTextButton( - text: "Show", - onTap: _loadTxKey, - enabled: _private == null, - ) - : Util.isDesktop - ? tvd.IconCopyButton(data: _private!) - : SimpleCopyButton(data: _private!), + button: _private == null + ? CustomTextButton( + text: "Show", + onTap: _loadTxKey, + enabled: _private == null, + ) + : Util.isDesktop + ? tvd.IconCopyButton(data: _private!) + : SimpleCopyButton(data: _private!), title: Text("Private view key", style: STextStyles.itemSubtitle(context)), detail: SelectableText( // TODO diff --git a/lib/widgets/wallet_card.dart b/lib/widgets/wallet_card.dart index ed49e5ebb9..73ebfc67f1 100644 --- a/lib/widgets/wallet_card.dart +++ b/lib/widgets/wallet_card.dart @@ -59,10 +59,12 @@ class SimpleWalletCard extends ConsumerWidget { final old = ref.read(tokenServiceStateProvider); // exit previous if there is one unawaited(old?.exit()); - ref.read(tokenServiceStateProvider.state).state = Wallet.loadTokenWallet( - ethWallet: wallet as EthereumWallet, - contract: contract, - ) as EthTokenWallet; + ref.read(tokenServiceStateProvider.state).state = + Wallet.loadTokenWallet( + ethWallet: wallet as EthereumWallet, + contract: contract, + ) + as EthTokenWallet; try { await ref.read(pCurrentTokenWallet)!.init(); @@ -132,17 +134,13 @@ class SimpleWalletCard extends ConsumerWidget { ), ); } else { - unawaited( - nav.pushNamed( - WalletView.routeName, - arguments: walletId, - ), - ); + unawaited(nav.pushNamed(WalletView.routeName, arguments: walletId)); } if (contractAddress != null) { - final contract = - ref.read(mainDBProvider).getEthContractSync(contractAddress!)!; + final contract = ref + .read(mainDBProvider) + .getEthContractSync(contractAddress!)!; final success = await showLoading( whileFuture: _loadTokenWallet( @@ -159,9 +157,7 @@ class SimpleWalletCard extends ConsumerWidget { if (!success!) { // TODO: show error dialog here? - Logging.instance.e( - "Failed to load token wallet for $contract", - ); + Logging.instance.e("Failed to load token wallet for $contract"); return; } @@ -203,8 +199,9 @@ class SimpleWalletCard extends ConsumerWidget { child: WalletInfoRow( walletId: walletId, contractAddress: contractAddress, - onPressedDesktop: - Util.isDesktop ? () => _openWallet(context, ref) : null, + onPressedDesktop: Util.isDesktop + ? () => _openWallet(context, ref) + : null, ), ); } diff --git a/lib/widgets/wallet_info_row/sub_widgets/wallet_info_row_balance.dart b/lib/widgets/wallet_info_row/sub_widgets/wallet_info_row_balance.dart index e88737d4ee..eff40bc02f 100644 --- a/lib/widgets/wallet_info_row/sub_widgets/wallet_info_row_balance.dart +++ b/lib/widgets/wallet_info_row/sub_widgets/wallet_info_row_balance.dart @@ -37,7 +37,8 @@ class WalletInfoRowBalance extends ConsumerWidget { final Amount totalBalance; EthContract? contract; if (contractAddress == null) { - totalBalance = info.cachedBalance.total + + totalBalance = + info.cachedBalance.total + info.cachedBalanceSecondary.total + info.cachedBalanceTertiary.total; @@ -46,18 +47,18 @@ class WalletInfoRowBalance extends ConsumerWidget { contract = MainDB.instance.getEthContractSync(contractAddress!)!; totalBalance = ref .watch( - pTokenBalance( - (walletId: walletId, contractAddress: contractAddress!), - ), + pTokenBalance(( + walletId: walletId, + contractAddress: contractAddress!, + )), ) .total; } return Text( - ref.watch(pAmountFormatter(info.coin)).format( - totalBalance, - ethContract: contract, - ), + ref + .watch(pAmountFormatter(info.coin)) + .format(totalBalance, ethContract: contract), style: Util.isDesktop ? STextStyles.desktopTextExtraSmall(context).copyWith( color: Theme.of(context).extension()!.textSubtitle1, diff --git a/lib/widgets/wallet_info_row/wallet_info_row.dart b/lib/widgets/wallet_info_row/wallet_info_row.dart index 381d0e0d56..a838f3cf4b 100644 --- a/lib/widgets/wallet_info_row/wallet_info_row.dart +++ b/lib/widgets/wallet_info_row/wallet_info_row.dart @@ -67,37 +67,35 @@ class WalletInfoRow extends ConsumerWidget { const SizedBox(width: 12), contract != null ? Row( - children: [ - Text( - contract.name, - style: STextStyles.desktopTextExtraSmall( - context, - ).copyWith( - color: - Theme.of( + children: [ + Text( + contract.name, + style: + STextStyles.desktopTextExtraSmall( context, - ).extension()!.textDark, + ).copyWith( + color: Theme.of( + context, + ).extension()!.textDark, + ), ), - ), - const SizedBox(width: 4), - CoinTickerTag( - ticker: ref.watch( - pWalletCoin(walletId).select((s) => s.ticker), + const SizedBox(width: 4), + CoinTickerTag( + ticker: ref.watch( + pWalletCoin(walletId).select((s) => s.ticker), + ), ), - ), - ], - ) + ], + ) : Text( - wallet.info.name, - style: STextStyles.desktopTextExtraSmall( - context, - ).copyWith( - color: - Theme.of( - context, - ).extension()!.textDark, + wallet.info.name, + style: STextStyles.desktopTextExtraSmall(context) + .copyWith( + color: Theme.of( + context, + ).extension()!.textDark, + ), ), - ), ], ), ), diff --git a/test/cached_electrumx_test.dart b/test/cached_electrumx_test.dart index 370e029727..39fcc74e62 100644 --- a/test/cached_electrumx_test.dart +++ b/test/cached_electrumx_test.dart @@ -117,24 +117,17 @@ void main() { test("getTransaction throws", () async { final client = MockElectrumXClient(); - when( - client.getTransaction( - txHash: "some hash", - ), - ).thenThrow(Exception()); + when(client.getTransaction(txHash: "some hash")).thenThrow(Exception()); - final cachedClient = CachedElectrumXClient( - electrumXClient: client, - ); + final cachedClient = CachedElectrumXClient(electrumXClient: client); expect( - () async => await cachedClient.getTransaction( - txHash: "some hash", - cryptoCurrency: Firo( - CryptoCurrencyNetwork.main, - ), - ), - throwsA(isA())); + () async => await cachedClient.getTransaction( + txHash: "some hash", + cryptoCurrency: Firo(CryptoCurrencyNetwork.main), + ), + throwsA(isA()), + ); }); test("clearSharedTransactionCache", () async { @@ -145,9 +138,7 @@ void main() { bool didThrow = false; try { await cachedClient.clearSharedTransactionCache( - cryptoCurrency: Firo( - CryptoCurrencyNetwork.main, - ), + cryptoCurrency: Firo(CryptoCurrencyNetwork.main), ); } catch (_) { didThrow = true; @@ -172,8 +163,9 @@ void main() { clearnetEnabled: true, ); - final client = - CachedElectrumXClient.from(electrumXClient: MockElectrumXClient()); + final client = CachedElectrumXClient.from( + electrumXClient: MockElectrumXClient(), + ); expect(client, isA()); }); diff --git a/test/screen_tests/lockscreen_view_screen_test.dart b/test/screen_tests/lockscreen_view_screen_test.dart index 8019ad22da..0ec4c613a4 100644 --- a/test/screen_tests/lockscreen_view_screen_test.dart +++ b/test/screen_tests/lockscreen_view_screen_test.dart @@ -7,10 +7,7 @@ import 'package:stackwallet/services/wallets_service.dart'; @GenerateMocks( [], - customMocks: [ - MockSpec(), - MockSpec(), - ], + customMocks: [MockSpec(), MockSpec()], ) void main() { testWidgets("LockscreenView builds correctly", (tester) async { diff --git a/test/screen_tests/onboarding/create_pin_view_screen_test.dart b/test/screen_tests/onboarding/create_pin_view_screen_test.dart index fcd0aa2c56..7ba4f0131f 100644 --- a/test/screen_tests/onboarding/create_pin_view_screen_test.dart +++ b/test/screen_tests/onboarding/create_pin_view_screen_test.dart @@ -17,366 +17,366 @@ import 'package:stackwallet/services/wallets_service.dart'; // // import 'create_pin_view_screen_test.mocks.dart'; -@GenerateMocks([], customMocks: [ - MockSpec(), - MockSpec(), -]) +@GenerateMocks( + [], + customMocks: [MockSpec(), MockSpec()], +) void main() { -// testWidgets("CreatePinView builds correctly", (tester) async { -// await tester.pumpWidget( -// MaterialApp( -// home: CreatePinView( -// type: CreateWalletType.NEW, -// walletName: "My Firo Wallet", -// useTestNet: false, -// ), -// ), -// ); -// -// expect(find.byKey(Key("onboardingAppBarBackButton")), findsOneWidget); -// expect(find.byKey(Key("onboardingAppBarBackButtonChevronSvg")), -// findsOneWidget); -// -// final imageFinder = find.byType(Image); -// expect(imageFinder, findsOneWidget); -// -// final imageSource = -// ((imageFinder.evaluate().single.widget as Image).image as AssetImage) -// .assetName; -// expect(imageSource, "assets/images/logo.png"); -// -// expect(find.text("Create a PIN"), findsOneWidget); -// -// expect(find.byType(CustomPinPut), findsOneWidget); -// }); -// -// testWidgets("back button test", (tester) async { -// final navigator = mockingjay.MockNavigator(); -// -// mockingjay.when(() => navigator.pop()).thenAnswer((_) async => {}); -// -// await tester.pumpWidget( -// MaterialApp( -// home: mockingjay.MockNavigatorProvider( -// navigator: navigator, -// child: CreatePinView( -// type: CreateWalletType.NEW, -// walletName: "My Firo Wallet", -// useTestNet: false, -// ), -// ), -// ), -// ); -// -// await tester.tap(find.byKey(Key("onboardingAppBarBackButton"))); -// await tester.pumpAndSettle(); -// -// mockingjay.verify(() => navigator.pop()).called(1); -// }); -// -// testWidgets("Entering unmatched PINs", (tester) async { -// await tester.pumpWidget( -// MaterialApp( -// home: CreatePinView( -// type: CreateWalletType.NEW, -// walletName: "My Firo Wallet", -// useTestNet: false, -// ), -// ), -// ); -// -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "1")); -// await tester.pumpAndSettle(Duration(milliseconds: 100)); -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "2")); -// await tester.pumpAndSettle(Duration(milliseconds: 100)); -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "3")); -// await tester.pumpAndSettle(Duration(milliseconds: 100)); -// await tester -// .tap(find.byWidgetPredicate((widget) => widget is BackspaceKey)); -// await tester.pumpAndSettle(Duration(milliseconds: 100)); -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "6")); -// await tester.pumpAndSettle(Duration(milliseconds: 100)); -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "4")); -// await tester.pumpAndSettle(Duration(seconds: 1)); -// -// expect(find.text("Confirm PIN"), findsOneWidget); -// -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "7")); -// await tester.pumpAndSettle(Duration(milliseconds: 100)); -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "9")); -// await tester.pumpAndSettle(Duration(milliseconds: 100)); -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "8")); -// await tester.pumpAndSettle(Duration(milliseconds: 100)); -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "5")); -// await tester.pumpAndSettle(Duration(seconds: 2)); -// -// expect(find.text("Create a PIN"), findsOneWidget); -// }); -// -// testWidgets("Entering matched PINs on a new wallet", (tester) async { -// final navigator = mockingjay.MockNavigator(); -// final walletsService = MockWalletsService(); -// final wallet = MockManager(); -// final nodeService = MockNodeService(); -// -// final store = FakeSecureStorage(); -// -// mockingjay -// .when(() => navigator.push(mockingjay.any())) -// .thenAnswer((_) async => {}); -// -// when(walletsService.addNewWalletName("My Firo Wallet", "main")) -// .thenAnswer((_) async => true); -// when(walletsService.getWalletId("My Firo Wallet")) -// .thenAnswer((_) async => "walletID"); -// -// when(nodeService.reInit()).thenAnswer((_) => {}); -// when( -// nodeService.createNode( -// name: CampfireConstants.defaultNodeName, -// ipAddress: CampfireConstants.defaultIpAddress, -// port: CampfireConstants.defaultPort.toString(), -// useSSL: CampfireConstants.defaultUseSSL, -// ), -// ).thenAnswer((_) async => true); -// -// when(manager.initializeWallet()).thenAnswer((_) async => true); -// -// await tester.pumpWidget( -// MaterialApp( -// home: mockingjay.MockNavigatorProvider( -// navigator: navigator, -// child: MultiProvider( -// // home: MultiProvider( -// providers: [ -// ChangeNotifierProvider( -// create: (_) => walletsService, -// ), -// ChangeNotifierProvider( -// create: (_) => manager, -// ), -// ChangeNotifierProvider( -// create: (_) => nodeService, -// ), -// ], -// child: CreatePinView( -// type: CreateWalletType.NEW, -// walletName: "My Firo Wallet", -// useTestNet: false, -// secureStore: store, -// ), -// ), -// ), -// ), -// ); -// -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "1")); -// await tester.pumpAndSettle(Duration(milliseconds: 100)); -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "2")); -// await tester.pumpAndSettle(Duration(milliseconds: 100)); -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "3")); -// await tester.pumpAndSettle(Duration(milliseconds: 100)); -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "4")); -// await tester.pumpAndSettle(Duration(seconds: 1)); -// -// expect(find.text("Confirm PIN"), findsOneWidget); -// -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "1")); -// await tester.pumpAndSettle(Duration(milliseconds: 100)); -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "2")); -// await tester.pumpAndSettle(Duration(milliseconds: 100)); -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "3")); -// await tester.pumpAndSettle(Duration(milliseconds: 100)); -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "4")); -// await tester.pump(Duration(seconds: 2)); -// -// expect(find.byType(CircularProgressIndicator), findsOneWidget); -// -// await tester.pump(Duration(seconds: 20)); -// -// mockingjay.verify(() => navigator.push(mockingjay.any())).called(1); -// }); -// -// testWidgets("Wallet init fails on entering matched PINs", (tester) async { -// final navigator = mockingjay.MockNavigator(); -// final walletsService = MockWalletsService(); -// final wallet = MockManager(); -// final nodeService = MockNodeService(); -// -// final store = FakeSecureStorage(); -// -// mockingjay.when(() => navigator.pop()).thenAnswer((_) async => {}); -// -// when(walletsService.addNewWalletName("My Firo Wallet", "main")) -// .thenAnswer((_) async => true); -// when(walletsService.getWalletId("My Firo Wallet")) -// .thenAnswer((_) async => "walletID"); -// -// when(nodeService.reInit()).thenAnswer((_) => {}); -// when( -// nodeService.createNode( -// name: CampfireConstants.defaultNodeNameTestNet, -// ipAddress: CampfireConstants.defaultIpAddressTestNet, -// port: CampfireConstants.defaultPortTestNet.toString(), -// useSSL: CampfireConstants.defaultUseSSLTestNet, -// ), -// ).thenAnswer((_) async => true); -// -// when(manager.initializeWallet()).thenAnswer((_) async => false); -// when(manager.exitCurrentWallet()).thenAnswer((_) async => {}); -// when(walletsService.deleteWallet("My Firo Wallet")) -// .thenAnswer((_) async => 0); -// -// await tester.pumpWidget( -// MaterialApp( -// home: mockingjay.MockNavigatorProvider( -// navigator: navigator, -// child: MultiProvider( -// // home: MultiProvider( -// providers: [ -// ChangeNotifierProvider( -// create: (_) => walletsService, -// ), -// ChangeNotifierProvider( -// create: (_) => manager, -// ), -// ChangeNotifierProvider( -// create: (_) => nodeService, -// ), -// ], -// child: CreatePinView( -// type: CreateWalletType.NEW, -// walletName: "My Firo Wallet", -// useTestNet: true, -// secureStore: store, -// ), -// ), -// ), -// ), -// ); -// -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "1")); -// await tester.pumpAndSettle(Duration(milliseconds: 100)); -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "2")); -// await tester.pumpAndSettle(Duration(milliseconds: 100)); -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "3")); -// await tester.pumpAndSettle(Duration(milliseconds: 100)); -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "4")); -// await tester.pumpAndSettle(Duration(seconds: 1)); -// -// expect(find.text("Confirm PIN"), findsOneWidget); -// -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "1")); -// await tester.pumpAndSettle(Duration(milliseconds: 100)); -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "2")); -// await tester.pumpAndSettle(Duration(milliseconds: 100)); -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "3")); -// await tester.pumpAndSettle(Duration(milliseconds: 100)); -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "4")); -// await tester.pump(Duration(seconds: 2)); -// -// expect( -// find.text( -// "Failed to connect to network. Check your internet connection."), -// findsOneWidget); -// expect(find.text("OK"), findsOneWidget); -// -// await tester.tap(find.byType(GradientButton)); -// await tester.pump(Duration(seconds: 1)); -// -// mockingjay.verify(() => navigator.pop()).called(4); -// }); -// -// testWidgets("Entering matched PINs on a restore", (tester) async { -// final navigator = mockingjay.MockNavigator(); -// final walletsService = MockWalletsService(); -// -// final store = FakeSecureStorage(); -// -// mockingjay -// .when(() => navigator.push(mockingjay.any())) -// .thenAnswer((_) async => {}); -// -// when(walletsService.addNewWalletName("My Firo Wallet", "main")) -// .thenAnswer((_) async => true); -// when(walletsService.getWalletId("My Firo Wallet")) -// .thenAnswer((_) async => "walletID"); -// -// await tester.pumpWidget( -// MaterialApp( -// home: mockingjay.MockNavigatorProvider( -// navigator: navigator, -// child: MultiProvider( -// // home: MultiProvider( -// providers: [ -// ChangeNotifierProvider( -// create: (_) => walletsService, -// ), -// ], -// child: CreatePinView( -// type: CreateWalletType.RESTORE, -// walletName: "My Firo Wallet", -// useTestNet: false, -// secureStore: store, -// ), -// ), -// ), -// ), -// ); -// -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "1")); -// await tester.pumpAndSettle(Duration(milliseconds: 100)); -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "2")); -// await tester.pumpAndSettle(Duration(milliseconds: 100)); -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "3")); -// await tester.pumpAndSettle(Duration(milliseconds: 100)); -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "4")); -// await tester.pumpAndSettle(Duration(seconds: 1)); -// -// expect(find.text("Confirm PIN"), findsOneWidget); -// -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "1")); -// await tester.pumpAndSettle(Duration(milliseconds: 100)); -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "2")); -// await tester.pumpAndSettle(Duration(milliseconds: 100)); -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "3")); -// await tester.pumpAndSettle(Duration(milliseconds: 100)); -// await tester.tap(find.byWidgetPredicate( -// (widget) => widget is NumberKey && widget.number == "4")); -// await tester.pumpAndSettle(Duration(seconds: 6)); -// -// mockingjay.verify(() => navigator.push(mockingjay.any())).called(1); -// }); + // testWidgets("CreatePinView builds correctly", (tester) async { + // await tester.pumpWidget( + // MaterialApp( + // home: CreatePinView( + // type: CreateWalletType.NEW, + // walletName: "My Firo Wallet", + // useTestNet: false, + // ), + // ), + // ); + // + // expect(find.byKey(Key("onboardingAppBarBackButton")), findsOneWidget); + // expect(find.byKey(Key("onboardingAppBarBackButtonChevronSvg")), + // findsOneWidget); + // + // final imageFinder = find.byType(Image); + // expect(imageFinder, findsOneWidget); + // + // final imageSource = + // ((imageFinder.evaluate().single.widget as Image).image as AssetImage) + // .assetName; + // expect(imageSource, "assets/images/logo.png"); + // + // expect(find.text("Create a PIN"), findsOneWidget); + // + // expect(find.byType(CustomPinPut), findsOneWidget); + // }); + // + // testWidgets("back button test", (tester) async { + // final navigator = mockingjay.MockNavigator(); + // + // mockingjay.when(() => navigator.pop()).thenAnswer((_) async => {}); + // + // await tester.pumpWidget( + // MaterialApp( + // home: mockingjay.MockNavigatorProvider( + // navigator: navigator, + // child: CreatePinView( + // type: CreateWalletType.NEW, + // walletName: "My Firo Wallet", + // useTestNet: false, + // ), + // ), + // ), + // ); + // + // await tester.tap(find.byKey(Key("onboardingAppBarBackButton"))); + // await tester.pumpAndSettle(); + // + // mockingjay.verify(() => navigator.pop()).called(1); + // }); + // + // testWidgets("Entering unmatched PINs", (tester) async { + // await tester.pumpWidget( + // MaterialApp( + // home: CreatePinView( + // type: CreateWalletType.NEW, + // walletName: "My Firo Wallet", + // useTestNet: false, + // ), + // ), + // ); + // + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "1")); + // await tester.pumpAndSettle(Duration(milliseconds: 100)); + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "2")); + // await tester.pumpAndSettle(Duration(milliseconds: 100)); + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "3")); + // await tester.pumpAndSettle(Duration(milliseconds: 100)); + // await tester + // .tap(find.byWidgetPredicate((widget) => widget is BackspaceKey)); + // await tester.pumpAndSettle(Duration(milliseconds: 100)); + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "6")); + // await tester.pumpAndSettle(Duration(milliseconds: 100)); + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "4")); + // await tester.pumpAndSettle(Duration(seconds: 1)); + // + // expect(find.text("Confirm PIN"), findsOneWidget); + // + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "7")); + // await tester.pumpAndSettle(Duration(milliseconds: 100)); + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "9")); + // await tester.pumpAndSettle(Duration(milliseconds: 100)); + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "8")); + // await tester.pumpAndSettle(Duration(milliseconds: 100)); + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "5")); + // await tester.pumpAndSettle(Duration(seconds: 2)); + // + // expect(find.text("Create a PIN"), findsOneWidget); + // }); + // + // testWidgets("Entering matched PINs on a new wallet", (tester) async { + // final navigator = mockingjay.MockNavigator(); + // final walletsService = MockWalletsService(); + // final wallet = MockManager(); + // final nodeService = MockNodeService(); + // + // final store = FakeSecureStorage(); + // + // mockingjay + // .when(() => navigator.push(mockingjay.any())) + // .thenAnswer((_) async => {}); + // + // when(walletsService.addNewWalletName("My Firo Wallet", "main")) + // .thenAnswer((_) async => true); + // when(walletsService.getWalletId("My Firo Wallet")) + // .thenAnswer((_) async => "walletID"); + // + // when(nodeService.reInit()).thenAnswer((_) => {}); + // when( + // nodeService.createNode( + // name: CampfireConstants.defaultNodeName, + // ipAddress: CampfireConstants.defaultIpAddress, + // port: CampfireConstants.defaultPort.toString(), + // useSSL: CampfireConstants.defaultUseSSL, + // ), + // ).thenAnswer((_) async => true); + // + // when(manager.initializeWallet()).thenAnswer((_) async => true); + // + // await tester.pumpWidget( + // MaterialApp( + // home: mockingjay.MockNavigatorProvider( + // navigator: navigator, + // child: MultiProvider( + // // home: MultiProvider( + // providers: [ + // ChangeNotifierProvider( + // create: (_) => walletsService, + // ), + // ChangeNotifierProvider( + // create: (_) => manager, + // ), + // ChangeNotifierProvider( + // create: (_) => nodeService, + // ), + // ], + // child: CreatePinView( + // type: CreateWalletType.NEW, + // walletName: "My Firo Wallet", + // useTestNet: false, + // secureStore: store, + // ), + // ), + // ), + // ), + // ); + // + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "1")); + // await tester.pumpAndSettle(Duration(milliseconds: 100)); + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "2")); + // await tester.pumpAndSettle(Duration(milliseconds: 100)); + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "3")); + // await tester.pumpAndSettle(Duration(milliseconds: 100)); + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "4")); + // await tester.pumpAndSettle(Duration(seconds: 1)); + // + // expect(find.text("Confirm PIN"), findsOneWidget); + // + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "1")); + // await tester.pumpAndSettle(Duration(milliseconds: 100)); + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "2")); + // await tester.pumpAndSettle(Duration(milliseconds: 100)); + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "3")); + // await tester.pumpAndSettle(Duration(milliseconds: 100)); + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "4")); + // await tester.pump(Duration(seconds: 2)); + // + // expect(find.byType(CircularProgressIndicator), findsOneWidget); + // + // await tester.pump(Duration(seconds: 20)); + // + // mockingjay.verify(() => navigator.push(mockingjay.any())).called(1); + // }); + // + // testWidgets("Wallet init fails on entering matched PINs", (tester) async { + // final navigator = mockingjay.MockNavigator(); + // final walletsService = MockWalletsService(); + // final wallet = MockManager(); + // final nodeService = MockNodeService(); + // + // final store = FakeSecureStorage(); + // + // mockingjay.when(() => navigator.pop()).thenAnswer((_) async => {}); + // + // when(walletsService.addNewWalletName("My Firo Wallet", "main")) + // .thenAnswer((_) async => true); + // when(walletsService.getWalletId("My Firo Wallet")) + // .thenAnswer((_) async => "walletID"); + // + // when(nodeService.reInit()).thenAnswer((_) => {}); + // when( + // nodeService.createNode( + // name: CampfireConstants.defaultNodeNameTestNet, + // ipAddress: CampfireConstants.defaultIpAddressTestNet, + // port: CampfireConstants.defaultPortTestNet.toString(), + // useSSL: CampfireConstants.defaultUseSSLTestNet, + // ), + // ).thenAnswer((_) async => true); + // + // when(manager.initializeWallet()).thenAnswer((_) async => false); + // when(manager.exitCurrentWallet()).thenAnswer((_) async => {}); + // when(walletsService.deleteWallet("My Firo Wallet")) + // .thenAnswer((_) async => 0); + // + // await tester.pumpWidget( + // MaterialApp( + // home: mockingjay.MockNavigatorProvider( + // navigator: navigator, + // child: MultiProvider( + // // home: MultiProvider( + // providers: [ + // ChangeNotifierProvider( + // create: (_) => walletsService, + // ), + // ChangeNotifierProvider( + // create: (_) => manager, + // ), + // ChangeNotifierProvider( + // create: (_) => nodeService, + // ), + // ], + // child: CreatePinView( + // type: CreateWalletType.NEW, + // walletName: "My Firo Wallet", + // useTestNet: true, + // secureStore: store, + // ), + // ), + // ), + // ), + // ); + // + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "1")); + // await tester.pumpAndSettle(Duration(milliseconds: 100)); + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "2")); + // await tester.pumpAndSettle(Duration(milliseconds: 100)); + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "3")); + // await tester.pumpAndSettle(Duration(milliseconds: 100)); + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "4")); + // await tester.pumpAndSettle(Duration(seconds: 1)); + // + // expect(find.text("Confirm PIN"), findsOneWidget); + // + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "1")); + // await tester.pumpAndSettle(Duration(milliseconds: 100)); + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "2")); + // await tester.pumpAndSettle(Duration(milliseconds: 100)); + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "3")); + // await tester.pumpAndSettle(Duration(milliseconds: 100)); + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "4")); + // await tester.pump(Duration(seconds: 2)); + // + // expect( + // find.text( + // "Failed to connect to network. Check your internet connection."), + // findsOneWidget); + // expect(find.text("OK"), findsOneWidget); + // + // await tester.tap(find.byType(GradientButton)); + // await tester.pump(Duration(seconds: 1)); + // + // mockingjay.verify(() => navigator.pop()).called(4); + // }); + // + // testWidgets("Entering matched PINs on a restore", (tester) async { + // final navigator = mockingjay.MockNavigator(); + // final walletsService = MockWalletsService(); + // + // final store = FakeSecureStorage(); + // + // mockingjay + // .when(() => navigator.push(mockingjay.any())) + // .thenAnswer((_) async => {}); + // + // when(walletsService.addNewWalletName("My Firo Wallet", "main")) + // .thenAnswer((_) async => true); + // when(walletsService.getWalletId("My Firo Wallet")) + // .thenAnswer((_) async => "walletID"); + // + // await tester.pumpWidget( + // MaterialApp( + // home: mockingjay.MockNavigatorProvider( + // navigator: navigator, + // child: MultiProvider( + // // home: MultiProvider( + // providers: [ + // ChangeNotifierProvider( + // create: (_) => walletsService, + // ), + // ], + // child: CreatePinView( + // type: CreateWalletType.RESTORE, + // walletName: "My Firo Wallet", + // useTestNet: false, + // secureStore: store, + // ), + // ), + // ), + // ), + // ); + // + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "1")); + // await tester.pumpAndSettle(Duration(milliseconds: 100)); + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "2")); + // await tester.pumpAndSettle(Duration(milliseconds: 100)); + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "3")); + // await tester.pumpAndSettle(Duration(milliseconds: 100)); + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "4")); + // await tester.pumpAndSettle(Duration(seconds: 1)); + // + // expect(find.text("Confirm PIN"), findsOneWidget); + // + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "1")); + // await tester.pumpAndSettle(Duration(milliseconds: 100)); + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "2")); + // await tester.pumpAndSettle(Duration(milliseconds: 100)); + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "3")); + // await tester.pumpAndSettle(Duration(milliseconds: 100)); + // await tester.tap(find.byWidgetPredicate( + // (widget) => widget is NumberKey && widget.number == "4")); + // await tester.pumpAndSettle(Duration(seconds: 6)); + // + // mockingjay.verify(() => navigator.push(mockingjay.any())).called(1); + // }); } diff --git a/test/services/change_now/change_now_sample_data.dart b/test/services/change_now/change_now_sample_data.dart index 4e63dbf884..a522a0d51d 100644 --- a/test/services/change_now/change_now_sample_data.dart +++ b/test/services/change_now/change_now_sample_data.dart @@ -7,7 +7,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "eth", @@ -17,7 +17,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ethbsc", @@ -27,7 +27,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdt", @@ -37,7 +37,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdterc20", @@ -48,7 +48,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": true, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdttrc20", @@ -59,7 +59,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdtbsc", @@ -69,7 +69,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdc", @@ -79,7 +79,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": true, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdcmatic", @@ -90,7 +90,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bnbmainnet", @@ -101,7 +101,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bnbbsc", @@ -111,7 +111,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "busd", @@ -121,7 +121,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "busdbsc", @@ -131,7 +131,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xrp", @@ -141,7 +141,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xrpbsc", @@ -151,7 +151,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ada", @@ -161,7 +161,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "adabsc", @@ -171,7 +171,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sol", @@ -181,7 +181,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "doge", @@ -191,7 +191,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dot", @@ -201,7 +201,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dotbsc", @@ -211,7 +211,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dai", @@ -221,7 +221,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "matic", @@ -231,7 +231,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "maticmainnet", @@ -242,7 +242,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "shib", @@ -252,7 +252,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "shibbsc", @@ -262,7 +262,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "trx", @@ -272,7 +272,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "avax", @@ -282,7 +282,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "avaxc", @@ -292,7 +292,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "wbtc", @@ -302,7 +302,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "leo", @@ -312,7 +312,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "uni", @@ -322,7 +322,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "etc", @@ -332,7 +332,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ltc", @@ -342,7 +342,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ltcbsc", @@ -352,7 +352,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ftt", @@ -362,7 +362,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "atom", @@ -372,7 +372,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "link", @@ -382,7 +382,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cro", @@ -392,7 +392,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "near", @@ -402,7 +402,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xmr", @@ -412,7 +412,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xlm", @@ -422,7 +422,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bch", @@ -432,7 +432,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "algo", @@ -442,7 +442,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "flow", @@ -452,7 +452,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "vet", @@ -462,7 +462,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "icp", @@ -472,7 +472,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fil", @@ -482,7 +482,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ape", @@ -492,7 +492,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "eos", @@ -502,7 +502,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mana", @@ -512,7 +512,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sand", @@ -522,7 +522,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hbar", @@ -532,7 +532,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xtz", @@ -542,7 +542,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xtzbsc", @@ -552,7 +552,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "chz", @@ -562,7 +562,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "qnt", @@ -572,7 +572,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "egld", @@ -582,7 +582,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "aave", @@ -592,7 +592,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "theta", @@ -602,7 +602,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "axs", @@ -612,7 +612,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tusd", @@ -622,7 +622,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bsv", @@ -632,7 +632,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "okb", @@ -642,7 +642,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "galabsc", @@ -652,7 +652,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "zec", @@ -662,7 +662,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdp", @@ -672,7 +672,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bttbsc", @@ -682,7 +682,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "iota", @@ -692,7 +692,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mkr", @@ -702,7 +702,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hnt", @@ -712,7 +712,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ht", @@ -722,7 +722,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "snx", @@ -732,7 +732,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "grt", @@ -742,7 +742,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ftm", @@ -752,7 +752,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ftmmainnet", @@ -762,7 +762,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "klay", @@ -772,7 +772,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "neo", @@ -782,7 +782,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rune", @@ -792,7 +792,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "paxg", @@ -802,7 +802,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ldo", @@ -812,7 +812,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cake", @@ -822,7 +822,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "crv", @@ -832,7 +832,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "nexo", @@ -842,7 +842,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bat", @@ -852,7 +852,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dash", @@ -862,7 +862,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "waves", @@ -872,7 +872,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "zil", @@ -882,7 +882,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lrc", @@ -892,7 +892,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "enj", @@ -902,7 +902,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ksm", @@ -912,7 +912,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dcr", @@ -922,7 +922,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "btg", @@ -932,7 +932,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gmt", @@ -942,7 +942,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "twt", @@ -952,7 +952,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gno", @@ -962,7 +962,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xem", @@ -972,7 +972,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "1inch", @@ -982,7 +982,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "1inchbsc", @@ -992,7 +992,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "celo", @@ -1002,7 +1002,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hot", @@ -1012,7 +1012,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ust", @@ -1023,7 +1023,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "galaerc20", @@ -1034,7 +1034,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ankr", @@ -1044,7 +1044,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "comp", @@ -1054,7 +1054,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gt", @@ -1064,7 +1064,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "cvx", @@ -1074,7 +1074,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "qtum", @@ -1084,7 +1084,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "yfi", @@ -1094,7 +1094,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xdc", @@ -1104,7 +1104,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "kda", @@ -1114,7 +1114,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "iotx", @@ -1124,7 +1124,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cel", @@ -1134,7 +1134,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gusd", @@ -1144,7 +1144,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tfuel", @@ -1154,7 +1154,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rvn", @@ -1164,7 +1164,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "flux", @@ -1174,7 +1174,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bal", @@ -1184,7 +1184,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "amp", @@ -1194,7 +1194,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "op", @@ -1204,7 +1204,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "omg", @@ -1214,7 +1214,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "one", @@ -1224,7 +1224,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "zrx", @@ -1234,7 +1234,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rsr", @@ -1244,7 +1244,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "jst", @@ -1254,7 +1254,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "icx", @@ -1264,7 +1264,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xym", @@ -1274,7 +1274,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "iost", @@ -1284,7 +1284,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ens", @@ -1294,7 +1294,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lpt", @@ -1304,7 +1304,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "glm", @@ -1314,7 +1314,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "audio", @@ -1324,7 +1324,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "storj", @@ -1334,7 +1334,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ont", @@ -1344,7 +1344,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ontbsc", @@ -1354,7 +1354,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "waxp", @@ -1364,7 +1364,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "srm", @@ -1374,7 +1374,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sc", @@ -1384,7 +1384,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "imx", @@ -1394,7 +1394,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "zen", @@ -1404,7 +1404,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "uma", @@ -1414,7 +1414,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "scrt", @@ -1424,7 +1424,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mxc", @@ -1434,7 +1434,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "btrst", @@ -1444,7 +1444,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "skl", @@ -1454,7 +1454,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "poly", @@ -1464,7 +1464,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "slp", @@ -1474,7 +1474,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "woobsc", @@ -1484,7 +1484,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "woo", @@ -1494,7 +1494,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "chsb", @@ -1504,7 +1504,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cspr", @@ -1514,7 +1514,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "dgb", @@ -1524,7 +1524,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "eur", @@ -1534,7 +1534,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "elon", @@ -1544,7 +1544,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dao", @@ -1554,7 +1554,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "pla", @@ -1564,7 +1564,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cvc", @@ -1574,7 +1574,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ceek", @@ -1584,7 +1584,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "spell", @@ -1594,7 +1594,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rndr", @@ -1604,7 +1604,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sushi", @@ -1614,7 +1614,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "btcst", @@ -1624,7 +1624,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lsk", @@ -1634,7 +1634,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "eps", @@ -1644,7 +1644,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "pundix", @@ -1654,7 +1654,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "celr", @@ -1664,7 +1664,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ren", @@ -1674,7 +1674,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xyo", @@ -1684,7 +1684,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "nano", @@ -1694,7 +1694,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "win", @@ -1704,7 +1704,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ong", @@ -1714,7 +1714,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "uos", @@ -1724,7 +1724,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "people", @@ -1734,7 +1734,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cfx", @@ -1744,7 +1744,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "req", @@ -1754,7 +1754,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tribe", @@ -1764,7 +1764,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "dydx", @@ -1774,7 +1774,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ardr", @@ -1784,7 +1784,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rly", @@ -1794,7 +1794,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "coti", @@ -1804,7 +1804,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mx", @@ -1814,7 +1814,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "rlc", @@ -1824,7 +1824,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "powr", @@ -1834,7 +1834,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "nmr", @@ -1844,7 +1844,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "snt", @@ -1854,7 +1854,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ocean", @@ -1864,7 +1864,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "chr", @@ -1874,7 +1874,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "api3", @@ -1884,7 +1884,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dent", @@ -1894,7 +1894,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bnt", @@ -1904,7 +1904,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fxs", @@ -1914,7 +1914,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hex", @@ -1924,7 +1924,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "steth", @@ -1934,7 +1934,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "btcb", @@ -1944,7 +1944,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "frax", @@ -1954,7 +1954,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "lunc", @@ -1964,7 +1964,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dfi", @@ -1974,7 +1974,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bnx", @@ -1984,7 +1984,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rpl", @@ -1994,7 +1994,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "luna", @@ -2004,7 +2004,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "husd", @@ -2014,7 +2014,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "babydoge", @@ -2024,7 +2024,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "metis", @@ -2034,7 +2034,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "raca", @@ -2044,7 +2044,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "prom", @@ -2054,7 +2054,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "sys", @@ -2064,7 +2064,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gal", @@ -2074,7 +2074,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bico", @@ -2084,7 +2084,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "steem", @@ -2094,7 +2094,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "c98", @@ -2104,7 +2104,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "susd", @@ -2114,7 +2114,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ctsi", @@ -2124,7 +2124,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hxro", @@ -2134,7 +2134,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rep", @@ -2144,7 +2144,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fun", @@ -2154,7 +2154,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "pyr", @@ -2164,7 +2164,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "strax", @@ -2174,7 +2174,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bsw", @@ -2184,7 +2184,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lyxe", @@ -2194,7 +2194,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mtl", @@ -2204,7 +2204,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "stmx", @@ -2214,7 +2214,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "stpt", @@ -2224,7 +2224,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "elf", @@ -2234,7 +2234,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ufo", @@ -2244,7 +2244,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "oxt", @@ -2254,7 +2254,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ach", @@ -2264,7 +2264,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ogn", @@ -2274,7 +2274,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sfund", @@ -2284,7 +2284,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tlm", @@ -2294,7 +2294,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "loom", @@ -2304,7 +2304,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ant", @@ -2314,7 +2314,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "alice", @@ -2324,7 +2324,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fet", @@ -2334,7 +2334,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ygg", @@ -2344,7 +2344,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ark", @@ -2354,7 +2354,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "utk", @@ -2364,7 +2364,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "super", @@ -2374,7 +2374,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dusk", @@ -2384,7 +2384,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ilv", @@ -2394,7 +2394,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mbox", @@ -2404,7 +2404,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sun", @@ -2414,7 +2414,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "vra", @@ -2424,7 +2424,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "aergo", @@ -2434,7 +2434,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bake", @@ -2444,7 +2444,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xvg", @@ -2454,7 +2454,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dpi", @@ -2464,7 +2464,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "pols", @@ -2474,7 +2474,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mln", @@ -2484,7 +2484,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xcad", @@ -2494,7 +2494,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "divi", @@ -2504,7 +2504,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "divierc20", @@ -2515,7 +2515,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "sfp", @@ -2525,7 +2525,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tomo", @@ -2535,7 +2535,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "arpa", @@ -2545,7 +2545,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "band", @@ -2555,7 +2555,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bandmainnet", @@ -2566,7 +2566,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sps", @@ -2576,7 +2576,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ava", @@ -2586,7 +2586,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "avaerc20", @@ -2596,7 +2596,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "avabsc", @@ -2606,7 +2606,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "jasmy", @@ -2616,7 +2616,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cult", @@ -2626,7 +2626,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "starl", @@ -2636,7 +2636,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "aioz", @@ -2646,7 +2646,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "alpaca", @@ -2656,7 +2656,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "blz", @@ -2666,7 +2666,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "alcx", @@ -2676,7 +2676,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "kmd", @@ -2686,7 +2686,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "yfii", @@ -2696,7 +2696,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "unfi", @@ -2706,7 +2706,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "bel", @@ -2716,7 +2716,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mc", @@ -2726,7 +2726,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dia", @@ -2736,7 +2736,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tko", @@ -2746,7 +2746,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bcd", @@ -2756,7 +2756,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "anc", @@ -2766,7 +2766,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "farm", @@ -2776,7 +2776,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bifi", @@ -2786,7 +2786,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "ata", @@ -2796,7 +2796,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fio", @@ -2806,7 +2806,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ubt", @@ -2816,7 +2816,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "pit", @@ -2826,7 +2826,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "dnt", @@ -2836,7 +2836,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "burger", @@ -2846,7 +2846,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "om", @@ -2856,7 +2856,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "grs", @@ -2866,7 +2866,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gas", @@ -2876,7 +2876,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hoge", @@ -2886,7 +2886,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "fox", @@ -2896,7 +2896,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "firo", @@ -2906,7 +2906,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "aion", @@ -2916,7 +2916,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "adx", @@ -2926,7 +2926,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "nwc", @@ -2937,7 +2937,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "solve", @@ -2947,7 +2947,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cudos", @@ -2957,7 +2957,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rook", @@ -2967,7 +2967,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "klv", @@ -2977,7 +2977,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "front", @@ -2987,7 +2987,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "wtc", @@ -2997,7 +2997,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "beam", @@ -3007,7 +3007,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gto", @@ -3017,7 +3017,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "akro", @@ -3027,7 +3027,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mdt", @@ -3037,7 +3037,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hez", @@ -3047,7 +3047,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "pnk", @@ -3057,7 +3057,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ast", @@ -3067,7 +3067,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "snm", @@ -3077,7 +3077,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "qsp", @@ -3087,7 +3087,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "xdb", @@ -3097,7 +3097,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "pivx", @@ -3107,7 +3107,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mir", @@ -3117,7 +3117,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "perl", @@ -3127,7 +3127,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "go", @@ -3137,7 +3137,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "urus", @@ -3147,7 +3147,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cell", @@ -3157,7 +3157,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "arv", @@ -3167,7 +3167,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "caps", @@ -3177,7 +3177,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "wabi", @@ -3187,7 +3187,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "swftc", @@ -3197,7 +3197,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "shr", @@ -3207,7 +3207,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "san", @@ -3217,7 +3217,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dobo", @@ -3227,7 +3227,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "hc", @@ -3237,7 +3237,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "fuse", @@ -3247,7 +3247,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dogedash", @@ -3257,7 +3257,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "poolz", @@ -3267,7 +3267,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "vib", @@ -3277,7 +3277,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "now", @@ -3287,7 +3287,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "muse", @@ -3297,7 +3297,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mint", @@ -3307,7 +3307,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xor", @@ -3317,7 +3317,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mtv", @@ -3327,7 +3327,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "spi", @@ -3337,7 +3337,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "belt", @@ -3347,7 +3347,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ppt", @@ -3357,7 +3357,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "awc", @@ -3367,7 +3367,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "defit", @@ -3377,7 +3377,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "srk", @@ -3387,7 +3387,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "swrv", @@ -3397,7 +3397,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "pay", @@ -3407,7 +3407,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "lgcy", @@ -3417,7 +3417,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "nftb", @@ -3427,7 +3427,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "open", @@ -3437,7 +3437,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "hotcross", @@ -3447,7 +3447,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bin", @@ -3457,7 +3457,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rcn", @@ -3467,7 +3467,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "srn", @@ -3477,7 +3477,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "tking", @@ -3487,7 +3487,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mph", @@ -3497,7 +3497,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mda", @@ -3507,7 +3507,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "skill", @@ -3517,7 +3517,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xio", @@ -3527,7 +3527,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "zoon", @@ -3537,7 +3537,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "naft", @@ -3547,7 +3547,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lxt", @@ -3557,7 +3557,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "rainbow", @@ -3567,7 +3567,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "marsh", @@ -3577,7 +3577,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "spo", @@ -3587,7 +3587,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "brd", @@ -3597,7 +3597,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "eved", @@ -3607,7 +3607,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lead", @@ -3617,7 +3617,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cns", @@ -3627,7 +3627,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sfuel", @@ -3637,7 +3637,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bunny", @@ -3647,7 +3647,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "leash", @@ -3657,7 +3657,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "flokibsc", @@ -3667,7 +3667,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "floki", @@ -3677,7 +3677,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "volt", @@ -3687,7 +3687,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "brise", @@ -3697,7 +3697,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "kishu", @@ -3707,7 +3707,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "shinja", @@ -3717,7 +3717,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ntvrk", @@ -3727,7 +3727,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "akita", @@ -3737,7 +3737,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "zinu", @@ -3747,7 +3747,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gafa", @@ -3757,7 +3757,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rbif", @@ -3767,7 +3767,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "trvl", @@ -3777,7 +3777,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "kibabsc", @@ -3787,7 +3787,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "kiba", @@ -3797,7 +3797,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "guard", @@ -3807,7 +3807,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "feg", @@ -3817,7 +3817,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "fegbsc", @@ -3827,7 +3827,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "blocks", @@ -3837,7 +3837,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "copi", @@ -3847,7 +3847,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dogecoin", @@ -3857,7 +3857,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "klee", @@ -3867,7 +3867,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "lblock", @@ -3877,7 +3877,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gspi", @@ -3887,7 +3887,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "asia", @@ -3897,7 +3897,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "wise", @@ -3907,7 +3907,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gmr", @@ -3917,7 +3917,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "knc", @@ -3927,7 +3927,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fjb", @@ -3937,7 +3937,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tenfi", @@ -3947,7 +3947,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "btfa", @@ -3957,7 +3957,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "aquagoat", @@ -3967,7 +3967,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "titano", @@ -3977,7 +3977,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "sanshu", @@ -3987,7 +3987,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "avn", @@ -3997,7 +3997,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "geth", @@ -4007,7 +4007,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tenshi", @@ -4017,7 +4017,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "poodl", @@ -4027,7 +4027,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "pika", @@ -4037,7 +4037,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "defc", @@ -4047,7 +4047,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "keanu", @@ -4057,7 +4057,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "rxcg", @@ -4067,7 +4067,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "dgmoon", @@ -4077,7 +4077,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "koromaru", @@ -4087,7 +4087,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "nsh", @@ -4097,7 +4097,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "fluf", @@ -4107,7 +4107,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lof", @@ -4117,7 +4117,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hmc", @@ -4127,7 +4127,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "nyxt", @@ -4137,7 +4137,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usd", @@ -4147,7 +4147,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "gbp", @@ -4157,7 +4157,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "cad", @@ -4167,7 +4167,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "jpy", @@ -4177,7 +4177,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "rub", @@ -4187,7 +4187,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "aud", @@ -4197,7 +4197,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "chf", @@ -4207,7 +4207,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "czk", @@ -4217,7 +4217,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "dkk", @@ -4227,7 +4227,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "nok", @@ -4237,7 +4237,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "nzd", @@ -4247,7 +4247,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "pln", @@ -4257,7 +4257,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "sek", @@ -4267,7 +4267,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "try", @@ -4277,7 +4277,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "zar", @@ -4287,7 +4287,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "huf", @@ -4297,7 +4297,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "ils", @@ -4307,7 +4307,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "brl", @@ -4317,7 +4317,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "fetbsc", @@ -4327,7 +4327,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mononoke", @@ -4338,7 +4338,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "daibsc", @@ -4348,7 +4348,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "miota", @@ -4358,7 +4358,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "luffy", @@ -4368,7 +4368,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "vgx", @@ -4378,7 +4378,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdtsol", @@ -4389,7 +4389,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "nearbsc", @@ -4399,7 +4399,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "iotxbsc", @@ -4409,7 +4409,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "metiserc20", @@ -4419,7 +4419,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "nowbep2", @@ -4429,7 +4429,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "saitamav2", @@ -4439,7 +4439,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "vlxbsc", @@ -4449,7 +4449,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "dfibsc", @@ -4459,7 +4459,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "usdcsol", @@ -4469,7 +4469,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "clear", @@ -4479,7 +4479,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdcbsc", @@ -4489,7 +4489,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bttcbsc", @@ -4499,7 +4499,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "maticbsc", @@ -4509,7 +4509,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "avaxbsc", @@ -4519,7 +4519,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ppm", @@ -4529,7 +4529,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bttc", @@ -4539,7 +4539,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "trxbsc", @@ -4549,7 +4549,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "etcbsc", @@ -4559,7 +4559,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "atombsc", @@ -4569,7 +4569,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bchbsc", @@ -4579,7 +4579,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "vetbsc", @@ -4589,7 +4589,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "filbsc", @@ -4599,7 +4599,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "egldbsc", @@ -4609,7 +4609,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "axsbsc", @@ -4619,7 +4619,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tusdbsc", @@ -4629,7 +4629,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "eosbsc", @@ -4639,7 +4639,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mkrbsc", @@ -4649,7 +4649,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdpbsc", @@ -4659,7 +4659,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "daimatic", @@ -4669,7 +4669,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "zecbsc", @@ -4679,7 +4679,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ftmbsc", @@ -4689,7 +4689,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "manabsc", @@ -4699,7 +4699,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "batbsc", @@ -4709,7 +4709,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sxpmainnet", @@ -4720,7 +4720,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "zilbsc", @@ -4730,7 +4730,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "compbsc", @@ -4740,7 +4740,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "snxbsc", @@ -4750,7 +4750,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "solbsc", @@ -4760,7 +4760,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ceekerc20", @@ -4771,7 +4771,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "yfibsc", @@ -4781,7 +4781,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "kncbsc", @@ -4791,7 +4791,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "chrbsc", @@ -4801,7 +4801,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sushibsc", @@ -4811,7 +4811,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdtmatic", @@ -4821,7 +4821,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "ankrbsc", @@ -4831,7 +4831,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "celrbsc", @@ -4841,7 +4841,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sandmatic", @@ -4852,7 +4852,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "busdbnb", @@ -4862,7 +4862,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "xcnbsc", @@ -4872,7 +4872,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "plamatic", @@ -4882,7 +4882,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fluxerc20", @@ -4892,7 +4892,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "c98erc20", @@ -4902,7 +4902,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "krw", @@ -4912,7 +4912,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "world", @@ -4922,7 +4922,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "all", @@ -4932,7 +4932,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "amd", @@ -4942,7 +4942,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "ang", @@ -4952,7 +4952,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "bam", @@ -4962,7 +4962,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "bbd", @@ -4972,7 +4972,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "bdt", @@ -4982,7 +4982,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "bmd", @@ -4992,7 +4992,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "bnd", @@ -5002,7 +5002,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "bob", @@ -5012,7 +5012,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "bwp", @@ -5022,7 +5022,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "byn", @@ -5032,7 +5032,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "cny", @@ -5042,7 +5042,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "djf", @@ -5052,7 +5052,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "egp", @@ -5062,7 +5062,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "ghs", @@ -5072,7 +5072,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "gtq", @@ -5082,7 +5082,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "hnl", @@ -5092,7 +5092,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "hrk", @@ -5102,7 +5102,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "isk", @@ -5112,7 +5112,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "jmd", @@ -5122,7 +5122,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "kes", @@ -5132,7 +5132,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "kgs", @@ -5142,7 +5142,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "khr", @@ -5152,7 +5152,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "kyd", @@ -5162,7 +5162,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "lbp", @@ -5172,7 +5172,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "lkr", @@ -5182,7 +5182,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "mkd", @@ -5192,7 +5192,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "mnt", @@ -5202,7 +5202,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "mop", @@ -5212,7 +5212,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "mur", @@ -5222,7 +5222,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "mzn", @@ -5232,7 +5232,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "pab", @@ -5242,7 +5242,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "pgk", @@ -5252,7 +5252,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "pkr", @@ -5262,7 +5262,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "pyg", @@ -5272,7 +5272,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "rsd", @@ -5282,7 +5282,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "sos", @@ -5292,7 +5292,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "thb", @@ -5302,7 +5302,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "ttd", @@ -5312,7 +5312,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "tzs", @@ -5322,7 +5322,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "ugx", @@ -5332,7 +5332,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "xaf", @@ -5342,7 +5342,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "xof", @@ -5352,7 +5352,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "zmw", @@ -5362,7 +5362,7 @@ const List> availableCurrenciesJSON = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "momento", @@ -5372,7 +5372,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fire", @@ -5382,7 +5382,7 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ghc", @@ -5392,8 +5392,8 @@ const List> availableCurrenciesJSON = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true - } + "supportsFixedRate": true, + }, ]; const List> availableCurrenciesJSONActive = [ @@ -5405,7 +5405,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "eth", @@ -5415,7 +5415,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ethbsc", @@ -5425,7 +5425,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdt", @@ -5435,7 +5435,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdterc20", @@ -5446,7 +5446,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": true, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdttrc20", @@ -5457,7 +5457,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdtbsc", @@ -5467,7 +5467,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdc", @@ -5477,7 +5477,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": true, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdcmatic", @@ -5488,7 +5488,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bnbmainnet", @@ -5499,7 +5499,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bnbbsc", @@ -5509,7 +5509,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "busd", @@ -5519,7 +5519,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "busdbsc", @@ -5529,7 +5529,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xrp", @@ -5539,7 +5539,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xrpbsc", @@ -5549,7 +5549,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ada", @@ -5559,7 +5559,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "adabsc", @@ -5569,7 +5569,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sol", @@ -5579,7 +5579,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "doge", @@ -5589,7 +5589,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dot", @@ -5599,7 +5599,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dotbsc", @@ -5609,7 +5609,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dai", @@ -5619,7 +5619,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "matic", @@ -5629,7 +5629,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "maticmainnet", @@ -5640,7 +5640,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "shib", @@ -5650,7 +5650,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "shibbsc", @@ -5660,7 +5660,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "trx", @@ -5670,7 +5670,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "avax", @@ -5680,7 +5680,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "avaxc", @@ -5690,7 +5690,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "wbtc", @@ -5700,7 +5700,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "leo", @@ -5710,7 +5710,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "uni", @@ -5720,7 +5720,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "etc", @@ -5730,7 +5730,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ltc", @@ -5740,7 +5740,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ltcbsc", @@ -5750,7 +5750,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ftt", @@ -5760,7 +5760,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "link", @@ -5770,7 +5770,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "atom", @@ -5780,7 +5780,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cro", @@ -5790,7 +5790,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "near", @@ -5800,7 +5800,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xmr", @@ -5810,7 +5810,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xlm", @@ -5820,7 +5820,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bch", @@ -5830,7 +5830,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "algo", @@ -5840,7 +5840,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "flow", @@ -5850,7 +5850,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "vet", @@ -5860,7 +5860,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "icp", @@ -5870,7 +5870,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fil", @@ -5880,7 +5880,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ape", @@ -5890,7 +5890,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "eos", @@ -5900,7 +5900,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mana", @@ -5910,7 +5910,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sand", @@ -5920,7 +5920,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hbar", @@ -5930,7 +5930,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xtz", @@ -5940,7 +5940,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xtzbsc", @@ -5950,7 +5950,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "chz", @@ -5960,7 +5960,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "qnt", @@ -5970,7 +5970,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "egld", @@ -5980,7 +5980,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "aave", @@ -5990,7 +5990,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "theta", @@ -6000,7 +6000,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "axs", @@ -6010,7 +6010,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tusd", @@ -6020,7 +6020,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bsv", @@ -6030,7 +6030,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "okb", @@ -6040,7 +6040,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "galabsc", @@ -6050,7 +6050,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "zec", @@ -6060,7 +6060,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdp", @@ -6070,7 +6070,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bttbsc", @@ -6080,7 +6080,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "iota", @@ -6090,7 +6090,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mkr", @@ -6100,7 +6100,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hnt", @@ -6110,7 +6110,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ht", @@ -6120,7 +6120,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "snx", @@ -6130,7 +6130,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "grt", @@ -6140,7 +6140,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "klay", @@ -6150,7 +6150,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ftm", @@ -6160,7 +6160,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ftmmainnet", @@ -6170,7 +6170,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "neo", @@ -6180,7 +6180,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rune", @@ -6190,7 +6190,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "paxg", @@ -6200,7 +6200,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ldo", @@ -6210,7 +6210,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cake", @@ -6220,7 +6220,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "crv", @@ -6230,7 +6230,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "nexo", @@ -6240,7 +6240,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bat", @@ -6250,7 +6250,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dash", @@ -6260,7 +6260,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "waves", @@ -6270,7 +6270,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "zil", @@ -6280,7 +6280,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lrc", @@ -6290,7 +6290,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "enj", @@ -6300,7 +6300,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ksm", @@ -6310,7 +6310,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dcr", @@ -6320,7 +6320,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "btg", @@ -6330,7 +6330,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gmt", @@ -6340,7 +6340,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gno", @@ -6350,7 +6350,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "twt", @@ -6360,7 +6360,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xem", @@ -6370,7 +6370,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "1inch", @@ -6380,7 +6380,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "1inchbsc", @@ -6390,7 +6390,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "celo", @@ -6400,7 +6400,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hot", @@ -6410,7 +6410,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "galaerc20", @@ -6421,7 +6421,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ankr", @@ -6431,7 +6431,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "comp", @@ -6441,7 +6441,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gt", @@ -6451,7 +6451,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "cvx", @@ -6461,7 +6461,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "qtum", @@ -6471,7 +6471,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "yfi", @@ -6481,7 +6481,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xdc", @@ -6491,7 +6491,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "iotx", @@ -6501,7 +6501,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cel", @@ -6511,7 +6511,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gusd", @@ -6521,7 +6521,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tfuel", @@ -6531,7 +6531,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rvn", @@ -6541,7 +6541,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "flux", @@ -6551,7 +6551,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bal", @@ -6561,7 +6561,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "amp", @@ -6571,7 +6571,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "omg", @@ -6581,7 +6581,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "zrx", @@ -6591,7 +6591,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rsr", @@ -6601,7 +6601,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "one", @@ -6611,7 +6611,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "jst", @@ -6621,7 +6621,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "icx", @@ -6631,7 +6631,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xym", @@ -6641,7 +6641,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "iost", @@ -6651,7 +6651,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ens", @@ -6661,7 +6661,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lpt", @@ -6671,7 +6671,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "glm", @@ -6681,7 +6681,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "audio", @@ -6691,7 +6691,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "storj", @@ -6701,7 +6701,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ont", @@ -6711,7 +6711,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ontbsc", @@ -6721,7 +6721,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "waxp", @@ -6731,7 +6731,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "srm", @@ -6741,7 +6741,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sc", @@ -6751,7 +6751,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "imx", @@ -6761,7 +6761,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "zen", @@ -6771,7 +6771,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "uma", @@ -6781,7 +6781,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "scrt", @@ -6791,7 +6791,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mxc", @@ -6801,7 +6801,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "btrst", @@ -6811,7 +6811,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "skl", @@ -6821,7 +6821,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "poly", @@ -6831,7 +6831,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "slp", @@ -6841,7 +6841,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "woobsc", @@ -6851,7 +6851,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "woo", @@ -6861,7 +6861,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "chsb", @@ -6871,7 +6871,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cspr", @@ -6881,7 +6881,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "dgb", @@ -6891,7 +6891,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "eur", @@ -6901,7 +6901,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "elon", @@ -6911,7 +6911,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dao", @@ -6921,7 +6921,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "pla", @@ -6931,7 +6931,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cvc", @@ -6941,7 +6941,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ceek", @@ -6951,7 +6951,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "spell", @@ -6961,7 +6961,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rndr", @@ -6971,7 +6971,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sushi", @@ -6981,7 +6981,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "btcst", @@ -6991,7 +6991,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lsk", @@ -7001,7 +7001,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "eps", @@ -7011,7 +7011,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "pundix", @@ -7021,7 +7021,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "celr", @@ -7031,7 +7031,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ren", @@ -7041,7 +7041,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "nano", @@ -7051,7 +7051,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xyo", @@ -7061,7 +7061,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "win", @@ -7071,7 +7071,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ong", @@ -7081,7 +7081,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "people", @@ -7091,7 +7091,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "uos", @@ -7101,7 +7101,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cfx", @@ -7111,7 +7111,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "req", @@ -7121,7 +7121,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tribe", @@ -7131,7 +7131,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "dydx", @@ -7141,7 +7141,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ardr", @@ -7151,7 +7151,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rly", @@ -7161,7 +7161,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "coti", @@ -7171,7 +7171,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mx", @@ -7181,7 +7181,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "rlc", @@ -7191,7 +7191,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "powr", @@ -7201,7 +7201,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "nmr", @@ -7211,7 +7211,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "snt", @@ -7221,7 +7221,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ocean", @@ -7231,7 +7231,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "chr", @@ -7241,7 +7241,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "api3", @@ -7251,7 +7251,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dent", @@ -7261,7 +7261,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bnt", @@ -7271,7 +7271,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fxs", @@ -7281,7 +7281,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hex", @@ -7291,7 +7291,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "steth", @@ -7301,7 +7301,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "btcb", @@ -7311,7 +7311,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lunc", @@ -7321,7 +7321,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dfi", @@ -7331,7 +7331,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bnx", @@ -7341,7 +7341,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rpl", @@ -7351,7 +7351,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "luna", @@ -7361,7 +7361,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "husd", @@ -7371,7 +7371,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "babydoge", @@ -7381,7 +7381,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "metis", @@ -7391,7 +7391,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "raca", @@ -7401,7 +7401,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "prom", @@ -7411,7 +7411,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "sys", @@ -7421,7 +7421,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gal", @@ -7431,7 +7431,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bico", @@ -7441,7 +7441,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "steem", @@ -7451,7 +7451,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "c98", @@ -7461,7 +7461,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "susd", @@ -7471,7 +7471,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ctsi", @@ -7481,7 +7481,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hxro", @@ -7491,7 +7491,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rep", @@ -7501,7 +7501,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fun", @@ -7511,7 +7511,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "pyr", @@ -7521,7 +7521,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "strax", @@ -7531,7 +7531,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bsw", @@ -7541,7 +7541,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lyxe", @@ -7551,7 +7551,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mtl", @@ -7561,7 +7561,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "stmx", @@ -7571,7 +7571,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "stpt", @@ -7581,7 +7581,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "elf", @@ -7591,7 +7591,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "oxt", @@ -7601,7 +7601,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ufo", @@ -7611,7 +7611,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ach", @@ -7621,7 +7621,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ogn", @@ -7631,7 +7631,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sfund", @@ -7641,7 +7641,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tlm", @@ -7651,7 +7651,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "loom", @@ -7661,7 +7661,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ant", @@ -7671,7 +7671,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "alice", @@ -7681,7 +7681,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fet", @@ -7691,7 +7691,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ygg", @@ -7701,7 +7701,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ark", @@ -7711,7 +7711,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "utk", @@ -7721,7 +7721,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "super", @@ -7731,7 +7731,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dusk", @@ -7741,7 +7741,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ilv", @@ -7751,7 +7751,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mbox", @@ -7761,7 +7761,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sun", @@ -7771,7 +7771,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "aergo", @@ -7781,7 +7781,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "vra", @@ -7791,7 +7791,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bake", @@ -7801,7 +7801,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xvg", @@ -7811,7 +7811,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dpi", @@ -7821,7 +7821,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "pols", @@ -7831,7 +7831,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mln", @@ -7841,7 +7841,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xcad", @@ -7851,7 +7851,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "divi", @@ -7861,7 +7861,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "divierc20", @@ -7872,7 +7872,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "sfp", @@ -7882,7 +7882,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tomo", @@ -7892,7 +7892,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "arpa", @@ -7902,7 +7902,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "band", @@ -7912,7 +7912,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bandmainnet", @@ -7923,7 +7923,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sps", @@ -7933,7 +7933,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ava", @@ -7943,7 +7943,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "avaerc20", @@ -7953,7 +7953,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "avabsc", @@ -7963,7 +7963,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "jasmy", @@ -7973,7 +7973,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cult", @@ -7983,7 +7983,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "starl", @@ -7993,7 +7993,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "aioz", @@ -8003,7 +8003,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "alpaca", @@ -8013,7 +8013,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "blz", @@ -8023,7 +8023,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "kmd", @@ -8033,7 +8033,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "alcx", @@ -8043,7 +8043,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "yfii", @@ -8053,7 +8053,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "unfi", @@ -8063,7 +8063,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "bel", @@ -8073,7 +8073,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mc", @@ -8083,7 +8083,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dia", @@ -8093,7 +8093,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tko", @@ -8103,7 +8103,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bcd", @@ -8113,7 +8113,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "farm", @@ -8123,7 +8123,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bifi", @@ -8133,7 +8133,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "ata", @@ -8143,7 +8143,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fio", @@ -8153,7 +8153,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ubt", @@ -8163,7 +8163,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "pit", @@ -8173,7 +8173,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "dnt", @@ -8183,7 +8183,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "burger", @@ -8193,7 +8193,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "grs", @@ -8203,7 +8203,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "om", @@ -8213,7 +8213,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gas", @@ -8223,7 +8223,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hoge", @@ -8233,7 +8233,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "fox", @@ -8243,7 +8243,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "firo", @@ -8253,7 +8253,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "aion", @@ -8263,7 +8263,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "adx", @@ -8273,7 +8273,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "nwc", @@ -8284,7 +8284,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cudos", @@ -8294,7 +8294,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "solve", @@ -8304,7 +8304,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "klv", @@ -8314,7 +8314,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rook", @@ -8324,7 +8324,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "front", @@ -8334,7 +8334,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "wtc", @@ -8344,7 +8344,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "beam", @@ -8354,7 +8354,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gto", @@ -8364,7 +8364,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "akro", @@ -8374,7 +8374,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mdt", @@ -8384,7 +8384,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hez", @@ -8394,7 +8394,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "pnk", @@ -8404,7 +8404,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ast", @@ -8414,7 +8414,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "snm", @@ -8424,7 +8424,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "qsp", @@ -8434,7 +8434,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "pivx", @@ -8444,7 +8444,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xdb", @@ -8454,7 +8454,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mir", @@ -8464,7 +8464,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "perl", @@ -8474,7 +8474,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "go", @@ -8484,7 +8484,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "urus", @@ -8494,7 +8494,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "arv", @@ -8504,7 +8504,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cell", @@ -8514,7 +8514,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "caps", @@ -8524,7 +8524,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "wabi", @@ -8534,7 +8534,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "swftc", @@ -8544,7 +8544,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "shr", @@ -8554,7 +8554,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "san", @@ -8564,7 +8564,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dobo", @@ -8574,7 +8574,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "hc", @@ -8584,7 +8584,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "fuse", @@ -8594,7 +8594,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dogedash", @@ -8604,7 +8604,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "poolz", @@ -8614,7 +8614,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "vib", @@ -8624,7 +8624,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "now", @@ -8634,7 +8634,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "muse", @@ -8644,7 +8644,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mint", @@ -8654,7 +8654,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xor", @@ -8664,7 +8664,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mtv", @@ -8674,7 +8674,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "spi", @@ -8684,7 +8684,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "belt", @@ -8694,7 +8694,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ppt", @@ -8704,7 +8704,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "awc", @@ -8714,7 +8714,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "defit", @@ -8724,7 +8724,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "srk", @@ -8734,7 +8734,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "swrv", @@ -8744,7 +8744,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "pay", @@ -8754,7 +8754,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "lgcy", @@ -8764,7 +8764,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "nftb", @@ -8774,7 +8774,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "open", @@ -8784,7 +8784,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "hotcross", @@ -8794,7 +8794,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bin", @@ -8804,7 +8804,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rcn", @@ -8814,7 +8814,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "srn", @@ -8824,7 +8824,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "tking", @@ -8834,7 +8834,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mph", @@ -8844,7 +8844,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mda", @@ -8854,7 +8854,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "skill", @@ -8864,7 +8864,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xio", @@ -8874,7 +8874,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "zoon", @@ -8884,7 +8884,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lxt", @@ -8894,7 +8894,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "naft", @@ -8904,7 +8904,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rainbow", @@ -8914,7 +8914,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "marsh", @@ -8924,7 +8924,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "spo", @@ -8934,7 +8934,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "brd", @@ -8944,7 +8944,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "eved", @@ -8954,7 +8954,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lead", @@ -8964,7 +8964,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cns", @@ -8974,7 +8974,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sfuel", @@ -8984,7 +8984,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bunny", @@ -8994,7 +8994,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "leash", @@ -9004,7 +9004,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "flokibsc", @@ -9014,7 +9014,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "floki", @@ -9024,7 +9024,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "volt", @@ -9034,7 +9034,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "brise", @@ -9044,7 +9044,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "kishu", @@ -9054,7 +9054,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "shinja", @@ -9064,7 +9064,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ntvrk", @@ -9074,7 +9074,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "akita", @@ -9084,7 +9084,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "zinu", @@ -9094,7 +9094,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gafa", @@ -9104,7 +9104,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rbif", @@ -9114,7 +9114,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "trvl", @@ -9124,7 +9124,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "kibabsc", @@ -9134,7 +9134,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "kiba", @@ -9144,7 +9144,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "guard", @@ -9154,7 +9154,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "feg", @@ -9164,7 +9164,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "fegbsc", @@ -9174,7 +9174,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "blocks", @@ -9184,7 +9184,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "copi", @@ -9194,7 +9194,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dogecoin", @@ -9204,7 +9204,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "klee", @@ -9214,7 +9214,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "lblock", @@ -9224,7 +9224,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gspi", @@ -9234,7 +9234,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "asia", @@ -9244,7 +9244,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "wise", @@ -9254,7 +9254,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gmr", @@ -9264,7 +9264,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "knc", @@ -9274,7 +9274,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fjb", @@ -9284,7 +9284,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tenfi", @@ -9294,7 +9294,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "btfa", @@ -9304,7 +9304,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "aquagoat", @@ -9314,7 +9314,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "titano", @@ -9324,7 +9324,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "sanshu", @@ -9334,7 +9334,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "avn", @@ -9344,7 +9344,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tenshi", @@ -9354,7 +9354,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "poodl", @@ -9364,7 +9364,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "pika", @@ -9374,7 +9374,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "geth", @@ -9384,7 +9384,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "defc", @@ -9394,7 +9394,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "keanu", @@ -9404,7 +9404,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "dgmoon", @@ -9414,7 +9414,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "koromaru", @@ -9424,7 +9424,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "nsh", @@ -9434,7 +9434,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "fluf", @@ -9444,7 +9444,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lof", @@ -9454,7 +9454,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hmc", @@ -9464,7 +9464,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "nyxt", @@ -9474,7 +9474,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usd", @@ -9484,7 +9484,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "gbp", @@ -9494,7 +9494,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "cad", @@ -9504,7 +9504,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "jpy", @@ -9514,7 +9514,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "rub", @@ -9524,7 +9524,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "aud", @@ -9534,7 +9534,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "chf", @@ -9544,7 +9544,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "czk", @@ -9554,7 +9554,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "dkk", @@ -9564,7 +9564,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "nok", @@ -9574,7 +9574,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "nzd", @@ -9584,7 +9584,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "pln", @@ -9594,7 +9594,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "sek", @@ -9604,7 +9604,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "try", @@ -9614,7 +9614,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "zar", @@ -9624,7 +9624,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "huf", @@ -9634,7 +9634,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "ils", @@ -9644,7 +9644,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "brl", @@ -9654,7 +9654,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "fetbsc", @@ -9664,7 +9664,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mononoke", @@ -9675,7 +9675,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "daibsc", @@ -9685,7 +9685,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "miota", @@ -9695,7 +9695,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "luffy", @@ -9705,7 +9705,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "vgx", @@ -9715,7 +9715,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdtsol", @@ -9726,7 +9726,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "nearbsc", @@ -9736,7 +9736,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "iotxbsc", @@ -9746,7 +9746,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "metiserc20", @@ -9756,7 +9756,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "nowbep2", @@ -9766,7 +9766,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "saitamav2", @@ -9776,7 +9776,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "vlxbsc", @@ -9786,7 +9786,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "dfibsc", @@ -9796,7 +9796,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "usdcsol", @@ -9806,7 +9806,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "clear", @@ -9816,7 +9816,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdcbsc", @@ -9826,7 +9826,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bttcbsc", @@ -9836,7 +9836,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "maticbsc", @@ -9846,7 +9846,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "avaxbsc", @@ -9856,7 +9856,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ppm", @@ -9866,7 +9866,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bttc", @@ -9876,7 +9876,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "trxbsc", @@ -9886,7 +9886,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "etcbsc", @@ -9896,7 +9896,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "atombsc", @@ -9906,7 +9906,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bchbsc", @@ -9916,7 +9916,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "vetbsc", @@ -9926,7 +9926,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "filbsc", @@ -9936,7 +9936,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "egldbsc", @@ -9946,7 +9946,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "axsbsc", @@ -9956,7 +9956,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tusdbsc", @@ -9966,7 +9966,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "eosbsc", @@ -9976,7 +9976,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mkrbsc", @@ -9986,7 +9986,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdpbsc", @@ -9996,7 +9996,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "daimatic", @@ -10006,7 +10006,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "zecbsc", @@ -10016,7 +10016,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ftmbsc", @@ -10026,7 +10026,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "manabsc", @@ -10036,7 +10036,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "batbsc", @@ -10046,7 +10046,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sxpmainnet", @@ -10057,7 +10057,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "zilbsc", @@ -10067,7 +10067,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "compbsc", @@ -10077,7 +10077,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "snxbsc", @@ -10087,7 +10087,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "solbsc", @@ -10097,7 +10097,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ceekerc20", @@ -10108,7 +10108,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "yfibsc", @@ -10118,7 +10118,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "kncbsc", @@ -10128,7 +10128,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "chrbsc", @@ -10138,7 +10138,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sushibsc", @@ -10148,7 +10148,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdtmatic", @@ -10158,7 +10158,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "ankrbsc", @@ -10168,7 +10168,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "celrbsc", @@ -10178,7 +10178,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sandmatic", @@ -10189,7 +10189,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xcnbsc", @@ -10199,7 +10199,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "plamatic", @@ -10209,7 +10209,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fluxerc20", @@ -10219,7 +10219,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "c98erc20", @@ -10229,7 +10229,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "krw", @@ -10239,7 +10239,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "world", @@ -10249,7 +10249,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "all", @@ -10259,7 +10259,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "amd", @@ -10269,7 +10269,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "ang", @@ -10279,7 +10279,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "bam", @@ -10289,7 +10289,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "bbd", @@ -10299,7 +10299,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "bdt", @@ -10309,7 +10309,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "bmd", @@ -10319,7 +10319,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "bnd", @@ -10329,7 +10329,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "bob", @@ -10339,7 +10339,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "bwp", @@ -10349,7 +10349,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "byn", @@ -10359,7 +10359,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "cny", @@ -10369,7 +10369,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "djf", @@ -10379,7 +10379,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "egp", @@ -10389,7 +10389,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "ghs", @@ -10399,7 +10399,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "gtq", @@ -10409,7 +10409,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "hnl", @@ -10419,7 +10419,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "hrk", @@ -10429,7 +10429,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "isk", @@ -10439,7 +10439,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "jmd", @@ -10449,7 +10449,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "kes", @@ -10459,7 +10459,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "kgs", @@ -10469,7 +10469,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "khr", @@ -10479,7 +10479,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "kyd", @@ -10489,7 +10489,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "lbp", @@ -10499,7 +10499,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "lkr", @@ -10509,7 +10509,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "mkd", @@ -10519,7 +10519,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "mnt", @@ -10529,7 +10529,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "mop", @@ -10539,7 +10539,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "mur", @@ -10549,7 +10549,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "mzn", @@ -10559,7 +10559,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "pab", @@ -10569,7 +10569,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "pgk", @@ -10579,7 +10579,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "pkr", @@ -10589,7 +10589,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "pyg", @@ -10599,7 +10599,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "rsd", @@ -10609,7 +10609,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "sos", @@ -10619,7 +10619,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "thb", @@ -10629,7 +10629,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "ttd", @@ -10639,7 +10639,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "tzs", @@ -10649,7 +10649,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "ugx", @@ -10659,7 +10659,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "xaf", @@ -10669,7 +10669,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "xof", @@ -10679,7 +10679,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "zmw", @@ -10689,7 +10689,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": true, "featured": false, "isStable": false, - "supportsFixedRate": false + "supportsFixedRate": false, }, { "ticker": "momento", @@ -10699,7 +10699,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fire", @@ -10709,7 +10709,7 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ghc", @@ -10719,8 +10719,8 @@ const List> availableCurrenciesJSONActive = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true - } + "supportsFixedRate": true, + }, ]; const List> availableCurrenciesJSONFixedRate = [ @@ -10732,7 +10732,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "eth", @@ -10742,7 +10742,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ethbsc", @@ -10752,7 +10752,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdt", @@ -10762,7 +10762,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdterc20", @@ -10773,7 +10773,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": true, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdttrc20", @@ -10784,7 +10784,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdtbsc", @@ -10794,7 +10794,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdc", @@ -10804,7 +10804,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": true, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdcmatic", @@ -10815,7 +10815,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bnbmainnet", @@ -10826,7 +10826,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bnbbsc", @@ -10836,7 +10836,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "busd", @@ -10846,7 +10846,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "busdbsc", @@ -10856,7 +10856,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xrp", @@ -10866,7 +10866,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xrpbsc", @@ -10876,7 +10876,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ada", @@ -10886,7 +10886,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "adabsc", @@ -10896,7 +10896,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sol", @@ -10906,7 +10906,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "doge", @@ -10916,7 +10916,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dot", @@ -10926,7 +10926,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dotbsc", @@ -10936,7 +10936,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dai", @@ -10946,7 +10946,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "matic", @@ -10956,7 +10956,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "maticmainnet", @@ -10967,7 +10967,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "shib", @@ -10977,7 +10977,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "shibbsc", @@ -10987,7 +10987,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "trx", @@ -10997,7 +10997,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "avax", @@ -11007,7 +11007,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "avaxc", @@ -11017,7 +11017,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "wbtc", @@ -11027,7 +11027,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "leo", @@ -11037,7 +11037,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "uni", @@ -11047,7 +11047,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "etc", @@ -11057,7 +11057,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ltc", @@ -11067,7 +11067,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ltcbsc", @@ -11077,7 +11077,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ftt", @@ -11087,7 +11087,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "link", @@ -11097,7 +11097,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "atom", @@ -11107,7 +11107,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cro", @@ -11117,7 +11117,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "near", @@ -11127,7 +11127,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xmr", @@ -11137,7 +11137,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xlm", @@ -11147,7 +11147,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bch", @@ -11157,7 +11157,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "algo", @@ -11167,7 +11167,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "flow", @@ -11177,7 +11177,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "vet", @@ -11187,7 +11187,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "icp", @@ -11197,7 +11197,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fil", @@ -11207,7 +11207,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ape", @@ -11217,7 +11217,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "eos", @@ -11227,7 +11227,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mana", @@ -11237,7 +11237,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sand", @@ -11247,7 +11247,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hbar", @@ -11257,7 +11257,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xtz", @@ -11267,7 +11267,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xtzbsc", @@ -11277,7 +11277,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "chz", @@ -11287,7 +11287,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "qnt", @@ -11297,7 +11297,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "egld", @@ -11307,7 +11307,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "aave", @@ -11317,7 +11317,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "theta", @@ -11327,7 +11327,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "axs", @@ -11337,7 +11337,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tusd", @@ -11347,7 +11347,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bsv", @@ -11357,7 +11357,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "okb", @@ -11367,7 +11367,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "galabsc", @@ -11377,7 +11377,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "zec", @@ -11387,7 +11387,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdp", @@ -11397,7 +11397,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bttbsc", @@ -11407,7 +11407,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "iota", @@ -11417,7 +11417,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mkr", @@ -11427,7 +11427,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hnt", @@ -11437,7 +11437,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ht", @@ -11447,7 +11447,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "snx", @@ -11457,7 +11457,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "grt", @@ -11467,7 +11467,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "klay", @@ -11477,7 +11477,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ftm", @@ -11487,7 +11487,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ftmmainnet", @@ -11497,7 +11497,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "neo", @@ -11507,7 +11507,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "paxg", @@ -11517,7 +11517,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ldo", @@ -11527,7 +11527,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cake", @@ -11537,7 +11537,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "crv", @@ -11547,7 +11547,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "nexo", @@ -11557,7 +11557,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bat", @@ -11567,7 +11567,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dash", @@ -11577,7 +11577,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "waves", @@ -11587,7 +11587,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "zil", @@ -11597,7 +11597,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lrc", @@ -11607,7 +11607,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "enj", @@ -11617,7 +11617,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ksm", @@ -11627,7 +11627,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dcr", @@ -11637,7 +11637,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "btg", @@ -11647,7 +11647,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gmt", @@ -11657,7 +11657,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gno", @@ -11667,7 +11667,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "twt", @@ -11677,7 +11677,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xem", @@ -11687,7 +11687,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "1inch", @@ -11697,7 +11697,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "1inchbsc", @@ -11707,7 +11707,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "celo", @@ -11717,7 +11717,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hot", @@ -11727,7 +11727,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "galaerc20", @@ -11738,7 +11738,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ankr", @@ -11748,7 +11748,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "comp", @@ -11758,7 +11758,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cvx", @@ -11768,7 +11768,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "qtum", @@ -11778,7 +11778,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "yfi", @@ -11788,7 +11788,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xdc", @@ -11798,7 +11798,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "iotx", @@ -11808,7 +11808,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cel", @@ -11818,7 +11818,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gusd", @@ -11828,7 +11828,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tfuel", @@ -11838,7 +11838,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rvn", @@ -11848,7 +11848,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "flux", @@ -11858,7 +11858,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bal", @@ -11868,7 +11868,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "amp", @@ -11878,7 +11878,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "omg", @@ -11888,7 +11888,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "zrx", @@ -11898,7 +11898,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rsr", @@ -11908,7 +11908,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "one", @@ -11918,7 +11918,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "jst", @@ -11928,7 +11928,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "icx", @@ -11938,7 +11938,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xym", @@ -11948,7 +11948,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "iost", @@ -11958,7 +11958,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ens", @@ -11968,7 +11968,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lpt", @@ -11978,7 +11978,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "glm", @@ -11988,7 +11988,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "audio", @@ -11998,7 +11998,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "storj", @@ -12008,7 +12008,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ont", @@ -12018,7 +12018,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ontbsc", @@ -12028,7 +12028,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "waxp", @@ -12038,7 +12038,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "srm", @@ -12048,7 +12048,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sc", @@ -12058,7 +12058,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "imx", @@ -12068,7 +12068,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "zen", @@ -12078,7 +12078,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "uma", @@ -12088,7 +12088,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "scrt", @@ -12098,7 +12098,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "skl", @@ -12108,7 +12108,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "poly", @@ -12118,7 +12118,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "slp", @@ -12128,7 +12128,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "woobsc", @@ -12138,7 +12138,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "woo", @@ -12148,7 +12148,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "chsb", @@ -12158,7 +12158,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dgb", @@ -12168,7 +12168,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "elon", @@ -12178,7 +12178,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dao", @@ -12188,7 +12188,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "pla", @@ -12198,7 +12198,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cvc", @@ -12208,7 +12208,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "spell", @@ -12218,7 +12218,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rndr", @@ -12228,7 +12228,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sushi", @@ -12238,7 +12238,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "btcst", @@ -12248,7 +12248,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lsk", @@ -12258,7 +12258,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "eps", @@ -12268,7 +12268,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "pundix", @@ -12278,7 +12278,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "celr", @@ -12288,7 +12288,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ren", @@ -12298,7 +12298,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "nano", @@ -12308,7 +12308,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xyo", @@ -12318,7 +12318,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "win", @@ -12328,7 +12328,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ong", @@ -12338,7 +12338,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "people", @@ -12348,7 +12348,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "uos", @@ -12358,7 +12358,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cfx", @@ -12368,7 +12368,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "req", @@ -12378,7 +12378,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dydx", @@ -12388,7 +12388,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ardr", @@ -12398,7 +12398,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rly", @@ -12408,7 +12408,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "coti", @@ -12418,7 +12418,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rlc", @@ -12428,7 +12428,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "powr", @@ -12438,7 +12438,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "nmr", @@ -12448,7 +12448,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "snt", @@ -12458,7 +12458,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ocean", @@ -12468,7 +12468,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "chr", @@ -12478,7 +12478,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "api3", @@ -12488,7 +12488,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dent", @@ -12498,7 +12498,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bnt", @@ -12508,7 +12508,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fxs", @@ -12518,7 +12518,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hex", @@ -12528,7 +12528,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "steth", @@ -12538,7 +12538,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "btcb", @@ -12548,7 +12548,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lunc", @@ -12558,7 +12558,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dfi", @@ -12568,7 +12568,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bnx", @@ -12578,7 +12578,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rpl", @@ -12588,7 +12588,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "luna", @@ -12598,7 +12598,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "babydoge", @@ -12608,7 +12608,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "raca", @@ -12618,7 +12618,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sys", @@ -12628,7 +12628,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gal", @@ -12638,7 +12638,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bico", @@ -12648,7 +12648,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "steem", @@ -12658,7 +12658,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "c98", @@ -12668,7 +12668,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "susd", @@ -12678,7 +12678,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ctsi", @@ -12688,7 +12688,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hxro", @@ -12698,7 +12698,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rep", @@ -12708,7 +12708,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fun", @@ -12718,7 +12718,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "pyr", @@ -12728,7 +12728,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "strax", @@ -12738,7 +12738,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bsw", @@ -12748,7 +12748,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lyxe", @@ -12758,7 +12758,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mtl", @@ -12768,7 +12768,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "stmx", @@ -12778,7 +12778,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "stpt", @@ -12788,7 +12788,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "elf", @@ -12798,7 +12798,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "oxt", @@ -12808,7 +12808,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ufo", @@ -12818,7 +12818,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ach", @@ -12828,7 +12828,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ogn", @@ -12838,7 +12838,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sfund", @@ -12848,7 +12848,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tlm", @@ -12858,7 +12858,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "loom", @@ -12868,7 +12868,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ant", @@ -12878,7 +12878,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "alice", @@ -12888,7 +12888,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fet", @@ -12898,7 +12898,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ygg", @@ -12908,7 +12908,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ark", @@ -12918,7 +12918,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "utk", @@ -12928,7 +12928,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "super", @@ -12938,7 +12938,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dusk", @@ -12948,7 +12948,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ilv", @@ -12958,7 +12958,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mbox", @@ -12968,7 +12968,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sun", @@ -12978,7 +12978,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "aergo", @@ -12988,7 +12988,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "vra", @@ -12998,7 +12998,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bake", @@ -13008,7 +13008,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xvg", @@ -13018,7 +13018,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dpi", @@ -13028,7 +13028,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "pols", @@ -13038,7 +13038,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mln", @@ -13048,7 +13048,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xcad", @@ -13058,7 +13058,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "divi", @@ -13068,7 +13068,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sfp", @@ -13078,7 +13078,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tomo", @@ -13088,7 +13088,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "arpa", @@ -13098,7 +13098,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "band", @@ -13108,7 +13108,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bandmainnet", @@ -13119,7 +13119,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sps", @@ -13129,7 +13129,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ava", @@ -13139,7 +13139,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "avaerc20", @@ -13149,7 +13149,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "avabsc", @@ -13159,7 +13159,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "jasmy", @@ -13169,7 +13169,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cult", @@ -13179,7 +13179,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "starl", @@ -13189,7 +13189,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "alpaca", @@ -13199,7 +13199,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "blz", @@ -13209,7 +13209,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "kmd", @@ -13219,7 +13219,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "alcx", @@ -13229,7 +13229,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "yfii", @@ -13239,7 +13239,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bel", @@ -13249,7 +13249,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mc", @@ -13259,7 +13259,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dia", @@ -13269,7 +13269,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tko", @@ -13279,7 +13279,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bcd", @@ -13289,7 +13289,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "farm", @@ -13299,7 +13299,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ata", @@ -13309,7 +13309,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fio", @@ -13319,7 +13319,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ubt", @@ -13329,7 +13329,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dnt", @@ -13339,7 +13339,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "grs", @@ -13349,7 +13349,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "om", @@ -13359,7 +13359,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gas", @@ -13369,7 +13369,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fox", @@ -13379,7 +13379,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "firo", @@ -13389,7 +13389,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "aion", @@ -13399,7 +13399,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "adx", @@ -13409,7 +13409,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "nwc", @@ -13420,7 +13420,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cudos", @@ -13430,7 +13430,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "solve", @@ -13440,7 +13440,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "klv", @@ -13450,7 +13450,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rook", @@ -13460,7 +13460,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "front", @@ -13470,7 +13470,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "wtc", @@ -13480,7 +13480,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "beam", @@ -13490,7 +13490,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gto", @@ -13500,7 +13500,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "akro", @@ -13510,7 +13510,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mdt", @@ -13520,7 +13520,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hez", @@ -13530,7 +13530,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "pnk", @@ -13540,7 +13540,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ast", @@ -13550,7 +13550,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "snm", @@ -13560,7 +13560,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "pivx", @@ -13570,7 +13570,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xdb", @@ -13580,7 +13580,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mir", @@ -13590,7 +13590,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "perl", @@ -13600,7 +13600,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "go", @@ -13610,7 +13610,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "urus", @@ -13620,7 +13620,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "arv", @@ -13630,7 +13630,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cell", @@ -13640,7 +13640,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "caps", @@ -13650,7 +13650,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "wabi", @@ -13660,7 +13660,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "shr", @@ -13670,7 +13670,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "san", @@ -13680,7 +13680,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fuse", @@ -13690,7 +13690,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "poolz", @@ -13700,7 +13700,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "vib", @@ -13710,7 +13710,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "now", @@ -13720,7 +13720,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "muse", @@ -13730,7 +13730,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mint", @@ -13740,7 +13740,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xor", @@ -13750,7 +13750,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mtv", @@ -13760,7 +13760,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "spi", @@ -13770,7 +13770,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "belt", @@ -13780,7 +13780,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ppt", @@ -13790,7 +13790,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "awc", @@ -13800,7 +13800,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "defit", @@ -13810,7 +13810,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "srk", @@ -13820,7 +13820,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lgcy", @@ -13830,7 +13830,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "nftb", @@ -13840,7 +13840,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hotcross", @@ -13850,7 +13850,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bin", @@ -13860,7 +13860,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tking", @@ -13870,7 +13870,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mph", @@ -13880,7 +13880,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "skill", @@ -13890,7 +13890,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xio", @@ -13900,7 +13900,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "zoon", @@ -13910,7 +13910,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "naft", @@ -13920,7 +13920,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "marsh", @@ -13930,7 +13930,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "spo", @@ -13940,7 +13940,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "eved", @@ -13950,7 +13950,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lead", @@ -13960,7 +13960,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cns", @@ -13970,7 +13970,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sfuel", @@ -13980,7 +13980,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "leash", @@ -13990,7 +13990,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "flokibsc", @@ -14000,7 +14000,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "floki", @@ -14010,7 +14010,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "volt", @@ -14020,7 +14020,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "brise", @@ -14030,7 +14030,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "kishu", @@ -14040,7 +14040,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "shinja", @@ -14050,7 +14050,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ntvrk", @@ -14060,7 +14060,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "akita", @@ -14070,7 +14070,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "zinu", @@ -14080,7 +14080,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gafa", @@ -14090,7 +14090,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "trvl", @@ -14100,7 +14100,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "kibabsc", @@ -14110,7 +14110,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "kiba", @@ -14120,7 +14120,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "guard", @@ -14130,7 +14130,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "blocks", @@ -14140,7 +14140,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "copi", @@ -14150,7 +14150,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dogecoin", @@ -14160,7 +14160,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lblock", @@ -14170,7 +14170,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gspi", @@ -14180,7 +14180,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "asia", @@ -14190,7 +14190,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "wise", @@ -14200,7 +14200,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gmr", @@ -14210,7 +14210,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "knc", @@ -14220,7 +14220,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fjb", @@ -14230,7 +14230,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tenfi", @@ -14240,7 +14240,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "btfa", @@ -14250,7 +14250,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "aquagoat", @@ -14260,7 +14260,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "avn", @@ -14270,7 +14270,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tenshi", @@ -14280,7 +14280,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "poodl", @@ -14290,7 +14290,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "geth", @@ -14300,7 +14300,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fluf", @@ -14310,7 +14310,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lof", @@ -14320,7 +14320,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "nyxt", @@ -14330,7 +14330,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fetbsc", @@ -14340,7 +14340,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mononoke", @@ -14351,7 +14351,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "luffy", @@ -14361,7 +14361,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "vgx", @@ -14371,7 +14371,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdtsol", @@ -14382,7 +14382,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "nearbsc", @@ -14392,7 +14392,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "iotxbsc", @@ -14402,7 +14402,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "metiserc20", @@ -14412,7 +14412,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdcsol", @@ -14422,7 +14422,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "clear", @@ -14432,7 +14432,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdcbsc", @@ -14442,7 +14442,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bttcbsc", @@ -14452,7 +14452,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "maticbsc", @@ -14462,7 +14462,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "avaxbsc", @@ -14472,7 +14472,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ppm", @@ -14482,7 +14482,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bttc", @@ -14492,7 +14492,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "trxbsc", @@ -14502,7 +14502,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "etcbsc", @@ -14512,7 +14512,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "atombsc", @@ -14522,7 +14522,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bchbsc", @@ -14532,7 +14532,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "vetbsc", @@ -14542,7 +14542,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "filbsc", @@ -14552,7 +14552,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "egldbsc", @@ -14562,7 +14562,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "axsbsc", @@ -14572,7 +14572,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tusdbsc", @@ -14582,7 +14582,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "eosbsc", @@ -14592,7 +14592,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mkrbsc", @@ -14602,7 +14602,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdpbsc", @@ -14612,7 +14612,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "zecbsc", @@ -14622,7 +14622,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ftmbsc", @@ -14632,7 +14632,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "manabsc", @@ -14642,7 +14642,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "batbsc", @@ -14652,7 +14652,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "zilbsc", @@ -14662,7 +14662,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "compbsc", @@ -14672,7 +14672,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "snxbsc", @@ -14682,7 +14682,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "solbsc", @@ -14692,7 +14692,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ceekerc20", @@ -14703,7 +14703,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "yfibsc", @@ -14713,7 +14713,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "kncbsc", @@ -14723,7 +14723,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "chrbsc", @@ -14733,7 +14733,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sushibsc", @@ -14743,7 +14743,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ankrbsc", @@ -14753,7 +14753,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "celrbsc", @@ -14763,7 +14763,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sandmatic", @@ -14774,7 +14774,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xcnbsc", @@ -14784,7 +14784,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "plamatic", @@ -14794,7 +14794,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "c98erc20", @@ -14804,7 +14804,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "momento", @@ -14814,7 +14814,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fire", @@ -14824,7 +14824,7 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ghc", @@ -14834,8 +14834,8 @@ const List> availableCurrenciesJSONFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true - } + "supportsFixedRate": true, + }, ]; const List> availableCurrenciesJSONActiveFixedRate = [ @@ -14847,7 +14847,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "eth", @@ -14857,7 +14857,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ethbsc", @@ -14867,7 +14867,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdt", @@ -14877,7 +14877,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdterc20", @@ -14888,7 +14888,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": true, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdttrc20", @@ -14899,7 +14899,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdtbsc", @@ -14909,7 +14909,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdc", @@ -14919,7 +14919,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": true, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdcmatic", @@ -14930,7 +14930,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bnbmainnet", @@ -14941,7 +14941,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bnbbsc", @@ -14951,7 +14951,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "busd", @@ -14961,7 +14961,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "busdbsc", @@ -14971,7 +14971,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xrp", @@ -14981,7 +14981,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xrpbsc", @@ -14991,7 +14991,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ada", @@ -15001,7 +15001,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "adabsc", @@ -15011,7 +15011,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sol", @@ -15021,7 +15021,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "doge", @@ -15031,7 +15031,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dot", @@ -15041,7 +15041,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dotbsc", @@ -15051,7 +15051,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dai", @@ -15061,7 +15061,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "matic", @@ -15071,7 +15071,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "maticmainnet", @@ -15082,7 +15082,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "shib", @@ -15092,7 +15092,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "shibbsc", @@ -15102,7 +15102,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "trx", @@ -15112,7 +15112,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "avax", @@ -15122,7 +15122,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "avaxc", @@ -15132,7 +15132,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "wbtc", @@ -15142,7 +15142,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "leo", @@ -15152,7 +15152,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "uni", @@ -15162,7 +15162,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "etc", @@ -15172,7 +15172,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ltc", @@ -15182,7 +15182,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ltcbsc", @@ -15192,7 +15192,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ftt", @@ -15202,7 +15202,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "link", @@ -15212,7 +15212,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "atom", @@ -15222,7 +15222,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cro", @@ -15232,7 +15232,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "near", @@ -15242,7 +15242,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xmr", @@ -15252,7 +15252,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xlm", @@ -15262,7 +15262,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bch", @@ -15272,7 +15272,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "algo", @@ -15282,7 +15282,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "flow", @@ -15292,7 +15292,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "vet", @@ -15302,7 +15302,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "icp", @@ -15312,7 +15312,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fil", @@ -15322,7 +15322,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ape", @@ -15332,7 +15332,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "eos", @@ -15342,7 +15342,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mana", @@ -15352,7 +15352,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sand", @@ -15362,7 +15362,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hbar", @@ -15372,7 +15372,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xtz", @@ -15382,7 +15382,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xtzbsc", @@ -15392,7 +15392,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "chz", @@ -15402,7 +15402,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "qnt", @@ -15412,7 +15412,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "egld", @@ -15422,7 +15422,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "aave", @@ -15432,7 +15432,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "theta", @@ -15442,7 +15442,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "axs", @@ -15452,7 +15452,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tusd", @@ -15462,7 +15462,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bsv", @@ -15472,7 +15472,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "okb", @@ -15482,7 +15482,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "galabsc", @@ -15492,7 +15492,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "zec", @@ -15502,7 +15502,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdp", @@ -15512,7 +15512,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bttbsc", @@ -15522,7 +15522,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "iota", @@ -15532,7 +15532,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mkr", @@ -15542,7 +15542,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hnt", @@ -15552,7 +15552,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ht", @@ -15562,7 +15562,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "snx", @@ -15572,7 +15572,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "grt", @@ -15582,7 +15582,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "klay", @@ -15592,7 +15592,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ftm", @@ -15602,7 +15602,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ftmmainnet", @@ -15612,7 +15612,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "neo", @@ -15622,7 +15622,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "paxg", @@ -15632,7 +15632,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ldo", @@ -15642,7 +15642,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cake", @@ -15652,7 +15652,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "crv", @@ -15662,7 +15662,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "nexo", @@ -15672,7 +15672,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bat", @@ -15682,7 +15682,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dash", @@ -15692,7 +15692,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "waves", @@ -15702,7 +15702,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "zil", @@ -15712,7 +15712,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": true, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lrc", @@ -15722,7 +15722,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "enj", @@ -15732,7 +15732,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ksm", @@ -15742,7 +15742,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dcr", @@ -15752,7 +15752,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "btg", @@ -15762,7 +15762,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gmt", @@ -15772,7 +15772,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gno", @@ -15782,7 +15782,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "twt", @@ -15792,7 +15792,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xem", @@ -15802,7 +15802,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "1inch", @@ -15812,7 +15812,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "1inchbsc", @@ -15822,7 +15822,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "celo", @@ -15832,7 +15832,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hot", @@ -15842,7 +15842,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "galaerc20", @@ -15853,7 +15853,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ankr", @@ -15863,7 +15863,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "comp", @@ -15873,7 +15873,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cvx", @@ -15883,7 +15883,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "qtum", @@ -15893,7 +15893,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "yfi", @@ -15903,7 +15903,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xdc", @@ -15913,7 +15913,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "iotx", @@ -15923,7 +15923,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cel", @@ -15933,7 +15933,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gusd", @@ -15943,7 +15943,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": true, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tfuel", @@ -15953,7 +15953,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rvn", @@ -15963,7 +15963,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "flux", @@ -15973,7 +15973,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bal", @@ -15983,7 +15983,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "amp", @@ -15993,7 +15993,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "omg", @@ -16003,7 +16003,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "zrx", @@ -16013,7 +16013,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rsr", @@ -16023,7 +16023,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "one", @@ -16033,7 +16033,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "jst", @@ -16043,7 +16043,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "icx", @@ -16053,7 +16053,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xym", @@ -16063,7 +16063,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "iost", @@ -16073,7 +16073,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ens", @@ -16083,7 +16083,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lpt", @@ -16093,7 +16093,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "glm", @@ -16103,7 +16103,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "audio", @@ -16113,7 +16113,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "storj", @@ -16123,7 +16123,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ont", @@ -16133,7 +16133,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ontbsc", @@ -16143,7 +16143,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "waxp", @@ -16153,7 +16153,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "srm", @@ -16163,7 +16163,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sc", @@ -16173,7 +16173,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "imx", @@ -16183,7 +16183,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "zen", @@ -16193,7 +16193,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "uma", @@ -16203,7 +16203,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "scrt", @@ -16213,7 +16213,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "skl", @@ -16223,7 +16223,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "poly", @@ -16233,7 +16233,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "slp", @@ -16243,7 +16243,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "woobsc", @@ -16253,7 +16253,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "woo", @@ -16263,7 +16263,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "chsb", @@ -16273,7 +16273,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dgb", @@ -16283,7 +16283,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "elon", @@ -16293,7 +16293,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dao", @@ -16303,7 +16303,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "pla", @@ -16313,7 +16313,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cvc", @@ -16323,7 +16323,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "spell", @@ -16333,7 +16333,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rndr", @@ -16343,7 +16343,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sushi", @@ -16353,7 +16353,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "btcst", @@ -16363,7 +16363,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lsk", @@ -16373,7 +16373,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "eps", @@ -16383,7 +16383,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "pundix", @@ -16393,7 +16393,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "celr", @@ -16403,7 +16403,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ren", @@ -16413,7 +16413,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "nano", @@ -16423,7 +16423,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xyo", @@ -16433,7 +16433,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "win", @@ -16443,7 +16443,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ong", @@ -16453,7 +16453,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "people", @@ -16463,7 +16463,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "uos", @@ -16473,7 +16473,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cfx", @@ -16483,7 +16483,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "req", @@ -16493,7 +16493,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dydx", @@ -16503,7 +16503,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ardr", @@ -16513,7 +16513,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rly", @@ -16523,7 +16523,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "coti", @@ -16533,7 +16533,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rlc", @@ -16543,7 +16543,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "powr", @@ -16553,7 +16553,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "nmr", @@ -16563,7 +16563,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "snt", @@ -16573,7 +16573,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ocean", @@ -16583,7 +16583,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "chr", @@ -16593,7 +16593,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "api3", @@ -16603,7 +16603,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dent", @@ -16613,7 +16613,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bnt", @@ -16623,7 +16623,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fxs", @@ -16633,7 +16633,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hex", @@ -16643,7 +16643,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "steth", @@ -16653,7 +16653,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "btcb", @@ -16663,7 +16663,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lunc", @@ -16673,7 +16673,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dfi", @@ -16683,7 +16683,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bnx", @@ -16693,7 +16693,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rpl", @@ -16703,7 +16703,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "luna", @@ -16713,7 +16713,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "babydoge", @@ -16723,7 +16723,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "raca", @@ -16733,7 +16733,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sys", @@ -16743,7 +16743,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gal", @@ -16753,7 +16753,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bico", @@ -16763,7 +16763,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "steem", @@ -16773,7 +16773,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "c98", @@ -16783,7 +16783,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "susd", @@ -16793,7 +16793,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ctsi", @@ -16803,7 +16803,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hxro", @@ -16813,7 +16813,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rep", @@ -16823,7 +16823,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fun", @@ -16833,7 +16833,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "pyr", @@ -16843,7 +16843,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "strax", @@ -16853,7 +16853,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bsw", @@ -16863,7 +16863,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lyxe", @@ -16873,7 +16873,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mtl", @@ -16883,7 +16883,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "stmx", @@ -16893,7 +16893,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "stpt", @@ -16903,7 +16903,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "elf", @@ -16913,7 +16913,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "oxt", @@ -16923,7 +16923,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ufo", @@ -16933,7 +16933,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ach", @@ -16943,7 +16943,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ogn", @@ -16953,7 +16953,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sfund", @@ -16963,7 +16963,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tlm", @@ -16973,7 +16973,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "loom", @@ -16983,7 +16983,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ant", @@ -16993,7 +16993,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "alice", @@ -17003,7 +17003,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fet", @@ -17013,7 +17013,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ygg", @@ -17023,7 +17023,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ark", @@ -17033,7 +17033,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "utk", @@ -17043,7 +17043,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "super", @@ -17053,7 +17053,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dusk", @@ -17063,7 +17063,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ilv", @@ -17073,7 +17073,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mbox", @@ -17083,7 +17083,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sun", @@ -17093,7 +17093,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "aergo", @@ -17103,7 +17103,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "vra", @@ -17113,7 +17113,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bake", @@ -17123,7 +17123,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xvg", @@ -17133,7 +17133,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dpi", @@ -17143,7 +17143,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "pols", @@ -17153,7 +17153,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mln", @@ -17163,7 +17163,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xcad", @@ -17173,7 +17173,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "divi", @@ -17183,7 +17183,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sfp", @@ -17193,7 +17193,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tomo", @@ -17203,7 +17203,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "arpa", @@ -17213,7 +17213,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "band", @@ -17223,7 +17223,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bandmainnet", @@ -17234,7 +17234,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sps", @@ -17244,7 +17244,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ava", @@ -17254,7 +17254,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "avaerc20", @@ -17264,7 +17264,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "avabsc", @@ -17274,7 +17274,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "jasmy", @@ -17284,7 +17284,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cult", @@ -17294,7 +17294,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "starl", @@ -17304,7 +17304,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "alpaca", @@ -17314,7 +17314,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "blz", @@ -17324,7 +17324,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "kmd", @@ -17334,7 +17334,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "alcx", @@ -17344,7 +17344,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "yfii", @@ -17354,7 +17354,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bel", @@ -17364,7 +17364,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mc", @@ -17374,7 +17374,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dia", @@ -17384,7 +17384,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tko", @@ -17394,7 +17394,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bcd", @@ -17404,7 +17404,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "farm", @@ -17414,7 +17414,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ata", @@ -17424,7 +17424,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fio", @@ -17434,7 +17434,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ubt", @@ -17444,7 +17444,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dnt", @@ -17454,7 +17454,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "grs", @@ -17464,7 +17464,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "om", @@ -17474,7 +17474,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gas", @@ -17484,7 +17484,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fox", @@ -17494,7 +17494,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "firo", @@ -17504,7 +17504,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "aion", @@ -17514,7 +17514,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "adx", @@ -17524,7 +17524,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "nwc", @@ -17535,7 +17535,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cudos", @@ -17545,7 +17545,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "solve", @@ -17555,7 +17555,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "klv", @@ -17565,7 +17565,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "rook", @@ -17575,7 +17575,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "front", @@ -17585,7 +17585,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "wtc", @@ -17595,7 +17595,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "beam", @@ -17605,7 +17605,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gto", @@ -17615,7 +17615,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "akro", @@ -17625,7 +17625,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mdt", @@ -17635,7 +17635,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hez", @@ -17645,7 +17645,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "pnk", @@ -17655,7 +17655,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ast", @@ -17665,7 +17665,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "snm", @@ -17675,7 +17675,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "pivx", @@ -17685,7 +17685,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xdb", @@ -17695,7 +17695,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mir", @@ -17705,7 +17705,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "perl", @@ -17715,7 +17715,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "go", @@ -17725,7 +17725,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "urus", @@ -17735,7 +17735,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "arv", @@ -17745,7 +17745,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cell", @@ -17755,7 +17755,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "caps", @@ -17765,7 +17765,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "wabi", @@ -17775,7 +17775,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "shr", @@ -17785,7 +17785,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "san", @@ -17795,7 +17795,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fuse", @@ -17805,7 +17805,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "poolz", @@ -17815,7 +17815,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "vib", @@ -17825,7 +17825,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "now", @@ -17835,7 +17835,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "muse", @@ -17845,7 +17845,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mint", @@ -17855,7 +17855,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xor", @@ -17865,7 +17865,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mtv", @@ -17875,7 +17875,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "spi", @@ -17885,7 +17885,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "belt", @@ -17895,7 +17895,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ppt", @@ -17905,7 +17905,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "awc", @@ -17915,7 +17915,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "defit", @@ -17925,7 +17925,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "srk", @@ -17935,7 +17935,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lgcy", @@ -17945,7 +17945,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "nftb", @@ -17955,7 +17955,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "hotcross", @@ -17965,7 +17965,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bin", @@ -17975,7 +17975,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tking", @@ -17985,7 +17985,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mph", @@ -17995,7 +17995,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "skill", @@ -18005,7 +18005,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xio", @@ -18015,7 +18015,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "zoon", @@ -18025,7 +18025,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "naft", @@ -18035,7 +18035,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "marsh", @@ -18045,7 +18045,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "spo", @@ -18055,7 +18055,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "eved", @@ -18065,7 +18065,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lead", @@ -18075,7 +18075,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "cns", @@ -18085,7 +18085,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sfuel", @@ -18095,7 +18095,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "leash", @@ -18105,7 +18105,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "flokibsc", @@ -18115,7 +18115,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "floki", @@ -18125,7 +18125,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "volt", @@ -18135,7 +18135,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "brise", @@ -18145,7 +18145,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "kishu", @@ -18155,7 +18155,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "shinja", @@ -18165,7 +18165,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ntvrk", @@ -18175,7 +18175,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "akita", @@ -18185,7 +18185,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "zinu", @@ -18195,7 +18195,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gafa", @@ -18205,7 +18205,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "trvl", @@ -18215,7 +18215,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "kibabsc", @@ -18225,7 +18225,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "kiba", @@ -18235,7 +18235,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "guard", @@ -18245,7 +18245,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "blocks", @@ -18255,7 +18255,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "copi", @@ -18265,7 +18265,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "dogecoin", @@ -18275,7 +18275,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lblock", @@ -18285,7 +18285,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gspi", @@ -18295,7 +18295,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "asia", @@ -18305,7 +18305,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "wise", @@ -18315,7 +18315,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "gmr", @@ -18325,7 +18325,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "knc", @@ -18335,7 +18335,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fjb", @@ -18345,7 +18345,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tenfi", @@ -18355,7 +18355,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "btfa", @@ -18365,7 +18365,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "aquagoat", @@ -18375,7 +18375,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "avn", @@ -18385,7 +18385,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tenshi", @@ -18395,7 +18395,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "poodl", @@ -18405,7 +18405,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "geth", @@ -18415,7 +18415,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fluf", @@ -18425,7 +18425,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "lof", @@ -18435,7 +18435,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "nyxt", @@ -18445,7 +18445,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fetbsc", @@ -18455,7 +18455,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mononoke", @@ -18466,7 +18466,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "luffy", @@ -18476,7 +18476,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "vgx", @@ -18486,7 +18486,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdtsol", @@ -18497,7 +18497,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "nearbsc", @@ -18507,7 +18507,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "iotxbsc", @@ -18517,7 +18517,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "metiserc20", @@ -18527,7 +18527,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdcsol", @@ -18537,7 +18537,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "clear", @@ -18547,7 +18547,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdcbsc", @@ -18557,7 +18557,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bttcbsc", @@ -18567,7 +18567,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "maticbsc", @@ -18577,7 +18577,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "avaxbsc", @@ -18587,7 +18587,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ppm", @@ -18597,7 +18597,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bttc", @@ -18607,7 +18607,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "trxbsc", @@ -18617,7 +18617,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "etcbsc", @@ -18627,7 +18627,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "atombsc", @@ -18637,7 +18637,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "bchbsc", @@ -18647,7 +18647,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "vetbsc", @@ -18657,7 +18657,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "filbsc", @@ -18667,7 +18667,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "egldbsc", @@ -18677,7 +18677,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "axsbsc", @@ -18687,7 +18687,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "tusdbsc", @@ -18697,7 +18697,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "eosbsc", @@ -18707,7 +18707,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "mkrbsc", @@ -18717,7 +18717,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "usdpbsc", @@ -18727,7 +18727,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "zecbsc", @@ -18737,7 +18737,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ftmbsc", @@ -18747,7 +18747,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "manabsc", @@ -18757,7 +18757,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "batbsc", @@ -18767,7 +18767,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "zilbsc", @@ -18777,7 +18777,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "compbsc", @@ -18787,7 +18787,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "snxbsc", @@ -18797,7 +18797,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "solbsc", @@ -18807,7 +18807,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ceekerc20", @@ -18818,7 +18818,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "yfibsc", @@ -18828,7 +18828,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "kncbsc", @@ -18838,7 +18838,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "chrbsc", @@ -18848,7 +18848,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sushibsc", @@ -18858,7 +18858,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ankrbsc", @@ -18868,7 +18868,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "celrbsc", @@ -18878,7 +18878,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "sandmatic", @@ -18889,7 +18889,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "xcnbsc", @@ -18899,7 +18899,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "plamatic", @@ -18909,7 +18909,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "c98erc20", @@ -18919,7 +18919,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "momento", @@ -18929,7 +18929,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "fire", @@ -18939,7 +18939,7 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true + "supportsFixedRate": true, }, { "ticker": "ghc", @@ -18949,8 +18949,8 @@ const List> availableCurrenciesJSONActiveFixedRate = [ "isFiat": false, "featured": false, "isStable": false, - "supportsFixedRate": true - } + "supportsFixedRate": true, + }, ]; const List> getPairedCurrenciesJSON = [ @@ -18963,7 +18963,7 @@ const List> getPairedCurrenciesJSON = [ "featured": true, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "eth", @@ -18974,7 +18974,7 @@ const List> getPairedCurrenciesJSON = [ "featured": true, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ethbsc", @@ -18985,7 +18985,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "usdt", @@ -18996,7 +18996,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": true, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "usdterc20", @@ -19008,7 +19008,7 @@ const List> getPairedCurrenciesJSON = [ "featured": true, "isStable": true, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "usdttrc20", @@ -19020,7 +19020,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": true, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "usdtbsc", @@ -19031,7 +19031,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "usdc", @@ -19042,7 +19042,7 @@ const List> getPairedCurrenciesJSON = [ "featured": true, "isStable": true, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "usdcmatic", @@ -19054,7 +19054,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": true, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bnbmainnet", @@ -19066,7 +19066,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bnbbsc", @@ -19077,7 +19077,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "busd", @@ -19088,7 +19088,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": true, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "busdbsc", @@ -19099,7 +19099,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "xrp", @@ -19110,7 +19110,7 @@ const List> getPairedCurrenciesJSON = [ "featured": true, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "xrpbsc", @@ -19121,7 +19121,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ada", @@ -19132,7 +19132,7 @@ const List> getPairedCurrenciesJSON = [ "featured": true, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "adabsc", @@ -19143,7 +19143,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "sol", @@ -19154,7 +19154,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "doge", @@ -19165,7 +19165,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dot", @@ -19176,7 +19176,7 @@ const List> getPairedCurrenciesJSON = [ "featured": true, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dotbsc", @@ -19187,7 +19187,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dai", @@ -19198,7 +19198,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": true, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "matic", @@ -19209,7 +19209,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "maticmainnet", @@ -19221,7 +19221,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "shib", @@ -19232,7 +19232,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "shibbsc", @@ -19243,7 +19243,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "trx", @@ -19254,7 +19254,7 @@ const List> getPairedCurrenciesJSON = [ "featured": true, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "avax", @@ -19265,7 +19265,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "avaxc", @@ -19276,7 +19276,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "wbtc", @@ -19287,7 +19287,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "leo", @@ -19298,7 +19298,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "uni", @@ -19309,7 +19309,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "etc", @@ -19320,7 +19320,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ltc", @@ -19331,7 +19331,7 @@ const List> getPairedCurrenciesJSON = [ "featured": true, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ltcbsc", @@ -19342,7 +19342,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ftt", @@ -19353,7 +19353,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "link", @@ -19364,7 +19364,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "atom", @@ -19375,7 +19375,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "cro", @@ -19386,7 +19386,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "near", @@ -19397,7 +19397,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "xlm", @@ -19408,7 +19408,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bch", @@ -19419,7 +19419,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "algo", @@ -19430,7 +19430,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "flow", @@ -19441,7 +19441,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "vet", @@ -19452,7 +19452,7 @@ const List> getPairedCurrenciesJSON = [ "featured": true, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "icp", @@ -19463,7 +19463,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "fil", @@ -19474,7 +19474,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ape", @@ -19485,7 +19485,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "eos", @@ -19496,7 +19496,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "mana", @@ -19507,7 +19507,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "sand", @@ -19518,7 +19518,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "hbar", @@ -19529,7 +19529,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "xtz", @@ -19540,7 +19540,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "xtzbsc", @@ -19551,7 +19551,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "chz", @@ -19562,7 +19562,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "qnt", @@ -19573,7 +19573,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "egld", @@ -19584,7 +19584,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "aave", @@ -19595,7 +19595,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "theta", @@ -19606,7 +19606,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "axs", @@ -19617,7 +19617,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "tusd", @@ -19628,7 +19628,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": true, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bsv", @@ -19639,7 +19639,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "okb", @@ -19650,7 +19650,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "galabsc", @@ -19661,7 +19661,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "zec", @@ -19672,7 +19672,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "usdp", @@ -19683,7 +19683,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bttbsc", @@ -19694,7 +19694,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "iota", @@ -19705,7 +19705,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "mkr", @@ -19716,7 +19716,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "hnt", @@ -19727,7 +19727,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "snx", @@ -19738,7 +19738,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ht", @@ -19749,7 +19749,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "grt", @@ -19760,7 +19760,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ftm", @@ -19771,7 +19771,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ftmmainnet", @@ -19782,7 +19782,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "klay", @@ -19793,7 +19793,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "neo", @@ -19804,7 +19804,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "rune", @@ -19815,7 +19815,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "paxg", @@ -19826,7 +19826,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ldo", @@ -19837,7 +19837,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "cake", @@ -19848,7 +19848,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "crv", @@ -19859,7 +19859,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "nexo", @@ -19870,7 +19870,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bat", @@ -19881,7 +19881,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dash", @@ -19892,7 +19892,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "waves", @@ -19903,7 +19903,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "zil", @@ -19914,7 +19914,7 @@ const List> getPairedCurrenciesJSON = [ "featured": true, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "lrc", @@ -19925,7 +19925,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "enj", @@ -19936,7 +19936,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ksm", @@ -19947,7 +19947,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dcr", @@ -19958,7 +19958,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "btg", @@ -19969,7 +19969,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "gmt", @@ -19980,7 +19980,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "twt", @@ -19991,7 +19991,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "gno", @@ -20002,7 +20002,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "xem", @@ -20013,7 +20013,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "1inch", @@ -20024,7 +20024,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "1inchbsc", @@ -20035,7 +20035,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "celo", @@ -20046,7 +20046,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "hot", @@ -20057,7 +20057,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ust", @@ -20069,7 +20069,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "galaerc20", @@ -20081,7 +20081,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ankr", @@ -20092,7 +20092,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "comp", @@ -20103,7 +20103,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "gt", @@ -20114,7 +20114,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "cvx", @@ -20125,7 +20125,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "qtum", @@ -20136,7 +20136,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "yfi", @@ -20147,7 +20147,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "xdc", @@ -20158,7 +20158,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "kda", @@ -20169,7 +20169,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "iotx", @@ -20180,7 +20180,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "cel", @@ -20191,7 +20191,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "gusd", @@ -20202,7 +20202,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": true, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "tfuel", @@ -20213,7 +20213,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "rvn", @@ -20224,7 +20224,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "flux", @@ -20235,7 +20235,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bal", @@ -20246,7 +20246,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "amp", @@ -20257,7 +20257,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "op", @@ -20268,7 +20268,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "omg", @@ -20279,7 +20279,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "zrx", @@ -20290,7 +20290,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "one", @@ -20301,7 +20301,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "rsr", @@ -20312,7 +20312,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "icx", @@ -20323,7 +20323,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ens", @@ -20334,7 +20334,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "jst", @@ -20345,7 +20345,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "xym", @@ -20356,7 +20356,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "iost", @@ -20367,7 +20367,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "lpt", @@ -20378,7 +20378,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "glm", @@ -20389,7 +20389,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "audio", @@ -20400,7 +20400,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "storj", @@ -20411,7 +20411,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ont", @@ -20422,7 +20422,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ontbsc", @@ -20433,7 +20433,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "waxp", @@ -20444,7 +20444,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "srm", @@ -20455,7 +20455,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "sc", @@ -20466,7 +20466,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "imx", @@ -20477,7 +20477,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "zen", @@ -20488,7 +20488,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "uma", @@ -20499,7 +20499,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "scrt", @@ -20510,7 +20510,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "mxc", @@ -20521,7 +20521,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "btrst", @@ -20532,7 +20532,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "skl", @@ -20543,7 +20543,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "poly", @@ -20554,7 +20554,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "slp", @@ -20565,7 +20565,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "woobsc", @@ -20576,7 +20576,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "woo", @@ -20587,7 +20587,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "chsb", @@ -20598,7 +20598,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "cspr", @@ -20609,7 +20609,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dgb", @@ -20620,7 +20620,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "eur", @@ -20631,7 +20631,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "elon", @@ -20642,7 +20642,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dao", @@ -20653,7 +20653,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "pla", @@ -20664,7 +20664,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "cvc", @@ -20675,7 +20675,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ceek", @@ -20686,7 +20686,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "spell", @@ -20697,7 +20697,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "sushi", @@ -20708,7 +20708,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "rndr", @@ -20719,7 +20719,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "lsk", @@ -20730,7 +20730,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "btcst", @@ -20741,7 +20741,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "eps", @@ -20752,7 +20752,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "pundix", @@ -20763,7 +20763,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "celr", @@ -20774,7 +20774,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ren", @@ -20785,7 +20785,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "nano", @@ -20796,7 +20796,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "xyo", @@ -20807,7 +20807,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "win", @@ -20818,7 +20818,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ong", @@ -20829,7 +20829,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "people", @@ -20840,7 +20840,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "uos", @@ -20851,7 +20851,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "cfx", @@ -20862,7 +20862,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "req", @@ -20873,7 +20873,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "tribe", @@ -20884,7 +20884,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dydx", @@ -20895,7 +20895,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ardr", @@ -20906,7 +20906,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "rly", @@ -20917,7 +20917,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "powr", @@ -20928,7 +20928,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "rlc", @@ -20939,7 +20939,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "coti", @@ -20950,7 +20950,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "mx", @@ -20961,7 +20961,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "nmr", @@ -20972,7 +20972,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "snt", @@ -20983,7 +20983,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ocean", @@ -20994,7 +20994,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "api3", @@ -21005,7 +21005,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "chr", @@ -21016,7 +21016,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dent", @@ -21027,7 +21027,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bnt", @@ -21038,7 +21038,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "fxs", @@ -21049,7 +21049,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "hex", @@ -21060,7 +21060,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "steth", @@ -21071,7 +21071,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "btcb", @@ -21082,7 +21082,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "frax", @@ -21093,7 +21093,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "lunc", @@ -21104,7 +21104,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dfi", @@ -21115,7 +21115,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bnx", @@ -21126,7 +21126,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "rpl", @@ -21137,7 +21137,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "luna", @@ -21148,7 +21148,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "husd", @@ -21159,7 +21159,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": true, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "babydoge", @@ -21170,7 +21170,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "metis", @@ -21181,7 +21181,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "raca", @@ -21192,7 +21192,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "prom", @@ -21203,7 +21203,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "sys", @@ -21214,7 +21214,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "gal", @@ -21225,7 +21225,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bico", @@ -21236,7 +21236,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "c98", @@ -21247,7 +21247,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "steem", @@ -21258,7 +21258,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "susd", @@ -21269,7 +21269,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ctsi", @@ -21280,7 +21280,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "hxro", @@ -21291,7 +21291,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "rep", @@ -21302,7 +21302,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "fun", @@ -21313,7 +21313,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "pyr", @@ -21324,7 +21324,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bsw", @@ -21335,7 +21335,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "strax", @@ -21346,7 +21346,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "lyxe", @@ -21357,7 +21357,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "mtl", @@ -21368,7 +21368,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "stmx", @@ -21379,7 +21379,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "stpt", @@ -21390,7 +21390,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "elf", @@ -21401,7 +21401,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "oxt", @@ -21412,7 +21412,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ufo", @@ -21423,7 +21423,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ach", @@ -21434,7 +21434,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ogn", @@ -21445,7 +21445,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "sfund", @@ -21456,7 +21456,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "tlm", @@ -21467,7 +21467,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "loom", @@ -21478,7 +21478,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ant", @@ -21489,7 +21489,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "alice", @@ -21500,7 +21500,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "fet", @@ -21511,7 +21511,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ygg", @@ -21522,7 +21522,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ark", @@ -21533,7 +21533,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "utk", @@ -21544,7 +21544,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "super", @@ -21555,7 +21555,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dusk", @@ -21566,7 +21566,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ilv", @@ -21577,7 +21577,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "mbox", @@ -21588,7 +21588,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "sun", @@ -21599,7 +21599,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "aergo", @@ -21610,7 +21610,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "vra", @@ -21621,7 +21621,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bake", @@ -21632,7 +21632,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "xvg", @@ -21643,7 +21643,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dpi", @@ -21654,7 +21654,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "pols", @@ -21665,7 +21665,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "mln", @@ -21676,7 +21676,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "xcad", @@ -21687,7 +21687,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "divi", @@ -21698,7 +21698,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "divierc20", @@ -21710,7 +21710,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "tomo", @@ -21721,7 +21721,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "sfp", @@ -21732,7 +21732,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "arpa", @@ -21743,7 +21743,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "band", @@ -21754,7 +21754,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bandmainnet", @@ -21766,7 +21766,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "sps", @@ -21777,7 +21777,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ava", @@ -21788,7 +21788,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "avaerc20", @@ -21799,7 +21799,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "avabsc", @@ -21810,7 +21810,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "jasmy", @@ -21821,7 +21821,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "cult", @@ -21832,7 +21832,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "kmd", @@ -21843,7 +21843,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "starl", @@ -21854,7 +21854,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "aioz", @@ -21865,7 +21865,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "alpaca", @@ -21876,7 +21876,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "blz", @@ -21887,7 +21887,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "alcx", @@ -21898,7 +21898,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "yfii", @@ -21909,7 +21909,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "unfi", @@ -21920,7 +21920,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bel", @@ -21931,7 +21931,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "mc", @@ -21942,7 +21942,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dia", @@ -21953,7 +21953,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "tko", @@ -21964,7 +21964,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bcd", @@ -21975,7 +21975,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "anc", @@ -21986,7 +21986,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "farm", @@ -21997,7 +21997,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bifi", @@ -22008,7 +22008,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "ata", @@ -22019,7 +22019,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "fio", @@ -22030,7 +22030,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ubt", @@ -22041,7 +22041,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dnt", @@ -22052,7 +22052,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "pit", @@ -22063,7 +22063,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "burger", @@ -22074,7 +22074,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "om", @@ -22085,7 +22085,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "grs", @@ -22096,7 +22096,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "gas", @@ -22107,7 +22107,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "hoge", @@ -22118,7 +22118,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "fox", @@ -22129,7 +22129,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "firo", @@ -22140,7 +22140,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "aion", @@ -22151,7 +22151,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "adx", @@ -22162,7 +22162,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "solve", @@ -22173,7 +22173,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "nwc", @@ -22185,7 +22185,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "rook", @@ -22196,7 +22196,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "cudos", @@ -22207,7 +22207,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "klv", @@ -22218,7 +22218,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "front", @@ -22229,7 +22229,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "wtc", @@ -22240,7 +22240,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "beam", @@ -22251,7 +22251,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "gto", @@ -22262,7 +22262,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "akro", @@ -22273,7 +22273,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "mdt", @@ -22284,7 +22284,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "hez", @@ -22295,7 +22295,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "pnk", @@ -22306,7 +22306,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ast", @@ -22317,7 +22317,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "snm", @@ -22328,7 +22328,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "qsp", @@ -22339,7 +22339,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "pivx", @@ -22350,7 +22350,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "xdb", @@ -22361,7 +22361,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "mir", @@ -22372,7 +22372,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "perl", @@ -22383,7 +22383,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "go", @@ -22394,7 +22394,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "urus", @@ -22405,7 +22405,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "arv", @@ -22416,7 +22416,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "cell", @@ -22427,7 +22427,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "caps", @@ -22438,7 +22438,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "wabi", @@ -22449,7 +22449,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "swftc", @@ -22460,7 +22460,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "shr", @@ -22471,7 +22471,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "san", @@ -22482,7 +22482,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dobo", @@ -22493,7 +22493,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "hc", @@ -22504,7 +22504,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "fuse", @@ -22515,7 +22515,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dogedash", @@ -22526,7 +22526,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "poolz", @@ -22537,7 +22537,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "vib", @@ -22548,7 +22548,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "now", @@ -22559,7 +22559,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "muse", @@ -22570,7 +22570,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "mint", @@ -22581,7 +22581,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "xor", @@ -22592,7 +22592,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "mtv", @@ -22603,7 +22603,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "spi", @@ -22614,7 +22614,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "belt", @@ -22625,7 +22625,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ppt", @@ -22636,7 +22636,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "awc", @@ -22647,7 +22647,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "defit", @@ -22658,7 +22658,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "srk", @@ -22669,7 +22669,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "swrv", @@ -22680,7 +22680,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "pay", @@ -22691,7 +22691,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "lgcy", @@ -22702,7 +22702,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "nftb", @@ -22713,7 +22713,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "open", @@ -22724,7 +22724,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "hotcross", @@ -22735,7 +22735,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bin", @@ -22746,7 +22746,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "rcn", @@ -22757,7 +22757,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "srn", @@ -22768,7 +22768,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "tking", @@ -22779,7 +22779,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "mph", @@ -22790,7 +22790,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "skill", @@ -22801,7 +22801,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "mda", @@ -22812,7 +22812,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "xio", @@ -22823,7 +22823,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "zoon", @@ -22834,7 +22834,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "naft", @@ -22845,7 +22845,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "lxt", @@ -22856,7 +22856,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "marsh", @@ -22867,7 +22867,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "rainbow", @@ -22878,7 +22878,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "spo", @@ -22889,7 +22889,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "brd", @@ -22900,7 +22900,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "eved", @@ -22911,7 +22911,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "lead", @@ -22922,7 +22922,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "cns", @@ -22933,7 +22933,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "sfuel", @@ -22944,7 +22944,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bunny", @@ -22955,7 +22955,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "leash", @@ -22966,7 +22966,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "flokibsc", @@ -22977,7 +22977,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "floki", @@ -22988,7 +22988,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "volt", @@ -22999,7 +22999,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "brise", @@ -23010,7 +23010,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "kishu", @@ -23021,7 +23021,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "shinja", @@ -23032,7 +23032,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ntvrk", @@ -23043,7 +23043,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "akita", @@ -23054,7 +23054,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "zinu", @@ -23065,7 +23065,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "gafa", @@ -23076,7 +23076,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "rbif", @@ -23087,7 +23087,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "trvl", @@ -23098,7 +23098,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "kibabsc", @@ -23109,7 +23109,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "kiba", @@ -23120,7 +23120,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "guard", @@ -23131,7 +23131,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "feg", @@ -23142,7 +23142,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "fegbsc", @@ -23153,7 +23153,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "blocks", @@ -23164,7 +23164,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "copi", @@ -23175,7 +23175,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dogecoin", @@ -23186,7 +23186,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "klee", @@ -23197,7 +23197,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "lblock", @@ -23208,7 +23208,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "gspi", @@ -23219,7 +23219,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "gmr", @@ -23230,7 +23230,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "asia", @@ -23241,7 +23241,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "knc", @@ -23252,7 +23252,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "fjb", @@ -23263,7 +23263,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "wise", @@ -23274,7 +23274,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "tenfi", @@ -23285,7 +23285,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "btfa", @@ -23296,7 +23296,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "aquagoat", @@ -23307,7 +23307,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "titano", @@ -23318,7 +23318,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "sanshu", @@ -23329,7 +23329,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "avn", @@ -23340,7 +23340,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "tenshi", @@ -23351,7 +23351,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "poodl", @@ -23362,7 +23362,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "pika", @@ -23373,7 +23373,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "geth", @@ -23384,7 +23384,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "defc", @@ -23395,7 +23395,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "keanu", @@ -23406,7 +23406,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "rxcg", @@ -23417,7 +23417,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "dgmoon", @@ -23428,7 +23428,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "koromaru", @@ -23439,7 +23439,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "nsh", @@ -23450,7 +23450,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "fluf", @@ -23461,7 +23461,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "hmc", @@ -23472,7 +23472,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "nyxt", @@ -23483,7 +23483,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "lof", @@ -23494,7 +23494,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "usd", @@ -23505,7 +23505,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "gbp", @@ -23516,7 +23516,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "cad", @@ -23527,7 +23527,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "jpy", @@ -23538,7 +23538,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "rub", @@ -23549,7 +23549,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "aud", @@ -23560,7 +23560,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "chf", @@ -23571,7 +23571,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "czk", @@ -23582,7 +23582,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "dkk", @@ -23593,7 +23593,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "nok", @@ -23604,7 +23604,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "nzd", @@ -23615,7 +23615,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "pln", @@ -23626,7 +23626,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "sek", @@ -23637,7 +23637,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "try", @@ -23648,7 +23648,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "zar", @@ -23659,7 +23659,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "huf", @@ -23670,7 +23670,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "ils", @@ -23681,7 +23681,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "brl", @@ -23692,7 +23692,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "fetbsc", @@ -23703,7 +23703,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "mononoke", @@ -23715,7 +23715,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "daibsc", @@ -23726,7 +23726,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "miota", @@ -23737,7 +23737,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "luffy", @@ -23748,7 +23748,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "vgx", @@ -23759,7 +23759,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "usdtsol", @@ -23771,7 +23771,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "nearbsc", @@ -23782,7 +23782,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "iotxbsc", @@ -23793,7 +23793,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "metiserc20", @@ -23804,7 +23804,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "nowbep2", @@ -23815,7 +23815,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "saitamav2", @@ -23826,7 +23826,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "vlxbsc", @@ -23837,7 +23837,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dfibsc", @@ -23848,7 +23848,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "usdcsol", @@ -23859,7 +23859,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "clear", @@ -23870,7 +23870,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "usdcbsc", @@ -23881,7 +23881,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bttcbsc", @@ -23892,7 +23892,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "maticbsc", @@ -23903,7 +23903,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "avaxbsc", @@ -23914,7 +23914,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ppm", @@ -23925,7 +23925,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bttc", @@ -23936,7 +23936,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "trxbsc", @@ -23947,7 +23947,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "etcbsc", @@ -23958,7 +23958,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "atombsc", @@ -23969,7 +23969,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bchbsc", @@ -23980,7 +23980,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "vetbsc", @@ -23991,7 +23991,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "filbsc", @@ -24002,7 +24002,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "egldbsc", @@ -24013,7 +24013,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "axsbsc", @@ -24024,7 +24024,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "tusdbsc", @@ -24035,7 +24035,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "eosbsc", @@ -24046,7 +24046,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "mkrbsc", @@ -24057,7 +24057,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "usdpbsc", @@ -24068,7 +24068,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "daimatic", @@ -24079,7 +24079,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "zecbsc", @@ -24090,7 +24090,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ftmbsc", @@ -24101,7 +24101,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "manabsc", @@ -24112,7 +24112,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "batbsc", @@ -24123,7 +24123,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "sxpmainnet", @@ -24135,7 +24135,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "zilbsc", @@ -24146,7 +24146,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "compbsc", @@ -24157,7 +24157,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "snxbsc", @@ -24168,7 +24168,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "solbsc", @@ -24179,7 +24179,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ceekerc20", @@ -24191,7 +24191,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "yfibsc", @@ -24202,7 +24202,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "kncbsc", @@ -24213,7 +24213,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "chrbsc", @@ -24224,7 +24224,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "sushibsc", @@ -24235,7 +24235,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "usdtmatic", @@ -24246,7 +24246,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ankrbsc", @@ -24257,7 +24257,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "celrbsc", @@ -24268,7 +24268,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "sandmatic", @@ -24280,7 +24280,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "busdbnb", @@ -24291,7 +24291,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "xcnbsc", @@ -24302,7 +24302,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "plamatic", @@ -24313,7 +24313,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "fluxerc20", @@ -24324,7 +24324,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "c98erc20", @@ -24335,7 +24335,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "krw", @@ -24346,7 +24346,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "world", @@ -24357,7 +24357,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": true + "isAvailable": true, }, { "ticker": "all", @@ -24368,7 +24368,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "amd", @@ -24379,7 +24379,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "ang", @@ -24390,7 +24390,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "bam", @@ -24401,7 +24401,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "bbd", @@ -24412,7 +24412,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "bdt", @@ -24423,7 +24423,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "bmd", @@ -24434,7 +24434,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "bnd", @@ -24445,7 +24445,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "bob", @@ -24456,7 +24456,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "bwp", @@ -24467,7 +24467,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "byn", @@ -24478,7 +24478,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "cny", @@ -24489,7 +24489,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "djf", @@ -24500,7 +24500,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "egp", @@ -24511,7 +24511,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "ghs", @@ -24522,7 +24522,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "gtq", @@ -24533,7 +24533,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "hnl", @@ -24544,7 +24544,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "hrk", @@ -24555,7 +24555,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "isk", @@ -24566,7 +24566,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "jmd", @@ -24577,7 +24577,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "kes", @@ -24588,7 +24588,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "kgs", @@ -24599,7 +24599,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "khr", @@ -24610,7 +24610,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "kyd", @@ -24621,7 +24621,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "lbp", @@ -24632,7 +24632,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "lkr", @@ -24643,7 +24643,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "mkd", @@ -24654,7 +24654,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "mnt", @@ -24665,7 +24665,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "mop", @@ -24676,7 +24676,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "mur", @@ -24687,7 +24687,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "mzn", @@ -24698,7 +24698,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "pab", @@ -24709,7 +24709,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "pgk", @@ -24720,7 +24720,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "pkr", @@ -24731,7 +24731,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "pyg", @@ -24742,7 +24742,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "rsd", @@ -24753,7 +24753,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "sos", @@ -24764,7 +24764,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "thb", @@ -24775,7 +24775,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "ttd", @@ -24786,7 +24786,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "tzs", @@ -24797,7 +24797,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "ugx", @@ -24808,7 +24808,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "xaf", @@ -24819,7 +24819,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "xof", @@ -24830,7 +24830,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "zmw", @@ -24841,7 +24841,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": false, - "isAvailable": false + "isAvailable": false, }, { "ticker": "momento", @@ -24852,7 +24852,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "fire", @@ -24863,7 +24863,7 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ghc", @@ -24874,8 +24874,8 @@ const List> getPairedCurrenciesJSON = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true - } + "isAvailable": true, + }, ]; const List> getPairedCurrenciesJSONFixedRate = [ @@ -24888,7 +24888,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": true, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "eth", @@ -24899,7 +24899,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": true, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ethbsc", @@ -24910,7 +24910,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "usdt", @@ -24921,7 +24921,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": true, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "usdterc20", @@ -24933,7 +24933,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": true, "isStable": true, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "usdttrc20", @@ -24945,7 +24945,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": true, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "usdtbsc", @@ -24956,7 +24956,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "usdc", @@ -24967,7 +24967,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": true, "isStable": true, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "usdcmatic", @@ -24979,7 +24979,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": true, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bnbmainnet", @@ -24991,7 +24991,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bnbbsc", @@ -25002,7 +25002,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "busd", @@ -25013,7 +25013,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": true, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "busdbsc", @@ -25024,7 +25024,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "xrp", @@ -25035,7 +25035,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": true, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "xrpbsc", @@ -25046,7 +25046,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ada", @@ -25057,7 +25057,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": true, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "adabsc", @@ -25068,7 +25068,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "sol", @@ -25079,7 +25079,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "doge", @@ -25090,7 +25090,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dot", @@ -25101,7 +25101,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": true, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dotbsc", @@ -25112,7 +25112,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dai", @@ -25123,7 +25123,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": true, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "matic", @@ -25134,7 +25134,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "maticmainnet", @@ -25146,7 +25146,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "shib", @@ -25157,7 +25157,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "shibbsc", @@ -25168,7 +25168,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "trx", @@ -25179,7 +25179,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": true, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "avax", @@ -25190,7 +25190,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "avaxc", @@ -25201,7 +25201,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "leo", @@ -25212,7 +25212,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "wbtc", @@ -25223,7 +25223,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "uni", @@ -25234,7 +25234,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "etc", @@ -25245,7 +25245,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ltc", @@ -25256,7 +25256,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": true, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ltcbsc", @@ -25267,7 +25267,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ftt", @@ -25278,7 +25278,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "link", @@ -25289,7 +25289,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "atom", @@ -25300,7 +25300,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "cro", @@ -25311,7 +25311,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "near", @@ -25322,7 +25322,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "xlm", @@ -25333,7 +25333,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bch", @@ -25344,7 +25344,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "algo", @@ -25355,7 +25355,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "flow", @@ -25366,7 +25366,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "vet", @@ -25377,7 +25377,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": true, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "icp", @@ -25388,7 +25388,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "fil", @@ -25399,7 +25399,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ape", @@ -25410,7 +25410,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "eos", @@ -25421,7 +25421,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "mana", @@ -25432,7 +25432,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "sand", @@ -25443,7 +25443,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "hbar", @@ -25454,7 +25454,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "xtz", @@ -25465,7 +25465,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "xtzbsc", @@ -25476,7 +25476,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "chz", @@ -25487,7 +25487,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "qnt", @@ -25498,7 +25498,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "egld", @@ -25509,7 +25509,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "aave", @@ -25520,7 +25520,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "theta", @@ -25531,7 +25531,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "axs", @@ -25542,7 +25542,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "tusd", @@ -25553,7 +25553,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": true, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bsv", @@ -25564,7 +25564,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "okb", @@ -25575,7 +25575,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "galabsc", @@ -25586,7 +25586,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "zec", @@ -25597,7 +25597,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "usdp", @@ -25608,7 +25608,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "snx", @@ -25619,7 +25619,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bttbsc", @@ -25630,7 +25630,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "iota", @@ -25641,7 +25641,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "mkr", @@ -25652,7 +25652,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "hnt", @@ -25663,7 +25663,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ht", @@ -25674,7 +25674,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "grt", @@ -25685,7 +25685,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "klay", @@ -25696,7 +25696,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ftm", @@ -25707,7 +25707,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ftmmainnet", @@ -25718,7 +25718,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "neo", @@ -25729,7 +25729,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "paxg", @@ -25740,7 +25740,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ldo", @@ -25751,7 +25751,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "cake", @@ -25762,7 +25762,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "crv", @@ -25773,7 +25773,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "nexo", @@ -25784,7 +25784,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bat", @@ -25795,7 +25795,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dash", @@ -25806,7 +25806,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "waves", @@ -25817,7 +25817,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "zil", @@ -25828,7 +25828,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": true, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "lrc", @@ -25839,7 +25839,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "enj", @@ -25850,7 +25850,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ksm", @@ -25861,7 +25861,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dcr", @@ -25872,7 +25872,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "btg", @@ -25883,7 +25883,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "gmt", @@ -25894,7 +25894,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "gno", @@ -25905,7 +25905,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "xem", @@ -25916,7 +25916,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "twt", @@ -25927,7 +25927,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "1inch", @@ -25938,7 +25938,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "1inchbsc", @@ -25949,7 +25949,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "celo", @@ -25960,7 +25960,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "hot", @@ -25971,7 +25971,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "galaerc20", @@ -25983,7 +25983,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ankr", @@ -25994,7 +25994,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "comp", @@ -26005,7 +26005,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "cvx", @@ -26016,7 +26016,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "qtum", @@ -26027,7 +26027,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "yfi", @@ -26038,7 +26038,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "xdc", @@ -26049,7 +26049,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "iotx", @@ -26060,7 +26060,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "cel", @@ -26071,7 +26071,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "gusd", @@ -26082,7 +26082,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": true, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "tfuel", @@ -26093,7 +26093,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "rvn", @@ -26104,7 +26104,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "flux", @@ -26115,7 +26115,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bal", @@ -26126,7 +26126,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "amp", @@ -26137,7 +26137,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "omg", @@ -26148,7 +26148,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "zrx", @@ -26159,7 +26159,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "one", @@ -26170,7 +26170,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "rsr", @@ -26181,7 +26181,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "icx", @@ -26192,7 +26192,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ens", @@ -26203,7 +26203,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "jst", @@ -26214,7 +26214,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "xym", @@ -26225,7 +26225,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "iost", @@ -26236,7 +26236,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "lpt", @@ -26247,7 +26247,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "glm", @@ -26258,7 +26258,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "audio", @@ -26269,7 +26269,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "storj", @@ -26280,7 +26280,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ont", @@ -26291,7 +26291,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ontbsc", @@ -26302,7 +26302,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "waxp", @@ -26313,7 +26313,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "sc", @@ -26324,7 +26324,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "srm", @@ -26335,7 +26335,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "zen", @@ -26346,7 +26346,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "imx", @@ -26357,7 +26357,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "uma", @@ -26368,7 +26368,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "scrt", @@ -26379,7 +26379,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "skl", @@ -26390,7 +26390,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "poly", @@ -26401,7 +26401,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "slp", @@ -26412,7 +26412,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "woobsc", @@ -26423,7 +26423,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "woo", @@ -26434,7 +26434,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "chsb", @@ -26445,7 +26445,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "elon", @@ -26456,7 +26456,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dgb", @@ -26467,7 +26467,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dao", @@ -26478,7 +26478,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "pla", @@ -26489,7 +26489,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "cvc", @@ -26500,7 +26500,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "spell", @@ -26511,7 +26511,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "sushi", @@ -26522,7 +26522,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "rndr", @@ -26533,7 +26533,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "lsk", @@ -26544,7 +26544,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "btcst", @@ -26555,7 +26555,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "eps", @@ -26566,7 +26566,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "pundix", @@ -26577,7 +26577,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "celr", @@ -26588,7 +26588,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ren", @@ -26599,7 +26599,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "nano", @@ -26610,7 +26610,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "xyo", @@ -26621,7 +26621,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "win", @@ -26632,7 +26632,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ong", @@ -26643,7 +26643,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "people", @@ -26654,7 +26654,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "uos", @@ -26665,7 +26665,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "cfx", @@ -26676,7 +26676,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "req", @@ -26687,7 +26687,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dydx", @@ -26698,7 +26698,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ardr", @@ -26709,7 +26709,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "rly", @@ -26720,7 +26720,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "powr", @@ -26731,7 +26731,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "nmr", @@ -26742,7 +26742,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "coti", @@ -26753,7 +26753,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "rlc", @@ -26764,7 +26764,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "snt", @@ -26775,7 +26775,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ocean", @@ -26786,7 +26786,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "chr", @@ -26797,7 +26797,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "api3", @@ -26808,7 +26808,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dent", @@ -26819,7 +26819,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bnt", @@ -26830,7 +26830,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "fxs", @@ -26841,7 +26841,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "hex", @@ -26852,7 +26852,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "steth", @@ -26863,7 +26863,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "btcb", @@ -26874,7 +26874,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "lunc", @@ -26885,7 +26885,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dfi", @@ -26896,7 +26896,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bnx", @@ -26907,7 +26907,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "rpl", @@ -26918,7 +26918,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "luna", @@ -26929,7 +26929,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "babydoge", @@ -26940,7 +26940,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "raca", @@ -26951,7 +26951,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "prom", @@ -26962,7 +26962,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "sys", @@ -26973,7 +26973,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "c98", @@ -26984,7 +26984,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "gal", @@ -26995,7 +26995,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bico", @@ -27006,7 +27006,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "steem", @@ -27017,7 +27017,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "susd", @@ -27028,7 +27028,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ctsi", @@ -27039,7 +27039,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "hxro", @@ -27050,7 +27050,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "fun", @@ -27061,7 +27061,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "rep", @@ -27072,7 +27072,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "strax", @@ -27083,7 +27083,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "pyr", @@ -27094,7 +27094,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bsw", @@ -27105,7 +27105,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "lyxe", @@ -27116,7 +27116,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "mtl", @@ -27127,7 +27127,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "stmx", @@ -27138,7 +27138,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "stpt", @@ -27149,7 +27149,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ufo", @@ -27160,7 +27160,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "elf", @@ -27171,7 +27171,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "oxt", @@ -27182,7 +27182,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ach", @@ -27193,7 +27193,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ogn", @@ -27204,7 +27204,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "sfund", @@ -27215,7 +27215,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "tlm", @@ -27226,7 +27226,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "loom", @@ -27237,7 +27237,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ant", @@ -27248,7 +27248,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "alice", @@ -27259,7 +27259,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "fet", @@ -27270,7 +27270,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ygg", @@ -27281,7 +27281,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ark", @@ -27292,7 +27292,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "utk", @@ -27303,7 +27303,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "super", @@ -27314,7 +27314,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dusk", @@ -27325,7 +27325,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ilv", @@ -27336,7 +27336,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "mbox", @@ -27347,7 +27347,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "sun", @@ -27358,7 +27358,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "aergo", @@ -27369,7 +27369,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "vra", @@ -27380,7 +27380,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "xvg", @@ -27391,7 +27391,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bake", @@ -27402,7 +27402,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dpi", @@ -27413,7 +27413,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "pols", @@ -27424,7 +27424,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "mln", @@ -27435,7 +27435,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "xcad", @@ -27446,7 +27446,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "divi", @@ -27457,7 +27457,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "tomo", @@ -27468,7 +27468,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "arpa", @@ -27479,7 +27479,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "sfp", @@ -27490,7 +27490,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "band", @@ -27501,7 +27501,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bandmainnet", @@ -27513,7 +27513,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "sps", @@ -27524,7 +27524,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ava", @@ -27535,7 +27535,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "avaerc20", @@ -27546,7 +27546,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "avabsc", @@ -27557,7 +27557,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "jasmy", @@ -27568,7 +27568,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "cult", @@ -27579,7 +27579,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "starl", @@ -27590,7 +27590,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "kmd", @@ -27601,7 +27601,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "alpaca", @@ -27612,7 +27612,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "blz", @@ -27623,7 +27623,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "alcx", @@ -27634,7 +27634,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "yfii", @@ -27645,7 +27645,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bel", @@ -27656,7 +27656,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "mc", @@ -27667,7 +27667,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dia", @@ -27678,7 +27678,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "tko", @@ -27689,7 +27689,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bcd", @@ -27700,7 +27700,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "farm", @@ -27711,7 +27711,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ata", @@ -27722,7 +27722,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "fio", @@ -27733,7 +27733,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ubt", @@ -27744,7 +27744,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dnt", @@ -27755,7 +27755,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "om", @@ -27766,7 +27766,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "grs", @@ -27777,7 +27777,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "gas", @@ -27788,7 +27788,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "fox", @@ -27799,7 +27799,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "firo", @@ -27810,7 +27810,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "aion", @@ -27821,7 +27821,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "adx", @@ -27832,7 +27832,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "cudos", @@ -27843,7 +27843,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "nwc", @@ -27855,7 +27855,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "rook", @@ -27866,7 +27866,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "solve", @@ -27877,7 +27877,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "klv", @@ -27888,7 +27888,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "front", @@ -27899,7 +27899,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "wtc", @@ -27910,7 +27910,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "beam", @@ -27921,7 +27921,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "gto", @@ -27932,7 +27932,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "akro", @@ -27943,7 +27943,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "hez", @@ -27954,7 +27954,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "mdt", @@ -27965,7 +27965,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "pnk", @@ -27976,7 +27976,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ast", @@ -27987,7 +27987,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "snm", @@ -27998,7 +27998,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "xdb", @@ -28009,7 +28009,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "pivx", @@ -28020,7 +28020,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "mir", @@ -28031,7 +28031,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "perl", @@ -28042,7 +28042,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "go", @@ -28053,7 +28053,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "urus", @@ -28064,7 +28064,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "arv", @@ -28075,7 +28075,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "cell", @@ -28086,7 +28086,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "caps", @@ -28097,7 +28097,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "wabi", @@ -28108,7 +28108,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "shr", @@ -28119,7 +28119,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "san", @@ -28130,7 +28130,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "fuse", @@ -28141,7 +28141,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "poolz", @@ -28152,7 +28152,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "vib", @@ -28163,7 +28163,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "now", @@ -28174,7 +28174,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "muse", @@ -28185,7 +28185,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "mint", @@ -28196,7 +28196,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "xor", @@ -28207,7 +28207,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "mtv", @@ -28218,7 +28218,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ppt", @@ -28229,7 +28229,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "spi", @@ -28240,7 +28240,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "belt", @@ -28251,7 +28251,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "awc", @@ -28262,7 +28262,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "defit", @@ -28273,7 +28273,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "srk", @@ -28284,7 +28284,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "lgcy", @@ -28295,7 +28295,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "nftb", @@ -28306,7 +28306,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "hotcross", @@ -28317,7 +28317,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bin", @@ -28328,7 +28328,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "tking", @@ -28339,7 +28339,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "mph", @@ -28350,7 +28350,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "skill", @@ -28361,7 +28361,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "xio", @@ -28372,7 +28372,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "zoon", @@ -28383,7 +28383,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "naft", @@ -28394,7 +28394,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "marsh", @@ -28405,7 +28405,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "spo", @@ -28416,7 +28416,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "eved", @@ -28427,7 +28427,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "lead", @@ -28438,7 +28438,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "cns", @@ -28449,7 +28449,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "sfuel", @@ -28460,7 +28460,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "leash", @@ -28471,7 +28471,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "flokibsc", @@ -28482,7 +28482,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "floki", @@ -28493,7 +28493,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "volt", @@ -28504,7 +28504,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "brise", @@ -28515,7 +28515,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "kishu", @@ -28526,7 +28526,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "shinja", @@ -28537,7 +28537,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ntvrk", @@ -28548,7 +28548,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "akita", @@ -28559,7 +28559,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "zinu", @@ -28570,7 +28570,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "gafa", @@ -28581,7 +28581,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "trvl", @@ -28592,7 +28592,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "kibabsc", @@ -28603,7 +28603,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "kiba", @@ -28614,7 +28614,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "guard", @@ -28625,7 +28625,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "blocks", @@ -28636,7 +28636,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "copi", @@ -28647,7 +28647,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "dogecoin", @@ -28658,7 +28658,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "lblock", @@ -28669,7 +28669,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "asia", @@ -28680,7 +28680,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "gspi", @@ -28691,7 +28691,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "gmr", @@ -28702,7 +28702,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "knc", @@ -28713,7 +28713,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "btfa", @@ -28724,7 +28724,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "fjb", @@ -28735,7 +28735,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "wise", @@ -28746,7 +28746,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "tenfi", @@ -28757,7 +28757,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "aquagoat", @@ -28768,7 +28768,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "avn", @@ -28779,7 +28779,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "geth", @@ -28790,7 +28790,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "tenshi", @@ -28801,7 +28801,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "poodl", @@ -28812,7 +28812,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "fluf", @@ -28823,7 +28823,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "nyxt", @@ -28834,7 +28834,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "lof", @@ -28845,7 +28845,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "fetbsc", @@ -28856,7 +28856,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "mononoke", @@ -28868,7 +28868,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "luffy", @@ -28879,7 +28879,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "vgx", @@ -28890,7 +28890,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "usdtsol", @@ -28902,7 +28902,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "nearbsc", @@ -28913,7 +28913,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "iotxbsc", @@ -28924,7 +28924,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "metiserc20", @@ -28935,7 +28935,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "usdcsol", @@ -28946,7 +28946,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "clear", @@ -28957,7 +28957,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "usdcbsc", @@ -28968,7 +28968,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bttcbsc", @@ -28979,7 +28979,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "maticbsc", @@ -28990,7 +28990,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "avaxbsc", @@ -29001,7 +29001,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ppm", @@ -29012,7 +29012,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bttc", @@ -29023,7 +29023,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "trxbsc", @@ -29034,7 +29034,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "etcbsc", @@ -29045,7 +29045,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "atombsc", @@ -29056,7 +29056,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "bchbsc", @@ -29067,7 +29067,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "vetbsc", @@ -29078,7 +29078,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "filbsc", @@ -29089,7 +29089,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "egldbsc", @@ -29100,7 +29100,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "axsbsc", @@ -29111,7 +29111,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "tusdbsc", @@ -29122,7 +29122,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "eosbsc", @@ -29133,7 +29133,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "mkrbsc", @@ -29144,7 +29144,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "usdpbsc", @@ -29155,7 +29155,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "zecbsc", @@ -29166,7 +29166,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ftmbsc", @@ -29177,7 +29177,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "manabsc", @@ -29188,7 +29188,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "batbsc", @@ -29199,7 +29199,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "zilbsc", @@ -29210,7 +29210,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "compbsc", @@ -29221,7 +29221,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "snxbsc", @@ -29232,7 +29232,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "solbsc", @@ -29243,7 +29243,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ceekerc20", @@ -29255,7 +29255,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "yfibsc", @@ -29266,7 +29266,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "kncbsc", @@ -29277,7 +29277,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "chrbsc", @@ -29288,7 +29288,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "sushibsc", @@ -29299,7 +29299,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ankrbsc", @@ -29310,7 +29310,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "celrbsc", @@ -29321,7 +29321,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "sandmatic", @@ -29333,7 +29333,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "xcnbsc", @@ -29344,7 +29344,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "plamatic", @@ -29355,7 +29355,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "c98erc20", @@ -29366,7 +29366,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "momento", @@ -29377,7 +29377,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "fire", @@ -29388,7 +29388,7 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true + "isAvailable": true, }, { "ticker": "ghc", @@ -29399,8 +29399,8 @@ const List> getPairedCurrenciesJSONFixedRate = [ "featured": false, "isStable": false, "supportsFixedRate": true, - "isAvailable": true - } + "isAvailable": true, + }, ]; const Map estFixedRateExchangeAmountJSON = { @@ -29409,7 +29409,7 @@ const Map estFixedRateExchangeAmountJSON = { "transactionSpeedForecast": "10-60", "warningMessage": null, "rateId": "1t2W5KBPqhycSJVYpaNZzYWLfMr0kSFe", - "validUntil": "2022-08-29T18:42:12.940Z" + "validUntil": "2022-08-29T18:42:12.940Z", }; const List> fixedRateMarketsJSON = [ @@ -29419,7 +29419,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.978, "minerFee": 0.00032, "min": 0.0880393, - "max": 83.33363733 + "max": 83.33363733, }, { "from": "btg", @@ -29427,7 +29427,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.14941302599839185, "minerFee": 0.0010244438488340927, "min": 0.09442316, - "max": 83.339702 + "max": 83.339702, }, { "from": "btg", @@ -29435,7 +29435,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.00111492, "minerFee": 0.0000339324, "min": 0.09972141, - "max": 83.34848533 + "max": 83.34848533, }, { "from": "btg", @@ -29443,7 +29443,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.35757536882617064, "minerFee": 0.0001584990378447723, "min": 0.08815272, - "max": 83.33374508 + "max": 83.33374508, }, { "from": "btg", @@ -29451,7 +29451,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.6819082568807339, "minerFee": 0.0009035596330275229, "min": 0.08901381, - "max": 83.33456311 + "max": 83.33456311, }, { "from": "btg", @@ -29459,7 +29459,7 @@ const List> fixedRateMarketsJSON = [ "rate": 7587.544889696968, "minerFee": 1.5413161373737372, "min": 0.08791797, - "max": 83.33352206 + "max": 83.33352206, }, { "from": "btg", @@ -29467,7 +29467,7 @@ const List> fixedRateMarketsJSON = [ "rate": 50.35772357723577, "minerFee": 0.40823848238482385, "min": 0.09564422, - "max": 83.340862 + "max": 83.340862, }, { "from": "btg", @@ -29475,7 +29475,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.4083956043956044, "minerFee": 0.0008668131868131869, "min": 0.08979579, - "max": 83.335306 + "max": 83.335306, }, { "from": "btg", @@ -29483,7 +29483,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.1899352640545145, "minerFee": 0.0001314752538330494, "min": 0.08839629, - "max": 83.33397646 + "max": 83.33397646, }, { "from": "btg", @@ -29491,7 +29491,7 @@ const List> fixedRateMarketsJSON = [ "rate": 7.1099066615678765, "minerFee": 0.011163174913957935, "min": 0.08925485, - "max": 83.3347921 + "max": 83.3347921, }, { "from": "btg", @@ -29499,7 +29499,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.4807761966364812, "minerFee": 0.00017865459249676583, "min": 0.08808272, - "max": 83.33367858 + "max": 83.33367858, }, { "from": "btg", @@ -29507,7 +29507,7 @@ const List> fixedRateMarketsJSON = [ "rate": 215.27520369124952, "minerFee": 0.05521884722965227, "min": 0.08797014, - "max": 83.33357162 + "max": 83.33357162, }, { "from": "btg", @@ -29515,7 +29515,7 @@ const List> fixedRateMarketsJSON = [ "rate": 68.61046153846155, "minerFee": 0.3112246153846154, "min": 0.09215562, - "max": 83.33754783 + "max": 83.33754783, }, { "from": "btg", @@ -29523,7 +29523,7 @@ const List> fixedRateMarketsJSON = [ "rate": 506.7818181818181, "minerFee": 0.33290909090909093, "min": 0.08807229, - "max": 83.33394366 + "max": 83.33394366, }, { "from": "btg", @@ -29531,7 +29531,7 @@ const List> fixedRateMarketsJSON = [ "rate": 12.238419319429198, "minerFee": 1.5140897553896817, "min": 0.19528785, - "max": 83.43552345 + "max": 83.43552345, }, { "from": "btg", @@ -29539,7 +29539,7 @@ const List> fixedRateMarketsJSON = [ "rate": 2144.076923076923, "minerFee": 0.35776923076923073, "min": 0.0878825, - "max": 83.33348836 + "max": 83.33348836, }, { "from": "btg", @@ -29547,7 +29547,7 @@ const List> fixedRateMarketsJSON = [ "rate": 217.71801333333332, "minerFee": 2.035618488888889, "min": 0.0968634, - "max": 83.34202022 + "max": 83.34202022, }, { "from": "btg", @@ -29555,7 +29555,7 @@ const List> fixedRateMarketsJSON = [ "rate": 107.9303000968054, "minerFee": 12.200577818809293, "min": 0.18600747, - "max": 83.42670709 + "max": 83.42670709, }, { "from": "btg", @@ -29563,7 +29563,7 @@ const List> fixedRateMarketsJSON = [ "rate": 153.35900962861072, "minerFee": 18.1227649785282, "min": 0.19046837, - "max": 83.43094494 + "max": 83.43094494, }, { "from": "btg", @@ -29571,7 +29571,7 @@ const List> fixedRateMarketsJSON = [ "rate": 166.4059701492537, "minerFee": 1.0272238805970149, "min": 0.0937565, - "max": 83.33906866 + "max": 83.33906866, }, { "from": "btg", @@ -29579,7 +29579,7 @@ const List> fixedRateMarketsJSON = [ "rate": 41.2170055452865, "minerFee": 4.792601348391867, "min": 0.18882058, - "max": 83.42937954 + "max": 83.42937954, }, { "from": "btg", @@ -29587,7 +29587,7 @@ const List> fixedRateMarketsJSON = [ "rate": 774.2499999999999, "minerFee": 282.42956266666664, "min": 0.40485075, - "max": 83.63460821 + "max": 83.63460821, }, { "from": "btg", @@ -29595,7 +29595,7 @@ const List> fixedRateMarketsJSON = [ "rate": 74.59896160535116, "minerFee": 8.56401184909699, "min": 0.18755538, - "max": 83.4281776 + "max": 83.4281776, }, { "from": "btg", @@ -29603,7 +29603,7 @@ const List> fixedRateMarketsJSON = [ "rate": 21.37588053215926, "minerFee": 0.10349707656967841, "min": 0.09245448, - "max": 83.33783174 + "max": 83.33783174, }, { "from": "btg", @@ -29611,7 +29611,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.7817253376313944, "minerFee": 0.0002278896257883672, "min": 0.08800441, - "max": 83.33360418 + "max": 83.33360418, }, { "from": "btg", @@ -29619,7 +29619,7 @@ const List> fixedRateMarketsJSON = [ "rate": 356.2044728434505, "minerFee": 14.058274760383387, "min": 0.1263179, - "max": 83.370002 + "max": 83.370002, }, { "from": "btg", @@ -29627,7 +29627,7 @@ const List> fixedRateMarketsJSON = [ "rate": 357.3461538461538, "minerFee": 0.15846153846153846, "min": 0.08815299, - "max": 83.33374533 + "max": 83.33374533, }, { "from": "btg", @@ -29635,7 +29635,7 @@ const List> fixedRateMarketsJSON = [ "rate": 81.91917707567963, "minerFee": 0.015901910360029387, "min": 0.08790941, - "max": 83.33351393 + "max": 83.33351393, }, { "from": "btg", @@ -29643,7 +29643,7 @@ const List> fixedRateMarketsJSON = [ "rate": 62.286033519553065, "minerFee": 7.322690224134078, "min": 0.18994093, - "max": 83.43044388 + "max": 83.43044388, }, { "from": "btg", @@ -29651,7 +29651,7 @@ const List> fixedRateMarketsJSON = [ "rate": 511.4311926605504, "minerFee": 181.11263586477062, "min": 0.39559318, - "max": 83.62581351 + "max": 83.62581351, }, { "from": "btg", @@ -29659,7 +29659,7 @@ const List> fixedRateMarketsJSON = [ "rate": 141.1291139240506, "minerFee": 23.490017377594935, "min": 0.23316384, - "max": 83.47150564 + "max": 83.47150564, }, { "from": "btg", @@ -29667,7 +29667,7 @@ const List> fixedRateMarketsJSON = [ "rate": 2.913641091298667, "minerFee": 0.43348143929919, "min": 0.2171297, - "max": 8.4562732 + "max": 8.4562732, }, { "from": "btg", @@ -29675,7 +29675,7 @@ const List> fixedRateMarketsJSON = [ "rate": 49.07218309859154, "minerFee": 4.7917473090140845, "min": 0.1726251, - "max": 83.41399383 + "max": 83.41399383, }, { "from": "btg", @@ -29683,7 +29683,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.14445518155384615, "minerFee": 0.017155832749538462, "min": 0.19090617, - "max": 8.43136085 + "max": 8.43136085, }, { "from": "btg", @@ -29691,7 +29691,7 @@ const List> fixedRateMarketsJSON = [ "rate": 65.47258041103933, "minerFee": 7.542106490598943, "min": 0.18776946, - "max": 83.42838098 + "max": 83.42838098, }, { "from": "btg", @@ -29699,7 +29699,7 @@ const List> fixedRateMarketsJSON = [ "rate": 18.0982949469242, "minerFee": 2.2297705262489855, "min": 0.19484193, - "max": 83.43509983 + "max": 83.43509983, }, { "from": "btg", @@ -29707,7 +29707,7 @@ const List> fixedRateMarketsJSON = [ "rate": 15.314835164835165, "minerFee": 0.0025054945054945057, "min": 0.0878793, - "max": 83.33348533 + "max": 83.33348533, }, { "from": "btg", @@ -29715,7 +29715,7 @@ const List> fixedRateMarketsJSON = [ "rate": 78.34996486296556, "minerFee": 0.5128179901616303, "min": 0.9276065, - "max": 83.3394145 + "max": 83.3394145, }, { "from": "btg", @@ -29723,7 +29723,7 @@ const List> fixedRateMarketsJSON = [ "rate": 28.6464542651593, "minerFee": 3.5423108464850976, "min": 0.19520763, - "max": 83.43544724 + "max": 83.43544724, }, { "from": "btg", @@ -29731,7 +29731,7 @@ const List> fixedRateMarketsJSON = [ "rate": 5591.813479503722, "minerFee": 1.0148161111662533, "min": 0.08789679, - "max": 83.33350194 + "max": 83.33350194, }, { "from": "btg", @@ -29739,7 +29739,7 @@ const List> fixedRateMarketsJSON = [ "rate": 54.12233009708737, "minerFee": 0.10885436893203884, "min": 0.08968632, - "max": 83.335202 + "max": 83.335202, }, { "from": "btg", @@ -29747,7 +29747,7 @@ const List> fixedRateMarketsJSON = [ "rate": 64.0758620689655, "minerFee": 6.101253498620689, "min": 0.17046022, - "max": 83.4119372 + "max": 83.4119372, }, { "from": "btg", @@ -29755,7 +29755,7 @@ const List> fixedRateMarketsJSON = [ "rate": 4.952998667258995, "minerFee": 0.0018103065304309195, "min": 0.08807676, - "max": 83.33367291 + "max": 83.33367291, }, { "from": "btg", @@ -29763,7 +29763,7 @@ const List> fixedRateMarketsJSON = [ "rate": 122.65346534653465, "minerFee": 0.22006600660066009, "min": 0.08947404, - "max": 83.33500033 + "max": 83.33500033, }, { "from": "btg", @@ -29771,7 +29771,7 @@ const List> fixedRateMarketsJSON = [ "rate": 25.127789046653138, "minerFee": 0.004110885733603786, "min": 0.0878793, - "max": 83.33348533 + "max": 83.33348533, }, { "from": "btg", @@ -29779,7 +29779,7 @@ const List> fixedRateMarketsJSON = [ "rate": 22.531585517999996, "minerFee": 3.32270418896, "min": 0.21594896, - "max": 83.4551515 + "max": 83.4551515, }, { "from": "btg", @@ -29787,7 +29787,7 @@ const List> fixedRateMarketsJSON = [ "rate": 913.8688524590164, "minerFee": 3.1495081967213117, "min": 0.09108983, - "max": 83.33653533 + "max": 83.33653533, }, { "from": "btg", @@ -29795,7 +29795,7 @@ const List> fixedRateMarketsJSON = [ "rate": 1.4220918367346935, "minerFee": 0.0003326530612244898, "min": 0.08794808, - "max": 83.33355066 + "max": 83.33355066, }, { "from": "btg", @@ -29803,7 +29803,7 @@ const List> fixedRateMarketsJSON = [ "rate": 66.9421016826923, "minerFee": 0.011451673076923076, "min": 0.08788656, - "max": 83.33349223 + "max": 83.33349223, }, { "from": "btg", @@ -29811,7 +29811,7 @@ const List> fixedRateMarketsJSON = [ "rate": 2831.0311962814067, "minerFee": 512.7883001779396, "min": 0.24360594, - "max": 83.48142563 + "max": 83.48142563, }, { "from": "btg", @@ -29819,7 +29819,7 @@ const List> fixedRateMarketsJSON = [ "rate": 2.4237391304347824, "minerFee": 0.0003965217391304348, "min": 0.0878793, - "max": 83.33348533 + "max": 83.33348533, }, { "from": "btg", @@ -29827,7 +29827,7 @@ const List> fixedRateMarketsJSON = [ "rate": 478.5064377682403, "minerFee": 0.17828326180257512, "min": 0.08808369, - "max": 83.33367949 + "max": 83.33367949, }, { "from": "btg", @@ -29835,7 +29835,7 @@ const List> fixedRateMarketsJSON = [ "rate": 9.138688524590162, "minerFee": 0.022855081967213114, "min": 0.11150935, - "max": 83.33565693 + "max": 83.33565693, }, { "from": "btg", @@ -29843,7 +29843,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.4225770628636363, "minerFee": 0.00026913326181818184, "min": 0.08834211, - "max": 83.333925 + "max": 83.333925, }, { "from": "btg", @@ -29851,7 +29851,7 @@ const List> fixedRateMarketsJSON = [ "rate": 22.533179853599997, "minerFee": 2.281977409792, "min": 0.17577619, - "max": 83.41698737 + "max": 83.41698737, }, { "from": "btg", @@ -29859,7 +29859,7 @@ const List> fixedRateMarketsJSON = [ "rate": 1664.059701492537, "minerFee": 344.29837234597017, "min": 0.2900701, - "max": 83.52556659 + "max": 83.52556659, }, { "from": "btg", @@ -29867,7 +29867,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.9460540857430729, "minerFee": 0.22812232367455917, "min": 0.29734157, - "max": 8.53247448 + "max": 8.53247448, }, { "from": "btg", @@ -29875,7 +29875,7 @@ const List> fixedRateMarketsJSON = [ "rate": 13.894815553339976, "minerFee": 1.6320535804586243, "min": 0.18986001, - "max": 83.430367 + "max": 83.430367, }, { "from": "btg", @@ -29883,7 +29883,7 @@ const List> fixedRateMarketsJSON = [ "rate": 1.3132155477031802, "minerFee": 0.1431611909893993, "min": 0.18250796, - "max": 41.75671589 + "max": 41.75671589, }, { "from": "btg", @@ -29891,7 +29891,7 @@ const List> fixedRateMarketsJSON = [ "rate": 92.44776119402984, "minerFee": 0.015124378109452736, "min": 0.0878793, - "max": 83.33348533 + "max": 83.33348533, }, { "from": "btg", @@ -29899,7 +29899,7 @@ const List> fixedRateMarketsJSON = [ "rate": 14.913322632423755, "minerFee": 0.0074398073836276085, "min": 0.08820715, - "max": 83.33379679 + "max": 83.33379679, }, { "from": "btg", @@ -29907,7 +29907,7 @@ const List> fixedRateMarketsJSON = [ "rate": 23400.83937943925, "minerFee": 2345.177409170685, "min": 0.17503259, - "max": 8.41628095 + "max": 8.41628095, }, { "from": "btg", @@ -29915,7 +29915,7 @@ const List> fixedRateMarketsJSON = [ "rate": 157.2524682651622, "minerFee": 18.869392025176303, "min": 0.19205238, - "max": 83.43244975 + "max": 83.43244975, }, { "from": "btg", @@ -29923,7 +29923,7 @@ const List> fixedRateMarketsJSON = [ "rate": 2658.445121688583, "minerFee": 0.44491944731101574, "min": 0.08788298, - "max": 83.33348882 + "max": 83.33348882, }, { "from": "btg", @@ -29931,7 +29931,7 @@ const List> fixedRateMarketsJSON = [ "rate": 1161.375, "minerFee": 280.20967087, "min": 0.88734432, - "max": 8.53261043 + "max": 8.53261043, }, { "from": "btg", @@ -29939,7 +29939,7 @@ const List> fixedRateMarketsJSON = [ "rate": 10729.367205683944, "minerFee": 1270.1233723482715, "min": 0.1906056, - "max": 83.43107531 + "max": 83.43107531, }, { "from": "btg", @@ -29947,7 +29947,7 @@ const List> fixedRateMarketsJSON = [ "rate": 81.91917707567966, "minerFee": 0.014651910360029392, "min": 0.08789423, - "max": 83.33349951 + "max": 83.33349951, }, { "from": "btg", @@ -29955,7 +29955,7 @@ const List> fixedRateMarketsJSON = [ "rate": 667.6167664670658, "minerFee": 0.11922155688622754, "min": 0.08789395, - "max": 83.33349924 + "max": 83.33349924, }, { "from": "btg", @@ -29963,7 +29963,7 @@ const List> fixedRateMarketsJSON = [ "rate": 13.291845493562231, "minerFee": 1.8319124050500715, "min": 0.20750763, - "max": 83.44713224 + "max": 83.44713224, }, { "from": "btg", @@ -29971,7 +29971,7 @@ const List> fixedRateMarketsJSON = [ "rate": 3.4347504621072082, "minerFee": 0.4073198423659889, "min": 0.19079756, - "max": 83.43125767 + "max": 83.43125767, }, { "from": "btg", @@ -29979,7 +29979,7 @@ const List> fixedRateMarketsJSON = [ "rate": 453.2195121951219, "minerFee": 39.28528055146341, "min": 2.90652983, - "max": 83.40493666 + "max": 83.40493666, }, { "from": "btg", @@ -29987,7 +29987,7 @@ const List> fixedRateMarketsJSON = [ "rate": 774.2499999999999, "minerFee": 0.13666666666666666, "min": 0.08789193, - "max": 83.33349733 + "max": 83.33349733, }, { "from": "btg", @@ -29995,7 +29995,7 @@ const List> fixedRateMarketsJSON = [ "rate": 271.2700729927007, "minerFee": 27.484418842043794, "min": 0.17581551, - "max": 83.41702472 + "max": 83.41702472, }, { "from": "btg", @@ -30003,7 +30003,7 @@ const List> fixedRateMarketsJSON = [ "rate": 62.460504201680656, "minerFee": 0.010218487394957981, "min": 0.0878793, - "max": 83.33348533 + "max": 83.33348533, }, { "from": "btg", @@ -30011,7 +30011,7 @@ const List> fixedRateMarketsJSON = [ "rate": 43.36522753792299, "minerFee": 5.322881865752626, "min": 0.19444359, - "max": 83.4347214 + "max": 83.4347214, }, { "from": "btg", @@ -30019,7 +30019,7 @@ const List> fixedRateMarketsJSON = [ "rate": 118.48246546227416, "minerFee": 13.629062924431457, "min": 0.18784309, - "max": 83.42845093 + "max": 83.42845093, }, { "from": "btg", @@ -30027,7 +30027,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.08000287026406429, "minerFee": 0.00041308840413318025, "min": 0.09277544, - "max": 83.33813666 + "max": 83.33813666, }, { "from": "btg", @@ -30035,7 +30035,7 @@ const List> fixedRateMarketsJSON = [ "rate": 19.067057233715165, "minerFee": 1.784705334966661, "min": 0.1691243, - "max": 18.41066808 + "max": 18.41066808, }, { "from": "btg", @@ -30043,7 +30043,7 @@ const List> fixedRateMarketsJSON = [ "rate": 952.9230769230768, "minerFee": 79.44165195589743, "min": 0.16021002, - "max": 83.40219951 + "max": 83.40219951, }, { "from": "btg", @@ -30051,7 +30051,7 @@ const List> fixedRateMarketsJSON = [ "rate": 100.62454873646209, "minerFee": 0.026462093862815887, "min": 0.0879765, - "max": 83.33357766 + "max": 83.33357766, }, { "from": "btg", @@ -30059,7 +30059,7 @@ const List> fixedRateMarketsJSON = [ "rate": 3454.707273038916, "minerFee": 1092.0153549739327, "min": 0.36241721, - "max": 8.59429634 + "max": 8.59429634, }, { "from": "btg", @@ -30067,7 +30067,7 @@ const List> fixedRateMarketsJSON = [ "rate": 211.1590909090909, "minerFee": 24.591947434545457, "min": 0.1889809, - "max": 83.42953184 + "max": 83.42953184, }, { "from": "btg", @@ -30075,7 +30075,7 @@ const List> fixedRateMarketsJSON = [ "rate": 138.47908622587357, "minerFee": 0.023055065231226766, "min": 0.08788213, - "max": 8.33348801 + "max": 8.33348801, }, { "from": "btg", @@ -30083,7 +30083,7 @@ const List> fixedRateMarketsJSON = [ "rate": 282.56551392615404, "minerFee": 37.998834916940886, "min": 0.20448872, - "max": 83.44426427 + "max": 83.44426427, }, { "from": "btg", @@ -30091,7 +30091,7 @@ const List> fixedRateMarketsJSON = [ "rate": 83.82857142857142, "minerFee": 4.098232985714286, "min": 0.13546036, - "max": 83.37868734 + "max": 83.37868734, }, { "from": "btg", @@ -30099,7 +30099,7 @@ const List> fixedRateMarketsJSON = [ "rate": 22.535008322399996, "minerFee": 0.0037365089279999997, "min": 10.1861435, - "max": 83.33348738 + "max": 83.33348738, }, { "from": "btg", @@ -30107,7 +30107,7 @@ const List> fixedRateMarketsJSON = [ "rate": 2.0135813617482388, "minerFee": 0.0028294202636806936, "min": 0.08909487, - "max": 83.33464012 + "max": 83.33464012, }, { "from": "btg", @@ -30115,7 +30115,7 @@ const List> fixedRateMarketsJSON = [ "rate": 22.535543483999994, "minerFee": 2.2802294764799997, "min": 0.17570083, - "max": 83.41691578 + "max": 83.41691578, }, { "from": "btg", @@ -30123,7 +30123,7 @@ const List> fixedRateMarketsJSON = [ "rate": 184.10954511764703, "minerFee": 23.178051790980394, "min": 0.19717028, - "max": 83.43731176 + "max": 83.43731176, }, { "from": "btg", @@ -30131,7 +30131,7 @@ const List> fixedRateMarketsJSON = [ "rate": 22.534116386399997, "minerFee": 2.616215373008, "min": 0.18866975, - "max": 83.42923625 + "max": 83.42923625, }, { "from": "btg", @@ -30139,7 +30139,7 @@ const List> fixedRateMarketsJSON = [ "rate": 344.1111111111111, "minerFee": 0.0762962962962963, "min": 0.08793615, - "max": 83.33353933 + "max": 83.33353933, }, { "from": "btg", @@ -30147,7 +30147,7 @@ const List> fixedRateMarketsJSON = [ "rate": 4.621101729931549, "minerFee": 0.4417639784629745, "min": 0.17093561, - "max": 83.41238882 + "max": 83.41238882, }, { "from": "btg", @@ -30155,7 +30155,7 @@ const List> fixedRateMarketsJSON = [ "rate": 300.7639445822102, "minerFee": 32.60671772530997, "min": 0.18198388, - "max": 83.42288468 + "max": 83.42288468, }, { "from": "btg", @@ -30163,7 +30163,7 @@ const List> fixedRateMarketsJSON = [ "rate": 1041.981308411215, "minerFee": 77.64060070971962, "min": 0.15251296, - "max": 83.3948873 + "max": 83.3948873, }, { "from": "btg", @@ -30171,7 +30171,7 @@ const List> fixedRateMarketsJSON = [ "rate": 27.866033491627093, "minerFee": 3.484827340284929, "min": 0.19637156, - "max": 83.43655298 + "max": 83.43655298, }, { "from": "btg", @@ -30179,7 +30179,7 @@ const List> fixedRateMarketsJSON = [ "rate": 23.179209979209976, "minerFee": 2.7973248197920997, "min": 0.19260661, - "max": 83.43297627 + "max": 83.43297627, }, { "from": "btg", @@ -30187,7 +30187,7 @@ const List> fixedRateMarketsJSON = [ "rate": 4.283407778445163, "minerFee": 1.0327226920087436, "min": 0.29731381, - "max": 8.53244811 + "max": 8.53244811, }, { "from": "btg", @@ -30195,7 +30195,7 @@ const List> fixedRateMarketsJSON = [ "rate": 17.982528521739127, "minerFee": 4.801996926956522, "min": 0.31988055, - "max": 83.55388651 + "max": 83.55388651, }, { "from": "btg", @@ -30203,7 +30203,7 @@ const List> fixedRateMarketsJSON = [ "rate": 138.6744152238806, "minerFee": 0.12268702089552239, "min": 0.08858457, - "max": 83.33415533 + "max": 83.33415533, }, { "from": "btg", @@ -30211,7 +30211,7 @@ const List> fixedRateMarketsJSON = [ "rate": 22.534172132400002, "minerFee": 3.728100272128, "min": 0.23156118, - "max": 83.46998311 + "max": 83.46998311, }, { "from": "btg", @@ -30219,7 +30219,7 @@ const List> fixedRateMarketsJSON = [ "rate": 1252.7191011235952, "minerFee": 161.49473712022473, "min": 0.1998075, - "max": 83.43981712 + "max": 83.43981712, }, { "from": "btg", @@ -30227,7 +30227,7 @@ const List> fixedRateMarketsJSON = [ "rate": 187.38151260504202, "minerFee": 25.017766722184874, "min": 0.20380376, - "max": 83.44361357 + "max": 83.44361357, }, { "from": "btg", @@ -30235,7 +30235,7 @@ const List> fixedRateMarketsJSON = [ "rate": 208.39626168224297, "minerFee": 19.992346607943926, "min": 0.1711361, - "max": 83.41257929 + "max": 83.41257929, }, { "from": "btg", @@ -30243,7 +30243,7 @@ const List> fixedRateMarketsJSON = [ "rate": 6277.161092590528, "minerFee": 1513.8717569700557, "min": 0.29737728, - "max": 83.53250841 + "max": 83.53250841, }, { "from": "btg", @@ -30251,7 +30251,7 @@ const List> fixedRateMarketsJSON = [ "rate": 193.610890625, "minerFee": 17.569255633333334, "min": 1.60631329, - "max": 83.40829371 + "max": 83.40829371, }, { "from": "btg", @@ -30259,7 +30259,7 @@ const List> fixedRateMarketsJSON = [ "rate": 2933.9999999999995, "minerFee": 368.58142651000003, "min": 0.1969461, - "max": 83.43709878 + "max": 83.43709878, }, { "from": "btg", @@ -30267,7 +30267,7 @@ const List> fixedRateMarketsJSON = [ "rate": 76.46913580246914, "minerFee": 0.013510288065843624, "min": 0.0878921, - "max": 83.33349749 + "max": 83.33349749, }, { "from": "btg", @@ -30275,7 +30275,7 @@ const List> fixedRateMarketsJSON = [ "rate": 229.24728710478126, "minerFee": 5.037504668646999, "min": 0.10920813, - "max": 41.68708105 + "max": 41.68708105, }, { "from": "btg", @@ -30283,7 +30283,7 @@ const List> fixedRateMarketsJSON = [ "rate": 22.535008322399996, "minerFee": 0.453686708928, "min": 0.10740723, - "max": 83.35203685 + "max": 83.35203685, }, { "from": "btg", @@ -30291,7 +30291,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.46281444582814446, "minerFee": 0.06113932606475716, "min": 0.20267429, - "max": 83.44254056 + "max": 83.44254056, }, { "from": "btg", @@ -30299,7 +30299,7 @@ const List> fixedRateMarketsJSON = [ "rate": 884.8571428571428, "minerFee": 93.37321282476191, "min": 0.17947232, - "max": 83.42049869 + "max": 83.42049869, }, { "from": "btg", @@ -30307,7 +30307,7 @@ const List> fixedRateMarketsJSON = [ "rate": 506.7818181818181, "minerFee": 52.515960910909094, "min": 0.17782294, - "max": 83.41893178 + "max": 83.41893178, }, { "from": "btg", @@ -30315,7 +30315,7 @@ const List> fixedRateMarketsJSON = [ "rate": 6.367332952598514, "minerFee": 1.9260347304625927, "min": 0.35174955, - "max": 83.58416206 + "max": 83.58416206, }, { "from": "btg", @@ -30323,7 +30323,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.8354698343649306, "minerFee": 0.0885791221814912, "min": 0.1799284, - "max": 83.42093197 + "max": 83.42093197, }, { "from": "btg", @@ -30331,7 +30331,7 @@ const List> fixedRateMarketsJSON = [ "rate": 22.8335616, "minerFee": 3.9672583620000004, "min": 0.23870754, - "max": 16.81010549 + "max": 16.81010549, }, { "from": "btg", @@ -30339,7 +30339,7 @@ const List> fixedRateMarketsJSON = [ "rate": 3.138851351351351, "minerFee": 0.016413513513513514, "min": 0.09283341, - "max": 83.33819173 + "max": 83.33819173, }, { "from": "btg", @@ -30347,7 +30347,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.4608931852561984, "minerFee": 0.010075401748099174, "min": 2.21766809, - "max": 83.35363967 + "max": 83.35363967, }, { "from": "btg", @@ -30355,7 +30355,7 @@ const List> fixedRateMarketsJSON = [ "rate": 247.21064301552101, "minerFee": 26.831382298980042, "min": 0.18209172, - "max": 83.42298712 + "max": 83.42298712, }, { "from": "btg", @@ -30363,7 +30363,7 @@ const List> fixedRateMarketsJSON = [ "rate": 19.18967297762478, "minerFee": 0.021139414802065402, "min": 0.08879667, - "max": 83.33435683 + "max": 83.33435683, }, { "from": "btg", @@ -30371,7 +30371,7 @@ const List> fixedRateMarketsJSON = [ "rate": 130.5526932084309, "minerFee": 12.39344039381733, "min": 0.17026368, - "max": 83.41175049 + "max": 83.41175049, }, { "from": "btg", @@ -30379,7 +30379,7 @@ const List> fixedRateMarketsJSON = [ "rate": 27.597029702970296, "minerFee": 0.018714851485148516, "min": 0.08838241, - "max": 83.33396328 + "max": 83.33396328, }, { "from": "btg", @@ -30387,7 +30387,7 @@ const List> fixedRateMarketsJSON = [ "rate": 17.982528521739127, "minerFee": 0.005441926956521739, "min": 0.08801527, - "max": 83.3336145 + "max": 83.3336145, }, { "from": "btg", @@ -30395,7 +30395,7 @@ const List> fixedRateMarketsJSON = [ "rate": 3.509348441926345, "minerFee": 0.3667472365344665, "min": 0.17861615, - "max": 83.41968533 + "max": 83.41968533, }, { "from": "btg", @@ -30403,7 +30403,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.0025110810810810807, "minerFee": 0.0002959808108108108, "min": 0.19011354, - "max": 83.43060785 + "max": 83.43060785, }, { "from": "btg", @@ -30411,7 +30411,7 @@ const List> fixedRateMarketsJSON = [ "rate": 496.19390719999996, "minerFee": 5.081176917333333, "min": 0.09773432, - "max": 83.3428476 + "max": 83.3428476, }, { "from": "btg", @@ -30419,7 +30419,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.02820440172021249, "minerFee": 0.0035042742170503416, "min": 0.19577529, - "max": 83.43598652 + "max": 83.43598652, }, { "from": "btg", @@ -30427,7 +30427,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.024726546906187623, "minerFee": 0.002459945242847638, "min": 0.17412814, - "max": 83.41542172 + "max": 83.41542172, }, { "from": "btg", @@ -30435,7 +30435,7 @@ const List> fixedRateMarketsJSON = [ "rate": 20.878651685393255, "minerFee": 2.4370465303370787, "min": 0.18920965, - "max": 83.42974916 + "max": 83.42974916, }, { "from": "btg", @@ -30443,7 +30443,7 @@ const List> fixedRateMarketsJSON = [ "rate": 59.39904102290889, "minerFee": 6.174845094523175, "min": 0.17830277, - "max": 83.41938762 + "max": 83.41938762, }, { "from": "btg", @@ -30451,7 +30451,7 @@ const List> fixedRateMarketsJSON = [ "rate": 28.36946564885496, "minerFee": 4.275159711374045, "min": 0.21907466, - "max": 83.45812092 + "max": 83.45812092, }, { "from": "btg", @@ -30459,7 +30459,7 @@ const List> fixedRateMarketsJSON = [ "rate": 13.750920382230898, "minerFee": 0.022249639326336345, "min": 0.08930041, - "max": 8.33483538 + "max": 8.33483538, }, { "from": "btg", @@ -30467,7 +30467,7 @@ const List> fixedRateMarketsJSON = [ "rate": 796.3714285714286, "minerFee": 50.13028571428571, "min": 0.14928281, - "max": 16.725152 + "max": 16.725152, }, { "from": "btg", @@ -30475,7 +30475,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.0011144742103158737, "minerFee": 0.00014126232706917233, "min": 0.1979233, - "max": 83.43802713 + "max": 83.43802713, }, { "from": "btg", @@ -30483,7 +30483,7 @@ const List> fixedRateMarketsJSON = [ "rate": 3.612832145171743, "minerFee": 0.4919526463836682, "min": 0.20603589, - "max": 83.44573408 + "max": 83.44573408, }, { "from": "btg", @@ -30491,7 +30491,7 @@ const List> fixedRateMarketsJSON = [ "rate": 19.266102637415788, "minerFee": 4.643757508631888, "min": 0.2972747, - "max": 83.53241095 + "max": 83.53241095, }, { "from": "btg", @@ -30499,7 +30499,7 @@ const List> fixedRateMarketsJSON = [ "rate": 3898.7903671972317, "minerFee": 3.637838914878893, "min": 0.08863178, - "max": 8.33420018 + "max": 8.33420018, }, { "from": "btg", @@ -30507,7 +30507,7 @@ const List> fixedRateMarketsJSON = [ "rate": 381.8219178082191, "minerFee": 0.36246575342465753, "min": 0.08864772, - "max": 83.33421533 + "max": 83.33421533, }, { "from": "btg", @@ -30515,7 +30515,7 @@ const List> fixedRateMarketsJSON = [ "rate": 3.818219178082191, "minerFee": 0.0031246575342465752, "min": 0.08851965, - "max": 83.33409366 + "max": 83.33409366, }, { "from": "btg", @@ -30523,7 +30523,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.26596374045801524, "minerFee": 0.11600931145038167, "min": 0.46683669, - "max": 83.69349485 + "max": 83.69349485, }, { "from": "btg", @@ -30531,7 +30531,7 @@ const List> fixedRateMarketsJSON = [ "rate": 1093.0588235294117, "minerFee": 0.2288235294117647, "min": 0.08792404, - "max": 83.33352783 + "max": 83.33352783, }, { "from": "btg", @@ -30539,7 +30539,7 @@ const List> fixedRateMarketsJSON = [ "rate": 404.870747019408, "minerFee": 43.251741243029755, "min": 0.18056873, - "max": 83.42154028 + "max": 83.42154028, }, { "from": "btg", @@ -30547,7 +30547,7 @@ const List> fixedRateMarketsJSON = [ "rate": 1.3869350444572706, "minerFee": 0.16101662143876602, "min": 0.18862802, - "max": 83.42919661 + "max": 83.42919661, }, { "from": "btg", @@ -30555,7 +30555,7 @@ const List> fixedRateMarketsJSON = [ "rate": 95.08442330126582, "minerFee": 0.02180573387341772, "min": 0.08794361, - "max": 83.33354642 + "max": 83.33354642, }, { "from": "btg", @@ -30563,7 +30563,7 @@ const List> fixedRateMarketsJSON = [ "rate": 3737.1489755223874, "minerFee": 413.0672189554229, "min": 0.18397532, - "max": 83.42477654 + "max": 83.42477654, }, { "from": "btg", @@ -30571,7 +30571,7 @@ const List> fixedRateMarketsJSON = [ "rate": 140.24150943396225, "minerFee": 13.650713756226414, "min": 0.17224921, - "max": 83.41363674 + "max": 83.41363674, }, { "from": "btg", @@ -30579,7 +30579,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.4314705882352941, "minerFee": 0.00012058823529411766, "min": 0.0879925, - "max": 83.33359287 + "max": 83.33359287, }, { "from": "btg", @@ -30587,7 +30587,7 @@ const List> fixedRateMarketsJSON = [ "rate": 1.6517333333333333, "minerFee": 0.18282373222222223, "min": 0.18381776, - "max": 83.42462686 + "max": 83.42462686, }, { "from": "btg", @@ -30595,7 +30595,7 @@ const List> fixedRateMarketsJSON = [ "rate": 38.20713660801095, "minerFee": 0.007250656295789113, "min": 0.08790493, - "max": 83.33350968 + "max": 83.33350968, }, { "from": "btg", @@ -30603,7 +30603,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.2544187300242379, "minerFee": 0.026577112696118482, "min": 0.17851233, - "max": 41.75292004 + "max": 41.75292004, }, { "from": "btg", @@ -30611,7 +30611,7 @@ const List> fixedRateMarketsJSON = [ "rate": 16.868962584, "minerFee": 2.03397511848, "min": 0.19251378, - "max": 41.76622141 + "max": 41.76622141, }, { "from": "btg", @@ -30619,7 +30619,7 @@ const List> fixedRateMarketsJSON = [ "rate": 6.083403995128442, "minerFee": 1.4697898999174033, "min": 0.29768826, - "max": 41.86613717 + "max": 41.86613717, }, { "from": "btg", @@ -30627,7 +30627,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.5307810974973711, "minerFee": 0.038952535353373806, "min": 0.15150883, - "max": 41.72726671 + "max": 41.72726671, }, { "from": "btg", @@ -30635,7 +30635,7 @@ const List> fixedRateMarketsJSON = [ "rate": 21.923439825429888, "minerFee": 5.241758686822156, "min": 0.2955048, - "max": 41.86406288 + "max": 41.86406288, }, { "from": "btg", @@ -30643,7 +30643,7 @@ const List> fixedRateMarketsJSON = [ "rate": 7.784757829577479, "minerFee": 0.7385709600130188, "min": 0.17018079, - "max": 41.74500507 + "max": 41.74500507, }, { "from": "btg", @@ -30651,7 +30651,7 @@ const List> fixedRateMarketsJSON = [ "rate": 532.2547783127123, "minerFee": 60.112871576349725, "min": 0.18592609, - "max": 41.75996311 + "max": 41.75996311, }, { "from": "btg", @@ -30659,7 +30659,7 @@ const List> fixedRateMarketsJSON = [ "rate": 41665.08538469991, "minerFee": 4084.9677050170676, "min": 0.17293476, - "max": 41.74762135 + "max": 41.74762135, }, { "from": "btg", @@ -30667,7 +30667,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.6118044872481201, "minerFee": 0.14782887071366022, "min": 0.29770663, - "max": 8.53282129 + "max": 8.53282129, }, { "from": "btg", @@ -30675,7 +30675,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.996192336510844, "minerFee": 0.07963596625137191, "min": 0.15720383, - "max": 41.73267696 + "max": 41.73267696, }, { "from": "btg", @@ -30683,7 +30683,7 @@ const List> fixedRateMarketsJSON = [ "rate": 45.30923006034302, "minerFee": 4.192996272975107, "min": 0.16815405, - "max": 41.74307967 + "max": 41.74307967, }, { "from": "btg", @@ -30691,7 +30691,7 @@ const List> fixedRateMarketsJSON = [ "rate": 7.805272065534172, "minerFee": 0.8042204261252407, "min": 0.1772731, - "max": 41.75174277 + "max": 41.75174277, }, { "from": "btg", @@ -30699,7 +30699,7 @@ const List> fixedRateMarketsJSON = [ "rate": 60316.30294623652, "minerFee": 5047.749709763515, "min": 0.16046023, - "max": 41.73577054 + "max": 41.73577054, }, { "from": "btg", @@ -30707,7 +30707,7 @@ const List> fixedRateMarketsJSON = [ "rate": 70.009326310896, "minerFee": 7.92499520851712, "min": 0.18610492, - "max": 12.59346633 + "max": 12.59346633, }, { "from": "btg", @@ -30715,7 +30715,7 @@ const List> fixedRateMarketsJSON = [ "rate": 131.2824883268124, "minerFee": 33.47929173770173, "min": 0.30934212, - "max": 41.87720834 + "max": 41.87720834, }, { "from": "btg", @@ -30723,7 +30723,7 @@ const List> fixedRateMarketsJSON = [ "rate": 123.11994828693237, "minerFee": 25.595069842828128, "min": 0.26838725, - "max": 41.83830121 + "max": 41.83830121, }, { "from": "btg", @@ -30731,7 +30731,7 @@ const List> fixedRateMarketsJSON = [ "rate": 7.742499999999999, "minerFee": 3.1125799666666665, "min": 0.43721974, - "max": 83.66535875 + "max": 83.66535875, }, { "from": "btg", @@ -30739,7 +30739,7 @@ const List> fixedRateMarketsJSON = [ "rate": 219.46838781925342, "minerFee": 17.069634938722984, "min": 0.15535109, - "max": 83.39758353 + "max": 83.39758353, }, { "from": "btg", @@ -30747,7 +30747,7 @@ const List> fixedRateMarketsJSON = [ "rate": 21.176068376068375, "minerFee": 2.0092964074643875, "min": 0.17025534, - "max": 8.41174256 + "max": 8.41174256, }, { "from": "btg", @@ -30755,7 +30755,7 @@ const List> fixedRateMarketsJSON = [ "rate": 612.5934065934065, "minerFee": 59.01474506021978, "min": 0.1714848, - "max": 12.57957722 + "max": 12.57957722, }, { "from": "btg", @@ -30763,7 +30763,7 @@ const List> fixedRateMarketsJSON = [ "rate": 80.90856313497822, "minerFee": 10.475728664746008, "min": 0.20037674, - "max": 83.44035789 + "max": 83.44035789, }, { "from": "btg", @@ -30771,7 +30771,7 @@ const List> fixedRateMarketsJSON = [ "rate": 45.39679365500407, "minerFee": 10.967275788307568, "min": 0.29768343, - "max": 8.53279925 + "max": 8.53279925, }, { "from": "btg", @@ -30779,7 +30779,7 @@ const List> fixedRateMarketsJSON = [ "rate": 1023.9303787475625, "minerFee": 108.08245980239225, "min": 0.17946355, - "max": 41.7538237 + "max": 41.7538237, }, { "from": "btg", @@ -30787,7 +30787,7 @@ const List> fixedRateMarketsJSON = [ "rate": 845.2681353944778, "minerFee": 204.27068066552465, "min": 0.29773803, - "max": 41.86618445 + "max": 41.86618445, }, { "from": "btg", @@ -30795,7 +30795,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.22476236914651365, "minerFee": 0.02690367093973767, "min": 0.19175252, - "max": 41.76549822 + "max": 41.76549822, }, { "from": "btg", @@ -30803,7 +30803,7 @@ const List> fixedRateMarketsJSON = [ "rate": 91.6875, "minerFee": 22.121816120000002, "min": 0.29748467, - "max": 8.53261043 + "max": 8.53261043, }, { "from": "btg", @@ -30811,7 +30811,7 @@ const List> fixedRateMarketsJSON = [ "rate": 10.699808061420343, "minerFee": 0.0019504798464491364, "min": 0.08789758, - "max": 83.3335027 + "max": 83.3335027, }, { "from": "btg", @@ -30819,7 +30819,7 @@ const List> fixedRateMarketsJSON = [ "rate": 107437.37372137688, "minerFee": 12888.999709777485, "min": 0.19198681, - "max": 41.76572079 + "max": 41.76572079, }, { "from": "btg", @@ -30827,7 +30827,7 @@ const List> fixedRateMarketsJSON = [ "rate": 175.85488958990535, "minerFee": 42.38823344608833, "min": 0.29728203, - "max": 83.53241792 + "max": 83.53241792, }, { "from": "btg", @@ -30835,7 +30835,7 @@ const List> fixedRateMarketsJSON = [ "rate": 12.645703012657657, "minerFee": 1.2157302866687374, "min": 0.17127865, - "max": 41.74604804 + "max": 41.74604804, }, { "from": "btg", @@ -30843,7 +30843,7 @@ const List> fixedRateMarketsJSON = [ "rate": 99.72450805008945, "minerFee": 24.051843297942757, "min": 0.29740539, - "max": 83.53253511 + "max": 83.53253511, }, { "from": "btg", @@ -30851,7 +30851,7 @@ const List> fixedRateMarketsJSON = [ "rate": 972.5725973521215, "minerFee": 231.4808729713664, "min": 0.29456204, - "max": 41.86316726 + "max": 41.86316726, }, { "from": "btg", @@ -30859,7 +30859,7 @@ const List> fixedRateMarketsJSON = [ "rate": 8205.7777524, "minerFee": 1376.043255978, "min": 0.23345847, - "max": 41.80511887 + "max": 41.80511887, }, { "from": "btg", @@ -30867,7 +30867,7 @@ const List> fixedRateMarketsJSON = [ "rate": 23.0498242712425, "minerFee": 2.6009864423961133, "min": 0.18581415, - "max": 83.42652343 + "max": 83.42652343, }, { "from": "btg", @@ -30875,7 +30875,7 @@ const List> fixedRateMarketsJSON = [ "rate": 106.08182683158896, "minerFee": 14.361561920095149, "min": 0.20554102, - "max": 83.44526396 + "max": 83.44526396, }, { "from": "btg", @@ -30883,7 +30883,7 @@ const List> fixedRateMarketsJSON = [ "rate": 63.351092304, "minerFee": 6.15465636688, "min": 0.17216011, - "max": 8.41355209 + "max": 8.41355209, }, { "from": "btg", @@ -30891,7 +30891,7 @@ const List> fixedRateMarketsJSON = [ "rate": 1.1763832478840275, "minerFee": 0.11332311533707713, "min": 0.17144766, - "max": 41.74620861 + "max": 41.74620861, }, { "from": "btg", @@ -30899,7 +30899,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.015022024360411204, "minerFee": 0.003612937590897409, "min": 0.29673517, - "max": 8.53189841 + "max": 8.53189841, }, { "from": "btg", @@ -30907,7 +30907,7 @@ const List> fixedRateMarketsJSON = [ "rate": 5.682568807339449, "minerFee": 0.04301919360856269, "min": 0.09512682, - "max": 83.34037047 + "max": 83.34037047, }, { "from": "btg", @@ -30915,7 +30915,7 @@ const List> fixedRateMarketsJSON = [ "rate": 136.46511627906975, "minerFee": 29.59897541139535, "min": 0.27629352, - "max": 83.51247883 + "max": 83.51247883, }, { "from": "btg", @@ -30923,7 +30923,7 @@ const List> fixedRateMarketsJSON = [ "rate": 464.2112197964683, "minerFee": 112.00700295583582, "min": 0.29740852, - "max": 8.53253808 + "max": 8.53253808, }, { "from": "btg", @@ -30931,7 +30931,7 @@ const List> fixedRateMarketsJSON = [ "rate": 3471.9626303199416, "minerFee": 0.5680102462691111, "min": 0.0878793, - "max": 83.33348533 + "max": 83.33348533, }, { "from": "btg", @@ -30939,7 +30939,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.017095917447858364, "minerFee": 0.002113616878110079, "min": 0.19517191, - "max": 8.4354133 + "max": 8.4354133, }, { "from": "btg", @@ -30947,7 +30947,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.7097640416503936, "minerFee": 0.0011161168166299214, "min": 0.08925667, - "max": 83.33479383 + "max": 83.33479383, }, { "from": "btg", @@ -30955,7 +30955,7 @@ const List> fixedRateMarketsJSON = [ "rate": 158.1446808510638, "minerFee": 12.124159390425532, "min": 0.15428995, - "max": 83.39657544 + "max": 83.39657544, }, { "from": "btg", @@ -30963,7 +30963,7 @@ const List> fixedRateMarketsJSON = [ "rate": 227.55283266759034, "minerFee": 25.64287931728713, "min": 0.18566249, - "max": 53.42637936 + "max": 53.42637936, }, { "from": "btg", @@ -30971,7 +30971,7 @@ const List> fixedRateMarketsJSON = [ "rate": 5633.752080599999, "minerFee": 1361.8708393220002, "min": 0.29786654, - "max": 8.53297321 + "max": 8.53297321, }, { "from": "btg", @@ -30979,7 +30979,7 @@ const List> fixedRateMarketsJSON = [ "rate": 1827193.2965347187, "minerFee": 218035.50092333645, "min": 0.19141369, - "max": 83.43184299 + "max": 83.43184299, }, { "from": "btg", @@ -30987,7 +30987,7 @@ const List> fixedRateMarketsJSON = [ "rate": 3.4336926393594087, "minerFee": 0.001561749307052664, "min": 0.08816395, - "max": 83.33375575 + "max": 83.33375575, }, { "from": "btg", @@ -30995,7 +30995,7 @@ const List> fixedRateMarketsJSON = [ "rate": 47704658766.10275, "minerFee": 101208911269.9956, "min": 0.37427568, - "max": 85.27056189 + "max": 85.27056189, }, { "from": "btg", @@ -31003,7 +31003,7 @@ const List> fixedRateMarketsJSON = [ "rate": 612.5934065934065, "minerFee": 0.2002197802197802, "min": 0.08803895, - "max": 83.333637 + "max": 83.333637, }, { "from": "btg", @@ -31011,7 +31011,7 @@ const List> fixedRateMarketsJSON = [ "rate": 184.89552238805967, "minerFee": 44.6104948562189, "min": 0.29748467, - "max": 83.53261043 + "max": 83.53261043, }, { "from": "btg", @@ -31019,7 +31019,7 @@ const List> fixedRateMarketsJSON = [ "rate": 160.65129682997116, "minerFee": 13.33209866074928, "min": 0.1597774, - "max": 83.40178852 + "max": 83.40178852, }, { "from": "btg", @@ -31027,7 +31027,7 @@ const List> fixedRateMarketsJSON = [ "rate": 80.90856313497822, "minerFee": 0.048236584746008705, "min": 0.08797608, - "max": 83.33357726 + "max": 83.33357726, }, { "from": "btg", @@ -31035,7 +31035,7 @@ const List> fixedRateMarketsJSON = [ "rate": 164.42060350642885, "minerFee": 39.73910784623827, "min": 0.29776237, - "max": 83.53287424 + "max": 83.53287424, }, { "from": "btg", @@ -31043,7 +31043,7 @@ const List> fixedRateMarketsJSON = [ "rate": 131.78723404255317, "minerFee": 12.519967913687944, "min": 0.17032487, - "max": 83.41180861 + "max": 83.41180861, }, { "from": "btg", @@ -31051,7 +31051,7 @@ const List> fixedRateMarketsJSON = [ "rate": 498.7152768934262, "minerFee": 2.0815894113527076, "min": 0.09180146, - "max": 83.33721138 + "max": 83.33721138, }, { "from": "btg", @@ -31059,7 +31059,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.08000287026406429, "minerFee": 0.0003481184041331802, "min": 0.09198019, - "max": 83.33738117 + "max": 83.33738117, }, { "from": "btg", @@ -31067,7 +31067,7 @@ const List> fixedRateMarketsJSON = [ "rate": 89.11854948873689, "minerFee": 0.6111676217977483, "min": 0.0944301, - "max": 3.33970858 + "max": 3.33970858, }, { "from": "btg", @@ -31075,7 +31075,7 @@ const List> fixedRateMarketsJSON = [ "rate": 92.44776119402984, "minerFee": 0.6723596881094528, "min": 0.09483216, - "max": 83.34009054 + "max": 83.34009054, }, { "from": "btg", @@ -31083,7 +31083,7 @@ const List> fixedRateMarketsJSON = [ "rate": 22.534406265599998, "minerFee": 0.244898820432, "min": 0.09834693, - "max": 83.34342957 + "max": 83.34342957, }, { "from": "btg", @@ -31091,7 +31091,7 @@ const List> fixedRateMarketsJSON = [ "rate": 153.07227367150617, "minerFee": 36.342140058760165, "min": 0.2957292, - "max": 16.86427607 + "max": 16.86427607, }, { "from": "btg", @@ -31099,7 +31099,7 @@ const List> fixedRateMarketsJSON = [ "rate": 1.1826880237615356, "minerFee": 0.010193486793253421, "min": 0.09615562, - "max": 83.34134783 + "max": 83.34134783, }, { "from": "btg", @@ -31107,7 +31107,7 @@ const List> fixedRateMarketsJSON = [ "rate": 215.23552123552122, "minerFee": 24.542612145212356, "min": 0.1868645, - "max": 83.42752127 + "max": 83.42752127, }, { "from": "btg", @@ -31115,7 +31115,7 @@ const List> fixedRateMarketsJSON = [ "rate": 0.014632648240018899, "minerFee": 0.0013523938892826208, "min": 0.16468619, - "max": 83.40962433 + "max": 83.40962433, }, { "from": "btg", @@ -31123,7 +31123,7 @@ const List> fixedRateMarketsJSON = [ "rate": 11.819357574472594, "minerFee": 0.011933637230997562, "min": 0.23192767, - "max": 83.33427225 + "max": 83.33427225, }, { "from": "btg", @@ -31131,7 +31131,7 @@ const List> fixedRateMarketsJSON = [ "rate": 23126390.835414965, "minerFee": 1655052.6969984109, "min": 0.15775047, - "max": 12.56652961 + "max": 12.56652961, }, { "from": "btg", @@ -31139,7 +31139,7 @@ const List> fixedRateMarketsJSON = [ "rate": 2839.115528846205, "minerFee": 287.82718733813437, "min": 0.17583358, - "max": 8.41704189 + "max": 8.41704189, }, { "from": "btg", @@ -31147,7 +31147,7 @@ const List> fixedRateMarketsJSON = [ "rate": 22.535543483999994, "minerFee": 0.24498456648, "min": 0.09835134, - "max": 83.34343376 + "max": 83.34343376, }, { "from": "btg", @@ -31155,7 +31155,7 @@ const List> fixedRateMarketsJSON = [ "rate": 26679.282835897662, "minerFee": 195.69592369840862, "min": 0.09489708, - "max": 8.34015221 + "max": 8.34015221, }, { "from": "btg", @@ -31163,7 +31163,7 @@ const List> fixedRateMarketsJSON = [ "rate": 27.86603349162709, "minerFee": 0.010798860284928768, "min": 0.08809814, - "max": 83.33369322 + "max": 83.33369322, }, { "from": "btg", @@ -31171,7 +31171,7 @@ const List> fixedRateMarketsJSON = [ "rate": 3.6662939822426828, "minerFee": 0.05059980269648142, "min": 0.83376746, - "max": 41.67948949 + "max": 41.67948949, }, { "from": "btg", @@ -31179,7 +31179,7 @@ const List> fixedRateMarketsJSON = [ "rate": 5.67331569305923, "minerFee": 0.04632814980663546, "min": 0.09570443, - "max": 8.3409192 + "max": 8.3409192, }, { "from": "btg", @@ -31187,7 +31187,7 @@ const List> fixedRateMarketsJSON = [ "rate": 51299.297206563795, "minerFee": 6560.880224620378, "min": 0.19887458, - "max": 8.43893084 + "max": 8.43893084, }, { "from": "btg", @@ -31195,7 +31195,7 @@ const List> fixedRateMarketsJSON = [ "rate": 2234.966119881007, "minerFee": 19.921217139019387, "min": 0.09644154, - "max": 8.34161945 + "max": 8.34161945, }, { "from": "btg", @@ -31203,7 +31203,7 @@ const List> fixedRateMarketsJSON = [ "rate": 5458.751231330335, "minerFee": 54.51949997620946, "min": 0.09749263, - "max": 8.34261799 + "max": 8.34261799, }, { "from": "btg", @@ -31211,7 +31211,7 @@ const List> fixedRateMarketsJSON = [ "rate": 59.383655060680816, "minerFee": 0.6014325873923404, "min": 0.09763, - "max": 8.34274849 + "max": 8.34274849, }, { "from": "btg", @@ -31219,7 +31219,7 @@ const List> fixedRateMarketsJSON = [ "rate": 20009.571409609012, "minerFee": 199.91039097486447, "min": 0.09749576, - "max": 8.34262096 + "max": 8.34262096, }, { "from": "btg", @@ -31227,7 +31227,7 @@ const List> fixedRateMarketsJSON = [ "rate": 18.444033614780405, "minerFee": 0.182008368812234, "min": 0.09737579, - "max": 8.34250699 + "max": 8.34250699, }, { "from": "btg", @@ -31235,7 +31235,7 @@ const List> fixedRateMarketsJSON = [ "rate": 1806.094478793519, "minerFee": 16.983146009352723, "min": 0.09692086, - "max": 8.34207481 + "max": 8.34207481, }, { "from": "btg", @@ -31243,7 +31243,7 @@ const List> fixedRateMarketsJSON = [ "rate": 54.38559116685567, "minerFee": 0.5737179582277065, "min": 0.09804213, - "max": 83.34314002 + "max": 83.34314002, }, { "from": "btg", @@ -31251,7 +31251,7 @@ const List> fixedRateMarketsJSON = [ "rate": 26453.452494334324, "minerFee": 272.19687938925716, "min": 0.09778827, - "max": 8.34289884 + "max": 8.34289884, }, { "from": "btg", @@ -31259,7 +31259,7 @@ const List> fixedRateMarketsJSON = [ "rate": 84.36554911793039, "minerFee": 0.9320547548250192, "min": 0.09853017, - "max": 8.34360365 + "max": 8.34360365, }, { "from": "btg", @@ -31267,7 +31267,7 @@ const List> fixedRateMarketsJSON = [ "rate": 23.430113978958218, "minerFee": 0.24127752748122017, "min": 0.09779619, - "max": 41.67623971 + "max": 41.67623971, }, { "from": "btg", @@ -31275,7 +31275,7 @@ const List> fixedRateMarketsJSON = [ "rate": 35.98522107076894, "minerFee": 0.26028537273141417, "min": 0.09479726, - "max": 66.67339072 + "max": 66.67339072, }, { "from": "btg", @@ -31283,7 +31283,7 @@ const List> fixedRateMarketsJSON = [ "rate": 57997.80585040937, "minerFee": 453.837920195159, "min": 0.09537655, - "max": 8.34060771 + "max": 8.34060771, }, { "from": "btg", @@ -31291,7 +31291,7 @@ const List> fixedRateMarketsJSON = [ "rate": 271.50612436626506, "minerFee": 2.6064851398554216, "min": 0.09711852, - "max": 8.34226258 + "max": 8.34226258, }, { "from": "btg", @@ -31299,7 +31299,7 @@ const List> fixedRateMarketsJSON = [ "rate": 14.240899220845574, "minerFee": 5.822829629463533, "min": 0.44314537, - "max": 83.67098809 + "max": 83.67098809, }, { "from": "btg", @@ -31307,7 +31307,7 @@ const List> fixedRateMarketsJSON = [ "rate": 1639.5882352941173, "minerFee": 163.23764397411765, "min": 0.17428818, - "max": 83.41557376 + "max": 83.41557376, }, ]; @@ -31322,5 +31322,5 @@ const Map createStandardTransactionResponse = { "888tNkZrPN6JsEgekjMnABU4TBzc2Dt29EPAvkRxbANsAnjyPbb3iQ1YBRk1UXcdRsiKc9dhwMVgN5S9cQUiyoogDavup3H", "refundExtraId": "", "id": "6d2f9280dacab3", - "amount": 0.0021936 + "amount": 0.0021936, }; diff --git a/test/widget_tests/node_card_test.dart b/test/widget_tests/node_card_test.dart index 71a08f8514..b4f7f7fac3 100644 --- a/test/widget_tests/node_card_test.dart +++ b/test/widget_tests/node_card_test.dart @@ -69,9 +69,7 @@ void main() { theme: ThemeData( extensions: [ StackColors.fromStackColorTheme( - StackTheme.fromJson( - json: lightThemeJsonMap, - ), + StackTheme.fromJson(json: lightThemeJsonMap), ), ], ), @@ -150,9 +148,7 @@ void main() { theme: ThemeData( extensions: [ StackColors.fromStackColorTheme( - StackTheme.fromJson( - json: lightThemeJsonMap, - ), + StackTheme.fromJson(json: lightThemeJsonMap), ), ], ), @@ -232,9 +228,7 @@ void main() { theme: ThemeData( extensions: [ StackColors.fromStackColorTheme( - StackTheme.fromJson( - json: lightThemeJsonMap, - ), + StackTheme.fromJson(json: lightThemeJsonMap), ), ], ), diff --git a/test/widget_tests/node_options_sheet_test.dart b/test/widget_tests/node_options_sheet_test.dart index cedc9158b6..29a57f2a5e 100644 --- a/test/widget_tests/node_options_sheet_test.dart +++ b/test/widget_tests/node_options_sheet_test.dart @@ -25,59 +25,64 @@ void main() { final mockPrefs = MockPrefs(); final mockNodeService = MockNodeService(); - when(mockNodeService.getNodeById(id: "node id")) - .thenAnswer((realInvocation) => NodeModel( - host: "127.0.0.1", - port: 2000, - name: "Some other name", - id: "node id", - useSSL: true, - enabled: true, - coinName: "Bitcoin", - isFailover: false, - isDown: false, - torEnabled: true, - clearnetEnabled: true, - isPrimary: true, - )); + when(mockNodeService.getNodeById(id: "node id")).thenAnswer( + (realInvocation) => NodeModel( + host: "127.0.0.1", + port: 2000, + name: "Some other name", + id: "node id", + useSSL: true, + enabled: true, + coinName: "Bitcoin", + isFailover: false, + isDown: false, + torEnabled: true, + clearnetEnabled: true, + isPrimary: true, + ), + ); - when(mockNodeService.getPrimaryNodeFor( - currency: Bitcoin(CryptoCurrencyNetwork.main))) - .thenAnswer((realInvocation) => NodeModel( - host: "127.0.0.1", - port: 2000, - name: "Some other name", - id: "node id", - useSSL: true, - enabled: true, - coinName: "Bitcoin", - isFailover: false, - torEnabled: true, - clearnetEnabled: true, - isDown: false, - isPrimary: true)); + when( + mockNodeService.getPrimaryNodeFor( + currency: Bitcoin(CryptoCurrencyNetwork.main), + ), + ).thenAnswer( + (realInvocation) => NodeModel( + host: "127.0.0.1", + port: 2000, + name: "Some other name", + id: "node id", + useSSL: true, + enabled: true, + coinName: "Bitcoin", + isFailover: false, + torEnabled: true, + clearnetEnabled: true, + isDown: false, + isPrimary: true, + ), + ); await tester.pumpWidget( ProviderScope( overrides: [ pWallets.overrideWithValue(mockWallets), prefsChangeNotifierProvider.overrideWithValue(mockPrefs), - nodeServiceChangeNotifierProvider.overrideWithValue(mockNodeService) + nodeServiceChangeNotifierProvider.overrideWithValue(mockNodeService), ], child: MaterialApp( theme: ThemeData( extensions: [ StackColors.fromStackColorTheme( - StackTheme.fromJson( - json: lightThemeJsonMap, - ), + StackTheme.fromJson(json: lightThemeJsonMap), ), ], ), home: NodeOptionsSheet( - nodeId: "node id", - coin: Bitcoin(CryptoCurrencyNetwork.main), - popBackToRoute: ""), + nodeId: "node id", + coin: Bitcoin(CryptoCurrencyNetwork.main), + popBackToRoute: "", + ), ), ), ); @@ -90,9 +95,11 @@ void main() { expect(find.text("Details"), findsOneWidget); expect(find.text("Connect"), findsOneWidget); - verify(mockNodeService.getPrimaryNodeFor( - currency: Bitcoin(CryptoCurrencyNetwork.main))) - .called(1); + verify( + mockNodeService.getPrimaryNodeFor( + currency: Bitcoin(CryptoCurrencyNetwork.main), + ), + ).called(1); verify(mockNodeService.getNodeById(id: "node id")).called(1); verify(mockNodeService.addListener(any)).called(1); verifyNoMoreInteractions(mockNodeService); @@ -122,9 +129,11 @@ void main() { ), ); - when(mockNodeService.getPrimaryNodeFor( - currency: Bitcoin(CryptoCurrencyNetwork.main))) - .thenAnswer( + when( + mockNodeService.getPrimaryNodeFor( + currency: Bitcoin(CryptoCurrencyNetwork.main), + ), + ).thenAnswer( (_) => NodeModel( host: "127.0.0.1", port: 2000, @@ -154,9 +163,7 @@ void main() { theme: ThemeData( extensions: [ StackColors.fromStackColorTheme( - StackTheme.fromJson( - json: lightThemeJsonMap, - ), + StackTheme.fromJson(json: lightThemeJsonMap), ), ], ), @@ -205,9 +212,11 @@ void main() { ), ); - when(mockNodeService.getPrimaryNodeFor( - currency: Bitcoin(CryptoCurrencyNetwork.main))) - .thenAnswer( + when( + mockNodeService.getPrimaryNodeFor( + currency: Bitcoin(CryptoCurrencyNetwork.main), + ), + ).thenAnswer( (_) => NodeModel( host: "127.0.0.1", port: 2000, @@ -236,9 +245,7 @@ void main() { theme: ThemeData( extensions: [ StackColors.fromStackColorTheme( - StackTheme.fromJson( - json: lightThemeJsonMap, - ), + StackTheme.fromJson(json: lightThemeJsonMap), ), ], ),