fix(cnb): delete email and state cache when F5 or reload button

(cherry picked from commit 520cd6c82fbdd5da0316861a5620060bfdf3f3af)
This commit is contained in:
dab246
2025-11-27 02:54:08 +07:00
committed by Dat H. Pham
parent 363fe0aa58
commit 74abbc47ab
3 changed files with 18 additions and 2 deletions
@@ -611,6 +611,10 @@ class MailboxDashBoardController extends ReloadableController
@override
Future<void> 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) {
@@ -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<void> onBeforeUnloadBrowserListener(html.Event event) async {
if (PlatformInfo.isWeb) {
await cachingManager.clearAllEmailAndStateCache();
}
}
void _getArguments() {
final arguments = Get.arguments;
if (arguments is ManageAccountArguments) {
@@ -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<void> refreshAllEmail({bool forceEmailQuery = false}) async {
if (forceEmailQuery) {
await cachingManager.clearAllEmailAndStateCache();
}
if (searchController.isSearchEmailRunning) {
consumeState(Stream.value(Right(SearchingState())));
} else {