From 8a9901a0a42b88e446b2a2430221076cb9534944 Mon Sep 17 00:00:00 2001 From: Dat Vu Date: Sat, 21 Mar 2026 17:23:18 +0700 Subject: [PATCH] TF-4384 Fix page not found 404 error when refreshing label views (#4390) --- .../controller/single_email_controller.dart | 8 +- .../labels/presentation/label_controller.dart | 21 +++- .../presentation/base_mailbox_view.dart | 1 + .../handle_label_action_type_extension.dart | 19 ++++ .../handle_navigation_extension.dart | 104 ++++++++++++++++++ .../presentation_mailbox_extension.dart | 12 ++ .../presentation/mailbox_controller.dart | 32 ++++-- .../mailbox_dashboard_controller.dart | 7 +- .../presentation/search_email_controller.dart | 7 +- .../list_presentation_email_extensions.dart | 6 +- .../presentation/thread_controller.dart | 3 +- lib/main/routes/navigation_router.dart | 9 +- lib/main/routes/route_utils.dart | 12 +- 13 files changed, 220 insertions(+), 21 deletions(-) create mode 100644 lib/features/mailbox/presentation/extensions/handle_navigation_extension.dart diff --git a/lib/features/email/presentation/controller/single_email_controller.dart b/lib/features/email/presentation/controller/single_email_controller.dart index ed09da978..89c6336e1 100644 --- a/lib/features/email/presentation/controller/single_email_controller.dart +++ b/lib/features/email/presentation/controller/single_email_controller.dart @@ -82,6 +82,7 @@ import 'package:tmail_ui_user/features/email/presentation/utils/email_action_rea import 'package:tmail_ui_user/features/email/presentation/utils/email_utils.dart'; import 'package:tmail_ui_user/features/home/domain/extensions/session_extensions.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/action/mailbox_ui_action.dart'; +import 'package:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/download_ui_action.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/handle_download_attachment_extension.dart'; @@ -1069,18 +1070,19 @@ class SingleEmailController extends BaseController with AppLoaderMixin { void _replaceBrowserHistory() { if (PlatformInfo.isWeb) { - final selectedMailboxId = mailboxDashBoardController.selectedMailbox.value?.id; + final selectedMailbox = mailboxDashBoardController.selectedMailbox.value; final isSearchRunning = mailboxDashBoardController.searchController.isSearchEmailRunning; RouteUtils.replaceBrowserHistory( title: isSearchRunning ? 'SearchEmail' - : 'Mailbox-${selectedMailboxId?.id.value}', + : selectedMailbox?.browserRouteTitle ?? '', url: RouteUtils.createUrlWebLocationBar( AppRoutes.dashboard, router: NavigationRouter( mailboxId: isSearchRunning ? null - : selectedMailboxId, + : selectedMailbox?.browserRouteMailboxId, + labelId: selectedMailbox?.labelId, dashboardType: isSearchRunning ? DashboardType.search : DashboardType.normal, diff --git a/lib/features/labels/presentation/label_controller.dart b/lib/features/labels/presentation/label_controller.dart index 6914b87f4..a009c3467 100644 --- a/lib/features/labels/presentation/label_controller.dart +++ b/lib/features/labels/presentation/label_controller.dart @@ -2,6 +2,7 @@ import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; import 'package:core/utils/app_logger.dart'; import 'package:dartz/dartz.dart' hide State; +import 'package:flutter/material.dart' hide State; import 'package:get/get.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/session/session.dart'; @@ -38,6 +39,8 @@ class LabelController extends BaseController with LabelContextMenuMixin { final labels =