From f13b3f44ef9218e25585c647cb3df2c79f2d2550 Mon Sep 17 00:00:00 2001 From: redDwarf03 Date: Mon, 27 May 2024 17:59:49 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Improve=20navigation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/pool_add_form_sheet.dart | 18 +------- .../pool_add_in_progress_popup.dart | 25 +++-------- .../pool_add/layouts/pool_add_sheet.dart | 14 +----- .../components/pool_list_sheet_header.dart | 2 +- lib/ui/views/swap/bloc/provider.dart | 40 +++++++++++++++++ .../layouts/components/swap_form_sheet.dart | 45 +++++++++++-------- 6 files changed, 75 insertions(+), 69 deletions(-) diff --git a/lib/ui/views/pool_add/layouts/components/pool_add_form_sheet.dart b/lib/ui/views/pool_add/layouts/components/pool_add_form_sheet.dart index cfb1d66f..91c92335 100644 --- a/lib/ui/views/pool_add/layouts/components/pool_add_form_sheet.dart +++ b/lib/ui/views/pool_add/layouts/components/pool_add_form_sheet.dart @@ -2,7 +2,6 @@ import 'package:aedex/application/session/provider.dart'; import 'package:aedex/ui/views/pool_add/bloc/provider.dart'; import 'package:aedex/ui/views/pool_add/layouts/components/pool_add_textfield_token_1_amount.dart'; import 'package:aedex/ui/views/pool_add/layouts/components/pool_add_textfield_token_2_amount.dart'; -import 'package:aedex/ui/views/pool_list/pool_list_sheet.dart'; import 'package:aedex/ui/views/util/app_styles.dart'; import 'package:aedex/ui/views/util/components/failure_message.dart'; @@ -121,9 +120,7 @@ class PoolAddFormSheet extends ConsumerWidget { ); } else { if (!context.mounted) return; - context.go( - '/', - ); + context.pop(); } }, ), @@ -132,18 +129,7 @@ class PoolAddFormSheet extends ConsumerWidget { ), aedappfm.ButtonClose( onPressed: () { - final poolsListTabEncoded = Uri.encodeComponent( - poolAdd.poolsListTab.name, - ); - - context.go( - Uri( - path: PoolListSheet.routerPage, - queryParameters: { - 'tab': poolsListTabEncoded, - }, - ).toString(), - ); + context.pop(); }, ), ], diff --git a/lib/ui/views/pool_add/layouts/components/pool_add_in_progress_popup.dart b/lib/ui/views/pool_add/layouts/components/pool_add_in_progress_popup.dart index 11543465..5a8aa0bf 100755 --- a/lib/ui/views/pool_add/layouts/components/pool_add_in_progress_popup.dart +++ b/lib/ui/views/pool_add/layouts/components/pool_add_in_progress_popup.dart @@ -3,7 +3,6 @@ import 'package:aedex/domain/usecases/add_pool.usecase.dart'; import 'package:aedex/ui/views/pool_add/bloc/provider.dart'; import 'package:aedex/ui/views/pool_add/layouts/components/pool_add_in_progress_tx_addresses.dart'; import 'package:aedex/ui/views/pool_list/bloc/provider.dart'; -import 'package:aedex/ui/views/pool_list/pool_list_sheet.dart'; import 'package:aedex/ui/views/util/components/failure_message.dart'; import 'package:archethic_dapp_framework_flutter/archethic_dapp_framework_flutter.dart' as aedappfm; @@ -74,43 +73,29 @@ class PoolAddInProgressPopup { WidgetRef ref, ) { final poolAdd = ref.watch(PoolAddFormProvider.poolAddForm); - final poolsListTabEncoded = Uri.encodeComponent(poolAdd.poolsListTab.name); return aedappfm.PopupCloseButton( warningCloseWarning: poolAdd.isProcessInProgress, warningCloseLabel: poolAdd.isProcessInProgress == true ? AppLocalizations.of(context)!.poolAddProcessInterruptionWarning : '', - warningCloseFunction: () { + warningCloseFunction: () async { ref.invalidate( PoolAddFormProvider.poolAddForm, ); + if (!context.mounted) return; Navigator.of(context).pop(); - context.go( - Uri( - path: PoolListSheet.routerPage, - queryParameters: { - 'tab': poolsListTabEncoded, - }, - ).toString(), - ); + context.pop(); }, closeFunction: () async { ref.invalidate( PoolAddFormProvider.poolAddForm, ); + if (!context.mounted) return; Navigator.of(context).pop(); - - context.go( - Uri( - path: PoolListSheet.routerPage, - queryParameters: { - 'tab': poolsListTabEncoded, - }, - ).toString(), - ); + context.pop(); await ref.read(PoolListFormProvider.poolListForm.notifier).getPoolsList( tabIndexSelected: poolAdd.poolsListTab, cancelToken: UniqueKey().toString(), diff --git a/lib/ui/views/pool_add/layouts/pool_add_sheet.dart b/lib/ui/views/pool_add/layouts/pool_add_sheet.dart index 41935ff8..2dcadadc 100755 --- a/lib/ui/views/pool_add/layouts/pool_add_sheet.dart +++ b/lib/ui/views/pool_add/layouts/pool_add_sheet.dart @@ -1,13 +1,11 @@ /// SPDX-License-Identifier: AGPL-3.0-or-later import 'package:aedex/application/session/provider.dart'; import 'package:aedex/domain/models/dex_token.dart'; -import 'package:aedex/ui/views/main_screen/bloc/provider.dart'; import 'package:aedex/ui/views/main_screen/layouts/main_screen_sheet.dart'; import 'package:aedex/ui/views/pool_add/bloc/provider.dart'; import 'package:aedex/ui/views/pool_add/layouts/components/pool_add_confirm_sheet.dart'; import 'package:aedex/ui/views/pool_add/layouts/components/pool_add_form_sheet.dart'; import 'package:aedex/ui/views/pool_list/bloc/provider.dart'; -import 'package:aedex/ui/views/pool_list/pool_list_sheet.dart'; import 'package:aedex/ui/views/util/components/dex_archethic_uco.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; @@ -43,9 +41,6 @@ class _PoolAddSheetState extends ConsumerState { if (widget.token1 != null && widget.token2 != null) { try { - ref.read(navigationIndexMainScreenProvider.notifier).state = - NavigationIndex.pool; - if (context.mounted) { await ref .read(PoolAddFormProvider.poolAddForm.notifier) @@ -60,14 +55,7 @@ class _PoolAddSheetState extends ConsumerState { } } catch (e) { if (mounted) { - context.go( - Uri( - path: PoolListSheet.routerPage, - queryParameters: { - 'tab': widget.poolsListTab, - }, - ).toString(), - ); + context.pop(); } } } diff --git a/lib/ui/views/pool_list/components/pool_list_sheet_header.dart b/lib/ui/views/pool_list/components/pool_list_sheet_header.dart index 905329f6..2b856fdb 100644 --- a/lib/ui/views/pool_list/components/pool_list_sheet_header.dart +++ b/lib/ui/views/pool_list/components/pool_list_sheet_header.dart @@ -73,7 +73,7 @@ class _PoolListSheetHeaderState extends ConsumerState { ref.watch(PoolListFormProvider.poolListForm).tabIndexSelected; final poolsListTabEncoded = Uri.encodeComponent(selectedTab.name); - context.go( + context.push( Uri( path: PoolAddSheet.routerPage, queryParameters: { diff --git a/lib/ui/views/swap/bloc/provider.dart b/lib/ui/views/swap/bloc/provider.dart index d67b2846..f5099a25 100644 --- a/lib/ui/views/swap/bloc/provider.dart +++ b/lib/ui/views/swap/bloc/provider.dart @@ -412,6 +412,46 @@ class SwapFormNotifier extends AutoDisposeNotifier { ); } + Future isPoolExists() async { + state = state.copyWith( + failure: null, + calculationInProgress: true, + ); + + final dexConfig = + await ref.read(DexConfigProviders.dexConfigRepository).getDexConfig(); + final apiService = aedappfm.sl.get(); + final routerFactory = + RouterFactory(dexConfig.routerGenesisAddress, apiService); + final poolInfosResult = await routerFactory.getPoolAddresses( + state.tokenToSwap!.isUCO ? 'UCO' : state.tokenToSwap!.address!, + state.tokenSwapped!.isUCO ? 'UCO' : state.tokenSwapped!.address!, + ); + await poolInfosResult.map( + success: (success) async { + if (success != null && success['address'] != null) { + setPoolAddress(success['address']); + await getRatio(); + await getPool(); + } else { + setPoolAddress(''); + setFailure(const aedappfm.PoolNotExists()); + state = state.copyWith(ratio: 0, pool: null); + } + }, + failure: (failure) { + setPoolAddress(''); + setFailure(const aedappfm.PoolNotExists()); + state = state.copyWith(ratio: 0, pool: null); + }, + ); + state = state.copyWith( + calculationInProgress: false, + ); + + return state.failure == null; + } + Future setTokenSwapped( DexToken tokenSwapped, ) async { diff --git a/lib/ui/views/swap/layouts/components/swap_form_sheet.dart b/lib/ui/views/swap/layouts/components/swap_form_sheet.dart index 12e4f4f7..5f117bef 100644 --- a/lib/ui/views/swap/layouts/components/swap_form_sheet.dart +++ b/lib/ui/views/swap/layouts/components/swap_form_sheet.dart @@ -60,25 +60,32 @@ class SwapFormSheet extends ConsumerWidget { swap.tokenToSwap != null && swap.tokenSwapped != null && swap.tokenToSwap!.address != swap.tokenSwapped!.address) - TextButton.icon( - label: const Text('Create this pool'), - onPressed: () { - final token1Json = jsonEncode(swap.tokenToSwap!.toJson()); - final token2Json = - jsonEncode(swap.tokenSwapped!.toJson()); - final token1Encoded = Uri.encodeComponent(token1Json); - final token2Encoded = Uri.encodeComponent(token2Json); - context.go( - Uri( - path: PoolAddSheet.routerPage, - queryParameters: { - 'token1': token1Encoded, - 'token2': token2Encoded, - }, - ).toString(), - ); - }, - icon: const Icon(Icons.add), + Padding( + padding: const EdgeInsets.only(bottom: 10), + child: TextButton.icon( + label: const Text('Create this pool'), + onPressed: () async { + final token1Json = + jsonEncode(swap.tokenToSwap!.toJson()); + final token2Json = + jsonEncode(swap.tokenSwapped!.toJson()); + final token1Encoded = Uri.encodeComponent(token1Json); + final token2Encoded = Uri.encodeComponent(token2Json); + await context.push( + Uri( + path: PoolAddSheet.routerPage, + queryParameters: { + 'token1': token1Encoded, + 'token2': token2Encoded, + }, + ).toString(), + ); + final swapNotifier = + ref.read(SwapFormProvider.swapForm.notifier); + await swapNotifier.isPoolExists(); + }, + icon: const Icon(Icons.add), + ), ), aedappfm.ButtonValidate( controlOk: swap.isControlsOk,