From 74abbc47ab25a065a63cf07426cba5c4bf9fca8d Mon Sep 17 00:00:00 2001 From: dab246 Date: Thu, 27 Nov 2025 02:54:08 +0700 Subject: [PATCH] fix(cnb): delete email and state cache when F5 or reload button (cherry picked from commit 520cd6c82fbdd5da0316861a5620060bfdf3f3af) --- .../controller/mailbox_dashboard_controller.dart | 4 ++++ .../presentation/manage_account_dashboard_controller.dart | 8 ++++++++ lib/features/thread/presentation/thread_controller.dart | 8 ++++++-- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart index 7a462f80e..4f3658a8c 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart @@ -611,6 +611,10 @@ class MailboxDashBoardController extends ReloadableController @override Future onBeforeUnloadBrowserListener(html.Event event) async { log('MailboxDashBoardController::onBeforeUnloadBrowserListener:event = ${event.runtimeType} | hasComposer = ${twakeAppManager.hasComposer} | isExecutingBeforeReconnect = ${twakeAppManager.isExecutingBeforeReconnect}'); + if (PlatformInfo.isWeb) { + await cachingManager.clearAllEmailAndStateCache(); + } + if (event is html.BeforeUnloadEvent && twakeAppManager.hasComposer && !twakeAppManager.isExecutingBeforeReconnect) { diff --git a/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart b/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart index ae6dea924..dfa531473 100644 --- a/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart +++ b/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart @@ -1,3 +1,4 @@ +import 'package:tmail_ui_user/main/universal_import/html_stub.dart' as html; import 'package:back_button_interceptor/back_button_interceptor.dart'; import 'package:core/core.dart'; import 'package:dartz/dartz.dart'; @@ -136,6 +137,13 @@ class ManageAccountDashBoardController extends ReloadableController _getParametersRouter(); } + @override + Future onBeforeUnloadBrowserListener(html.Event event) async { + if (PlatformInfo.isWeb) { + await cachingManager.clearAllEmailAndStateCache(); + } + } + void _getArguments() { final arguments = Get.arguments; if (arguments is ManageAccountArguments) { diff --git a/lib/features/thread/presentation/thread_controller.dart b/lib/features/thread/presentation/thread_controller.dart index eaaeb76f6..432b95366 100644 --- a/lib/features/thread/presentation/thread_controller.dart +++ b/lib/features/thread/presentation/thread_controller.dart @@ -355,7 +355,7 @@ class ThreadController extends BaseController with EmailActionController { if (action is RefreshChangeEmailAction) { _refreshEmailChanges(newState: action.newState); } else if (action is RefreshAllEmailAction) { - refreshAllEmail(forceEmailQuery: forceEmailQuery); + refreshAllEmail(forceEmailQuery: true); mailboxDashBoardController.clearEmailUIAction(); } }); @@ -607,7 +607,11 @@ class ThreadController extends BaseController with EmailActionController { } } - void refreshAllEmail({bool forceEmailQuery = false}) { + Future refreshAllEmail({bool forceEmailQuery = false}) async { + if (forceEmailQuery) { + await cachingManager.clearAllEmailAndStateCache(); + } + if (searchController.isSearchEmailRunning) { consumeState(Stream.value(Right(SearchingState()))); } else {