From 549385e6304c7e97e404a9216268e6752322966a Mon Sep 17 00:00:00 2001 From: Fabian Freund Date: Sun, 2 Jun 2024 10:54:36 +0200 Subject: [PATCH] navigate back close tab first before exit --- .../presentation/screens/browser.dart | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/app/lib/features/search_browser/presentation/screens/browser.dart b/app/lib/features/search_browser/presentation/screens/browser.dart index f4b303a9..688979f3 100644 --- a/app/lib/features/search_browser/presentation/screens/browser.dart +++ b/app/lib/features/search_browser/presentation/screens/browser.dart @@ -249,6 +249,8 @@ class KagiScreen extends HookConsumerWidget { return BackButtonListener( onBackButtonPressed: () async { if (activeWebView?.page.value.pageHistory.canGoBack == true) { + lastBackButtonPress.value = null; + await activeWebView?.page.value.controller?.goBack(); return true; } @@ -258,14 +260,30 @@ class KagiScreen extends HookConsumerWidget { const Duration(seconds: 2)) { lastBackButtonPress.value = null; - return false; + if (activeWebView?.key != null && webViews.length > 1) { + await ref + .read(webViewRepositoryProvider.notifier) + .closeTab(activeWebView!.key!); + return true; + } else { + //Mark back as unhandled and navigator will pop + return false; + } } else { lastBackButtonPress.value = DateTime.now(); - ScaffoldMessenger.of(context).showSnackBar( - const SnackBar( - content: Text('Please click BACK again to exit'), - ), - ); + ScaffoldMessenger.of(context) + ..clearSnackBars() + ..showSnackBar( + SnackBar( + content: (webViews.length > 1) + ? const Text( + 'Please click BACK again to close current tab', + ) + : const Text( + 'Please click BACK again to exit app', + ), + ), + ); return true; }