Handle keyboard shortcut FocusNode causing memory leak (#4158)

This commit is contained in:
Dat Dang
2025-11-21 09:53:40 +07:00
committed by GitHub
parent f526b39fae
commit 426977f603
4 changed files with 6 additions and 2 deletions
@@ -1,5 +1,6 @@
import 'package:tmail_ui_user/features/email/presentation/action/email_ui_action.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.dart';
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/handle_mail_shortcut_actions_extension.dart';
import 'package:tmail_ui_user/features/thread_detail/presentation/thread_detail_controller.dart';
extension CloseThreadDetailAction on ThreadDetailController {
@@ -15,6 +16,8 @@ extension CloseThreadDetailAction on ThreadDetailController {
mailboxDashBoardController.dispatchEmailUIAction(EmailUIAction());
});
onKeyboardShortcutDispose();
reset();
}
}
@@ -56,6 +56,7 @@ extension HandleMailShortcutActionsExtension on ThreadDetailController {
void onKeyboardShortcutDispose() {
if (PlatformInfo.isWeb) {
keyboardShortcutFocusNode?.dispose();
keyboardShortcutFocusNode = null;
shortcutActionEventSubscription?.cancel();
shortcutActionEventController?.close();
}
@@ -10,6 +10,7 @@ import 'package:tmail_ui_user/features/thread_detail/domain/state/get_emails_by_
import 'package:tmail_ui_user/features/thread_detail/domain/state/get_thread_by_id_state.dart';
import 'package:tmail_ui_user/features/thread_detail/presentation/action/thread_detail_ui_action.dart';
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/close_thread_detail_action.dart';
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/handle_mail_shortcut_actions_extension.dart';
import 'package:tmail_ui_user/features/thread_detail/presentation/thread_detail_controller.dart';
extension ThreadDetailOnSelectedEmailUpdated on ThreadDetailController {
@@ -23,6 +24,7 @@ extension ThreadDetailOnSelectedEmailUpdated on ThreadDetailController {
}
emailIdsPresentation.clear();
onKeyboardShortcutInit();
scrollController ??= ScrollController();
if (currentExpandedEmailId.value == null) {
@@ -212,8 +212,6 @@ class ThreadDetailController extends BaseController {
);
}
});
onKeyboardShortcutInit();
}
bool _validateLoadThread(ThreadId? threadId) {