diff --git a/lib/bloc/coins_bloc/asset_coin_extension.dart b/lib/bloc/coins_bloc/asset_coin_extension.dart index 2c073af8f0..7a62e58f6a 100644 --- a/lib/bloc/coins_bloc/asset_coin_extension.dart +++ b/lib/bloc/coins_bloc/asset_coin_extension.dart @@ -79,6 +79,8 @@ extension CoinTypeExtension on CoinSubClass { return CoinType.avx20; case CoinSubClass.smartChain: return CoinType.smartChain; + case CoinSubClass.sia: + return CoinType.sia; case CoinSubClass.moonriver: return CoinType.mvr20; case CoinSubClass.ethereumClassic: @@ -155,6 +157,8 @@ extension CoinSubClassExtension on CoinType { return CoinSubClass.avx20; case CoinType.smartChain: return CoinSubClass.smartChain; + case CoinType.sia: + return CoinSubClass.sia; case CoinType.mvr20: return CoinSubClass.moonriver; case CoinType.etc: diff --git a/lib/bloc/fiat/models/i_currency.dart b/lib/bloc/fiat/models/i_currency.dart index e5940eca80..531cfa57a5 100644 --- a/lib/bloc/fiat/models/i_currency.dart +++ b/lib/bloc/fiat/models/i_currency.dart @@ -129,6 +129,7 @@ class CryptoCurrency extends ICurrency { // "ETH-ERC20", which is not how it is stored in our coins configuration // files. "ETH" is the expected abbreviation, which would just be `symbol`. if (chainType == CoinType.utxo || + chainType == CoinType.sia || (chainType == CoinType.tendermint && symbol == 'ATOM') || (chainType == CoinType.erc20 && symbol == 'ETH') || (chainType == CoinType.bep20 && symbol == 'BNB') || diff --git a/lib/model/coin_type.dart b/lib/model/coin_type.dart index 402da3b250..e96ed8c143 100644 --- a/lib/model/coin_type.dart +++ b/lib/model/coin_type.dart @@ -2,6 +2,7 @@ enum CoinType { utxo, smartChain, + sia, etc, erc20, bep20, diff --git a/lib/model/coin_utils.dart b/lib/model/coin_utils.dart index 1d89f21284..99b2d2971b 100644 --- a/lib/model/coin_utils.dart +++ b/lib/model/coin_utils.dart @@ -128,6 +128,9 @@ bool compareCoinByPhrase(Coin coin, String phrase) { } String getCoinTypeName(CoinType type, [String? symbol]) { + if (type == CoinType.sia) { + return 'SIA'; + } // Override for parent chain coins like ETH, AVAX etc. if (symbol != null && isParentCoin(type, symbol)) { return 'Native'; @@ -143,6 +146,8 @@ String getCoinTypeName(CoinType type, [String? symbol]) { return 'Native'; case CoinType.smartChain: return 'Smart Chain'; + case CoinType.sia: + return 'SIA'; case CoinType.ftm20: return 'FTM-20'; case CoinType.arb20: @@ -181,6 +186,7 @@ String getCoinTypeName(CoinType type, [String? symbol]) { bool isParentCoin(CoinType type, String symbol) { switch (type) { case CoinType.utxo: + case CoinType.sia: case CoinType.tendermint: return true; case CoinType.erc20: diff --git a/lib/shared/utils/utils.dart b/lib/shared/utils/utils.dart index 8f8aa691ae..745d4c127e 100644 --- a/lib/shared/utils/utils.dart +++ b/lib/shared/utils/utils.dart @@ -44,7 +44,8 @@ Future copyToClipBoard( await Clipboard.setData(ClipboardData(text: payload)); if (!context.mounted) return; - final scaffoldMessenger = ScaffoldMessenger.maybeOf(context) ?? + final scaffoldMessenger = + ScaffoldMessenger.maybeOf(context) ?? ScaffoldMessenger.of(scaffoldKey.currentContext!); scaffoldMessenger.showSnackBar( SnackBar( @@ -57,9 +58,7 @@ Future copyToClipBoard( color: themeData.colorScheme.onPrimaryContainer, ), const SizedBox(width: 12.0), - Text( - message ?? LocaleKeys.clipBoard.tr(), - ), + Text(message ?? LocaleKeys.clipBoard.tr()), ], ), duration: const Duration(seconds: 2), @@ -141,10 +140,7 @@ Rational? fract2rat(Map? fract, [bool willLog = true]) { try { final String numerStr = fract['numer'].toString(); final String denomStr = fract['denom'].toString(); - final rat = Rational( - BigInt.parse(numerStr), - BigInt.parse(denomStr), - ); + final rat = Rational(BigInt.parse(numerStr), BigInt.parse(denomStr)); return rat; } catch (e) { if (willLog) { @@ -198,8 +194,8 @@ String getTxExplorerUrl(Coin coin, String txHash) { final hash = coin.type == CoinType.tendermint || coin.type == CoinType.tendermintToken - ? txHash.toUpperCase() - : txHash; + ? txHash.toUpperCase() + : txHash; return coin.need0xPrefixForTxHash && !hash.startsWith('0x') ? '$explorerUrl${explorerTxUrl}0x$hash' @@ -247,8 +243,8 @@ Future openUrl(Uri uri, {bool? inSeparateTab}) async { mode: inSeparateTab == null ? LaunchMode.platformDefault : inSeparateTab == true - ? LaunchMode.externalApplication - : LaunchMode.inAppWebView, + ? LaunchMode.externalApplication + : LaunchMode.inAppWebView, ); } @@ -261,8 +257,8 @@ Future launchURLString(String url, {bool? inSeparateTab}) async { mode: inSeparateTab == null ? LaunchMode.platformDefault : inSeparateTab == true - ? LaunchMode.externalApplication - : LaunchMode.inAppWebView, + ? LaunchMode.externalApplication + : LaunchMode.inAppWebView, ); } else { throw 'Could not launch $url'; @@ -400,6 +396,8 @@ Color getProtocolColor(CoinType type) { return const Color.fromRGBO(108, 147, 237, 1); case CoinType.smartChain: return const Color.fromRGBO(32, 22, 49, 1); + case CoinType.sia: + return const Color(0xFF29F06F); case CoinType.bep20: return const Color.fromRGBO(255, 199, 0, 1); case CoinType.qrc20: @@ -447,6 +445,7 @@ bool hasTxHistorySupport(Coin coin) { case CoinType.tendermint: case CoinType.tendermintToken: case CoinType.utxo: + case CoinType.sia: case CoinType.erc20: case CoinType.smartChain: case CoinType.bep20: @@ -481,6 +480,7 @@ String getNativeExplorerUrlByCoin(Coin coin, String? address) { case CoinType.utxo: case CoinType.smartChain: case CoinType.erc20: + case CoinType.sia: case CoinType.bep20: case CoinType.qrc20: case CoinType.ftm20: @@ -571,10 +571,7 @@ Future pauseWhile( } } -enum HashExplorerType { - address, - tx, -} +enum HashExplorerType { address, tx } Future confirmParentCoinDisable( BuildContext context, { @@ -615,8 +612,9 @@ Future confirmCoinDisableWithOrders( builder: (context) => AlertDialog( title: Text(LocaleKeys.disable.tr()), content: Text( - LocaleKeys.coinDisableOpenOrdersWarning - .tr(args: [ordersCount.toString(), coin]), + LocaleKeys.coinDisableOpenOrdersWarning.tr( + args: [ordersCount.toString(), coin], + ), ), actions: [ TextButton( @@ -638,27 +636,28 @@ void confirmBeforeDisablingCoin( BuildContext context, { void Function()? onConfirm, }) { - final tradingEntitiesBloc = - RepositoryProvider.of(context); + final tradingEntitiesBloc = RepositoryProvider.of( + context, + ); final bloc = context.read(); final childCoins = bloc.state.walletCoins.values .where((c) => c.parentCoin?.abbr == coin.abbr) .toList(); - final hasSwap = tradingEntitiesBloc.hasActiveSwap(coin.abbr) || + final hasSwap = + tradingEntitiesBloc.hasActiveSwap(coin.abbr) || childCoins.any((c) => tradingEntitiesBloc.hasActiveSwap(c.abbr)); if (hasSwap) { - InformationPopup( - context: context, - ) + InformationPopup(context: context) ..text = LocaleKeys.coinDisableSpan1.tr(args: [coin.abbr]) ..show(); return; } - final int openOrders = tradingEntitiesBloc.openOrdersCount(coin.abbr) + + final int openOrders = + tradingEntitiesBloc.openOrdersCount(coin.abbr) + childCoins.fold( 0, (sum, c) => sum + tradingEntitiesBloc.openOrdersCount(c.abbr),