From 9f538bb9c140f74eeeee4af1ad5fae5c495d15d3 Mon Sep 17 00:00:00 2001 From: Francois Date: Wed, 5 Feb 2025 16:16:37 +0200 Subject: [PATCH 1/6] chore(deps): bump SDK version hash --- packages/komodo_ui_kit/pubspec.lock | 6 +++--- pubspec.lock | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/komodo_ui_kit/pubspec.lock b/packages/komodo_ui_kit/pubspec.lock index cee3945cd7..ebea80d511 100644 --- a/packages/komodo_ui_kit/pubspec.lock +++ b/packages/komodo_ui_kit/pubspec.lock @@ -95,7 +95,7 @@ packages: description: path: "packages/komodo_defi_rpc_methods" ref: dev - resolved-ref: "9c75bb7b2d3a556cec4119ad29fdb7fa93fe599e" + resolved-ref: b6fdae57512601f5ce01f83be22d2ae32169bf74 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0" @@ -104,7 +104,7 @@ packages: description: path: "packages/komodo_defi_types" ref: dev - resolved-ref: "9c75bb7b2d3a556cec4119ad29fdb7fa93fe599e" + resolved-ref: b6fdae57512601f5ce01f83be22d2ae32169bf74 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0" @@ -113,7 +113,7 @@ packages: description: path: "packages/komodo_ui" ref: dev - resolved-ref: "9c75bb7b2d3a556cec4119ad29fdb7fa93fe599e" + resolved-ref: b6fdae57512601f5ce01f83be22d2ae32169bf74 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0" diff --git a/pubspec.lock b/pubspec.lock index 183d93a51e..bc88afc85d 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -666,7 +666,7 @@ packages: description: path: "packages/komodo_coins" ref: dev - resolved-ref: "9c75bb7b2d3a556cec4119ad29fdb7fa93fe599e" + resolved-ref: b6fdae57512601f5ce01f83be22d2ae32169bf74 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0" @@ -675,7 +675,7 @@ packages: description: path: "packages/komodo_defi_framework" ref: dev - resolved-ref: "9c75bb7b2d3a556cec4119ad29fdb7fa93fe599e" + resolved-ref: b6fdae57512601f5ce01f83be22d2ae32169bf74 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0" @@ -684,7 +684,7 @@ packages: description: path: "packages/komodo_defi_local_auth" ref: dev - resolved-ref: "9c75bb7b2d3a556cec4119ad29fdb7fa93fe599e" + resolved-ref: b6fdae57512601f5ce01f83be22d2ae32169bf74 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0" @@ -693,7 +693,7 @@ packages: description: path: "packages/komodo_defi_rpc_methods" ref: dev - resolved-ref: "9c75bb7b2d3a556cec4119ad29fdb7fa93fe599e" + resolved-ref: b6fdae57512601f5ce01f83be22d2ae32169bf74 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0" @@ -702,7 +702,7 @@ packages: description: path: "packages/komodo_defi_sdk" ref: dev - resolved-ref: "9c75bb7b2d3a556cec4119ad29fdb7fa93fe599e" + resolved-ref: b6fdae57512601f5ce01f83be22d2ae32169bf74 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0" @@ -711,7 +711,7 @@ packages: description: path: "packages/komodo_defi_types" ref: dev - resolved-ref: "9c75bb7b2d3a556cec4119ad29fdb7fa93fe599e" + resolved-ref: b6fdae57512601f5ce01f83be22d2ae32169bf74 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0" @@ -727,7 +727,7 @@ packages: description: path: "packages/komodo_ui" ref: dev - resolved-ref: "9c75bb7b2d3a556cec4119ad29fdb7fa93fe599e" + resolved-ref: b6fdae57512601f5ce01f83be22d2ae32169bf74 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0" @@ -743,7 +743,7 @@ packages: description: path: "packages/komodo_wallet_build_transformer" ref: dev - resolved-ref: "9c75bb7b2d3a556cec4119ad29fdb7fa93fe599e" + resolved-ref: b6fdae57512601f5ce01f83be22d2ae32169bf74 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0" From 2709ee396a015cb4b4949d44d383556efae09160 Mon Sep 17 00:00:00 2001 From: Francois Date: Wed, 5 Feb 2025 11:27:24 +0200 Subject: [PATCH 2/6] fix(router): use ValueKey for MainLayout fixes non-responsive UI due to immutable MainLayout ignoring routing and layout size changes --- lib/router/navigators/app_router_delegate.dart | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/router/navigators/app_router_delegate.dart b/lib/router/navigators/app_router_delegate.dart index d59a02c6dd..2ed243169b 100644 --- a/lib/router/navigators/app_router_delegate.dart +++ b/lib/router/navigators/app_router_delegate.dart @@ -37,7 +37,9 @@ class AppRouterDelegate extends RouterDelegate materialPageContext = context; return GestureDetector( onTap: () => runDropdownDismiss(context), - child: const MainLayout(), + child: MainLayout( + key: ValueKey('${isMobile}_${routingState.selectedMenu}'), + ), ); }, ), From 8a84d8f2298b59df2bd20604c8165649cd1ad633 Mon Sep 17 00:00:00 2001 From: Francois Date: Wed, 5 Feb 2025 16:17:21 +0200 Subject: [PATCH 3/6] fix(price-charts): filter out CEX coins not in known assets list the use of `.single` in `getSdkAsset` would result in exceptions for coins that were not in the known assets list --- lib/bloc/app_bloc_root.dart | 6 ++++-- .../cex_market_data/price_chart/price_chart_bloc.dart | 8 +++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/bloc/app_bloc_root.dart b/lib/bloc/app_bloc_root.dart index 2475734b66..cc5c732256 100644 --- a/lib/bloc/app_bloc_root.dart +++ b/lib/bloc/app_bloc_root.dart @@ -193,8 +193,10 @@ class AppBlocRoot extends StatelessWidget { )..add(CoinsStarted()), ), BlocProvider( - create: (context) => PriceChartBloc(binanceRepository) - ..add( + create: (context) => PriceChartBloc( + binanceRepository, + komodoDefiSdk, + )..add( const PriceChartStarted( symbols: ['KMD'], period: Duration(days: 30), diff --git a/lib/bloc/cex_market_data/price_chart/price_chart_bloc.dart b/lib/bloc/cex_market_data/price_chart/price_chart_bloc.dart index b20a7f89d3..af1d42b1c1 100644 --- a/lib/bloc/cex_market_data/price_chart/price_chart_bloc.dart +++ b/lib/bloc/cex_market_data/price_chart/price_chart_bloc.dart @@ -1,5 +1,6 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:komodo_cex_market_data/komodo_cex_market_data.dart'; +import 'package:komodo_defi_sdk/komodo_defi_sdk.dart'; import 'package:web_dex/shared/utils/utils.dart'; import 'models/price_chart_data.dart'; @@ -7,13 +8,15 @@ import 'price_chart_event.dart'; import 'price_chart_state.dart'; class PriceChartBloc extends Bloc { - PriceChartBloc(this.cexPriceRepository) : super(const PriceChartState()) { + PriceChartBloc(this.cexPriceRepository, this.sdk) + : super(const PriceChartState()) { on(_onStarted); on(_onIntervalChanged); on(_onSymbolChanged); } final BinanceRepository cexPriceRepository; + final KomodoDefiSdk sdk; final KomodoPriceRepository _komodoPriceRepository = KomodoPriceRepository( cexPriceProvider: KomodoPriceProvider(), ); @@ -30,6 +33,9 @@ class PriceChartBloc extends Bloc { if (state.availableCoins.isEmpty) { final coins = (await cexPriceRepository.getCoinList()) .where((coin) => coin.currencies.contains('USDT')) + // filter out assets that are not in the known coins list to + // prevent errors when using the SDK with the `.single` property + .where((coin) => sdk.assets.assetsFromTicker(coin.id).length == 1) .map((coin) async { double? dayChangePercent = coinPrices[coin.symbol]?.change24h; From 327beca768cea020997413ccb78833022beebef2 Mon Sep 17 00:00:00 2001 From: Francois Date: Wed, 5 Feb 2025 16:45:07 +0200 Subject: [PATCH 4/6] chore(deps): bump SDK version hash --- packages/komodo_ui_kit/pubspec.lock | 6 +++--- pubspec.lock | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/komodo_ui_kit/pubspec.lock b/packages/komodo_ui_kit/pubspec.lock index ebea80d511..13075d3978 100644 --- a/packages/komodo_ui_kit/pubspec.lock +++ b/packages/komodo_ui_kit/pubspec.lock @@ -95,7 +95,7 @@ packages: description: path: "packages/komodo_defi_rpc_methods" ref: dev - resolved-ref: b6fdae57512601f5ce01f83be22d2ae32169bf74 + resolved-ref: afcdfd97b909b6f7cbd9f04c25f57a11031bcaf6 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0" @@ -104,7 +104,7 @@ packages: description: path: "packages/komodo_defi_types" ref: dev - resolved-ref: b6fdae57512601f5ce01f83be22d2ae32169bf74 + resolved-ref: afcdfd97b909b6f7cbd9f04c25f57a11031bcaf6 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0" @@ -113,7 +113,7 @@ packages: description: path: "packages/komodo_ui" ref: dev - resolved-ref: b6fdae57512601f5ce01f83be22d2ae32169bf74 + resolved-ref: afcdfd97b909b6f7cbd9f04c25f57a11031bcaf6 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0" diff --git a/pubspec.lock b/pubspec.lock index bc88afc85d..326d373f46 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -666,7 +666,7 @@ packages: description: path: "packages/komodo_coins" ref: dev - resolved-ref: b6fdae57512601f5ce01f83be22d2ae32169bf74 + resolved-ref: afcdfd97b909b6f7cbd9f04c25f57a11031bcaf6 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0" @@ -675,7 +675,7 @@ packages: description: path: "packages/komodo_defi_framework" ref: dev - resolved-ref: b6fdae57512601f5ce01f83be22d2ae32169bf74 + resolved-ref: afcdfd97b909b6f7cbd9f04c25f57a11031bcaf6 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0" @@ -684,7 +684,7 @@ packages: description: path: "packages/komodo_defi_local_auth" ref: dev - resolved-ref: b6fdae57512601f5ce01f83be22d2ae32169bf74 + resolved-ref: afcdfd97b909b6f7cbd9f04c25f57a11031bcaf6 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0" @@ -693,7 +693,7 @@ packages: description: path: "packages/komodo_defi_rpc_methods" ref: dev - resolved-ref: b6fdae57512601f5ce01f83be22d2ae32169bf74 + resolved-ref: afcdfd97b909b6f7cbd9f04c25f57a11031bcaf6 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0" @@ -702,7 +702,7 @@ packages: description: path: "packages/komodo_defi_sdk" ref: dev - resolved-ref: b6fdae57512601f5ce01f83be22d2ae32169bf74 + resolved-ref: afcdfd97b909b6f7cbd9f04c25f57a11031bcaf6 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0" @@ -711,7 +711,7 @@ packages: description: path: "packages/komodo_defi_types" ref: dev - resolved-ref: b6fdae57512601f5ce01f83be22d2ae32169bf74 + resolved-ref: afcdfd97b909b6f7cbd9f04c25f57a11031bcaf6 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0" @@ -727,7 +727,7 @@ packages: description: path: "packages/komodo_ui" ref: dev - resolved-ref: b6fdae57512601f5ce01f83be22d2ae32169bf74 + resolved-ref: afcdfd97b909b6f7cbd9f04c25f57a11031bcaf6 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0" @@ -743,7 +743,7 @@ packages: description: path: "packages/komodo_wallet_build_transformer" ref: dev - resolved-ref: b6fdae57512601f5ce01f83be22d2ae32169bf74 + resolved-ref: afcdfd97b909b6f7cbd9f04c25f57a11031bcaf6 url: "https://github.com/KomodoPlatform/komodo-defi-sdk-flutter.git" source: git version: "0.2.0+0" From 8ff69c2f3dfdcde71c41f9e5aa0886a1255c286c Mon Sep 17 00:00:00 2001 From: Francois Date: Fri, 7 Feb 2025 05:29:15 +0200 Subject: [PATCH 5/6] refactor: remove isMobile from ValueKey and update filter comment --- lib/bloc/cex_market_data/price_chart/price_chart_bloc.dart | 6 ++++-- lib/router/navigators/app_router_delegate.dart | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/bloc/cex_market_data/price_chart/price_chart_bloc.dart b/lib/bloc/cex_market_data/price_chart/price_chart_bloc.dart index af1d42b1c1..10fe47b431 100644 --- a/lib/bloc/cex_market_data/price_chart/price_chart_bloc.dart +++ b/lib/bloc/cex_market_data/price_chart/price_chart_bloc.dart @@ -33,8 +33,10 @@ class PriceChartBloc extends Bloc { if (state.availableCoins.isEmpty) { final coins = (await cexPriceRepository.getCoinList()) .where((coin) => coin.currencies.contains('USDT')) - // filter out assets that are not in the known coins list to - // prevent errors when using the SDK with the `.single` property + // `cexPriceRepository.getCoinList()` returns coins from a CEX + // (e.g. Binance), some of which are not in our known/available + // assets/coins list. This filter ensures that we only attempt to + // fetch and display data for supported coins .where((coin) => sdk.assets.assetsFromTicker(coin.id).length == 1) .map((coin) async { double? dayChangePercent = coinPrices[coin.symbol]?.change24h; diff --git a/lib/router/navigators/app_router_delegate.dart b/lib/router/navigators/app_router_delegate.dart index 2ed243169b..90f70b0f4d 100644 --- a/lib/router/navigators/app_router_delegate.dart +++ b/lib/router/navigators/app_router_delegate.dart @@ -38,7 +38,7 @@ class AppRouterDelegate extends RouterDelegate return GestureDetector( onTap: () => runDropdownDismiss(context), child: MainLayout( - key: ValueKey('${isMobile}_${routingState.selectedMenu}'), + key: ValueKey('${routingState.selectedMenu}'), ), ); }, From 8794b154cc7045ec9d7e4f78e3dbb056b186618b Mon Sep 17 00:00:00 2001 From: "Charl (Nitride)" <77973576+CharlVS@users.noreply.github.com> Date: Fri, 7 Feb 2025 18:39:06 +0100 Subject: [PATCH 6/6] fix(charts): Allow edge-case for multiple assets for a given ticker. Although unlikely anytime soon, if the coins repo has a change pushed to it where this assumption no longer holds true, then we want to error out because there are many instances where we've assumed a given ticker will have exactly 1 or 0 coins/assets, which may wreak havoc if it's not treated as a breaking change. --- lib/bloc/cex_market_data/price_chart/price_chart_bloc.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/bloc/cex_market_data/price_chart/price_chart_bloc.dart b/lib/bloc/cex_market_data/price_chart/price_chart_bloc.dart index 10fe47b431..84dc4bc4fa 100644 --- a/lib/bloc/cex_market_data/price_chart/price_chart_bloc.dart +++ b/lib/bloc/cex_market_data/price_chart/price_chart_bloc.dart @@ -37,7 +37,7 @@ class PriceChartBloc extends Bloc { // (e.g. Binance), some of which are not in our known/available // assets/coins list. This filter ensures that we only attempt to // fetch and display data for supported coins - .where((coin) => sdk.assets.assetsFromTicker(coin.id).length == 1) + .where((coin) => sdk.assets.assetsFromTicker(coin.id).length >= 1) .map((coin) async { double? dayChangePercent = coinPrices[coin.symbol]?.change24h;