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 @override
Future<void> onBeforeUnloadBrowserListener(html.Event event) async { Future<void> onBeforeUnloadBrowserListener(html.Event event) async {
log('MailboxDashBoardController::onBeforeUnloadBrowserListener:event = ${event.runtimeType} | hasComposer = ${twakeAppManager.hasComposer} | isExecutingBeforeReconnect = ${twakeAppManager.isExecutingBeforeReconnect}'); log('MailboxDashBoardController::onBeforeUnloadBrowserListener:event = ${event.runtimeType} | hasComposer = ${twakeAppManager.hasComposer} | isExecutingBeforeReconnect = ${twakeAppManager.isExecutingBeforeReconnect}');
if (PlatformInfo.isWeb) {
await cachingManager.clearAllEmailAndStateCache();
}
if (event is html.BeforeUnloadEvent && if (event is html.BeforeUnloadEvent &&
twakeAppManager.hasComposer && twakeAppManager.hasComposer &&
!twakeAppManager.isExecutingBeforeReconnect) { !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:back_button_interceptor/back_button_interceptor.dart';
import 'package:core/core.dart'; import 'package:core/core.dart';
import 'package:dartz/dartz.dart'; import 'package:dartz/dartz.dart';
@@ -136,6 +137,13 @@ class ManageAccountDashBoardController extends ReloadableController
_getParametersRouter(); _getParametersRouter();
} }
@override
Future<void> onBeforeUnloadBrowserListener(html.Event event) async {
if (PlatformInfo.isWeb) {
await cachingManager.clearAllEmailAndStateCache();
}
}
void _getArguments() { void _getArguments() {
final arguments = Get.arguments; final arguments = Get.arguments;
if (arguments is ManageAccountArguments) { if (arguments is ManageAccountArguments) {
@@ -355,7 +355,7 @@ class ThreadController extends BaseController with EmailActionController {
if (action is RefreshChangeEmailAction) { if (action is RefreshChangeEmailAction) {
_refreshEmailChanges(newState: action.newState); _refreshEmailChanges(newState: action.newState);
} else if (action is RefreshAllEmailAction) { } else if (action is RefreshAllEmailAction) {
refreshAllEmail(forceEmailQuery: forceEmailQuery); refreshAllEmail(forceEmailQuery: true);
mailboxDashBoardController.clearEmailUIAction(); 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) { if (searchController.isSearchEmailRunning) {
consumeState(Stream.value(Right(SearchingState()))); consumeState(Stream.value(Right(SearchingState())));
} else { } else {