diff --git a/lib/features/email/presentation/styles/email_subject_styles.dart b/lib/features/email/presentation/styles/email_subject_styles.dart index b0c25b4fae..408fcb3aa6 100644 --- a/lib/features/email/presentation/styles/email_subject_styles.dart +++ b/lib/features/email/presentation/styles/email_subject_styles.dart @@ -12,7 +12,6 @@ class EmailSubjectStyles { overflow: PlatformInfo.isWeb ? TextOverflow.ellipsis : null, color: Colors.black, fontSize: 24, - height: 1, letterSpacing: -0.24, ); } \ No newline at end of file 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 f1e794baa7..05fd5aba90 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart @@ -3259,6 +3259,9 @@ class MailboxDashBoardController extends ReloadableController jmap.State? get currentEmailState => _currentEmailState; + bool get isThreadDetailedViewVisible => + dashboardRoute.value == DashboardRoutes.threadDetailed; + void _loadAppGrid() { if (PlatformInfo.isWeb && AppConfig.appGridDashboardAvailable) { appGridDashboardController.loadAppDashboardConfiguration(); diff --git a/lib/features/thread_detail/presentation/action/thread_detail_ui_action.dart b/lib/features/thread_detail/presentation/action/thread_detail_ui_action.dart index 0f7752c7f6..0a070b0562 100644 --- a/lib/features/thread_detail/presentation/action/thread_detail_ui_action.dart +++ b/lib/features/thread_detail/presentation/action/thread_detail_ui_action.dart @@ -25,6 +25,8 @@ class UpdatedEmailKeywordsAction extends ThreadDetailUIAction { class UpdatedThreadDetailSettingAction extends ThreadDetailUIAction {} +class ResyncThreadDetailWhenSettingChangedAction extends ThreadDetailUIAction {} + class EmailMovedAction extends ThreadDetailUIAction { EmailMovedAction({ required this.emailId, diff --git a/lib/features/thread_detail/presentation/extension/refresh_thread_detail_on_setting_changed.dart b/lib/features/thread_detail/presentation/extension/refresh_thread_detail_on_setting_changed.dart index 5fa7fd56de..634d41a3fe 100644 --- a/lib/features/thread_detail/presentation/extension/refresh_thread_detail_on_setting_changed.dart +++ b/lib/features/thread_detail/presentation/extension/refresh_thread_detail_on_setting_changed.dart @@ -1,10 +1,19 @@ +import 'package:core/utils/platform_info.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/thread_detail_manager.dart'; extension RefreshThreadDetailOnSettingChanged on ThreadDetailManager { void refreshThreadDetailOnSettingChanged() { if (threadDetailWasEnabled != isThreadDetailEnabled) { threadDetailWasEnabled = isThreadDetailEnabled; - mailboxDashBoardController.selectedEmail.refresh(); + if (PlatformInfo.isWeb && + mailboxDashBoardController.isThreadDetailedViewVisible) { + mailboxDashBoardController.dispatchThreadDetailUIAction( + ResyncThreadDetailWhenSettingChangedAction(), + ); + } else { + mailboxDashBoardController.selectedEmail.refresh(); + } } } } \ No newline at end of file diff --git a/lib/features/thread_detail/presentation/extension/thread_detail_on_selected_email_updated.dart b/lib/features/thread_detail/presentation/extension/thread_detail_on_selected_email_updated.dart index 8a9d3f7306..67299e6d76 100644 --- a/lib/features/thread_detail/presentation/extension/thread_detail_on_selected_email_updated.dart +++ b/lib/features/thread_detail/presentation/extension/thread_detail_on_selected_email_updated.dart @@ -8,7 +8,6 @@ import 'package:tmail_ui_user/features/email/presentation/action/email_ui_action import 'package:tmail_ui_user/features/thread/presentation/extensions/list_presentation_email_extensions.dart'; import 'package:tmail_ui_user/features/thread_detail/domain/state/get_emails_by_ids_state.dart'; import 'package:tmail_ui_user/features/thread_detail/domain/state/get_thread_by_id_state.dart'; -import 'package:tmail_ui_user/features/thread_detail/domain/usecases/get_thread_by_id_interactor.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/thread_detail_controller.dart'; @@ -16,7 +15,6 @@ import 'package:tmail_ui_user/features/thread_detail/presentation/thread_detail_ extension ThreadDetailOnSelectedEmailUpdated on ThreadDetailController { void onSelectedEmailUpdated( PresentationEmail? selectedEmail, - GetThreadByIdInteractor getThreadByIdInteractor, BuildContext? context, ) { if (selectedEmail?.id == null) { @@ -76,4 +74,19 @@ extension ThreadDetailOnSelectedEmailUpdated on ThreadDetailController { Right(PreloadEmailsByIdsSuccess([selectedEmail])), ])); } + + void resyncThreadDetailWhenSettingChanged() { + final selectedEmail = mailboxDashBoardController.selectedEmail.value; + if (selectedEmail == null) return; + + emailIdsPresentation.clear(); + scrollController ??= ScrollController(); + + mailboxDashBoardController.dispatchEmailUIAction( + DisposePreviousExpandedEmailAction(selectedEmail.id!), + ); + + loadThreadOnThreadChanged = isThreadDetailEnabled; + _preloadSelectedEmail(selectedEmail); + } } \ No newline at end of file diff --git a/lib/features/thread_detail/presentation/thread_detail_controller.dart b/lib/features/thread_detail/presentation/thread_detail_controller.dart index f55a507cd2..13ab9e5dad 100644 --- a/lib/features/thread_detail/presentation/thread_detail_controller.dart +++ b/lib/features/thread_detail/presentation/thread_detail_controller.dart @@ -172,7 +172,6 @@ class ThreadDetailController extends BaseController { ever(mailboxDashBoardController.selectedEmail, (presentationEmail) async { onSelectedEmailUpdated( presentationEmail, - _getEmailIdsByThreadIdInteractor, currentContext, ); }); @@ -197,6 +196,8 @@ class ThreadDetailController extends BaseController { threadId: action.threadId, isSentMailbox: action.isSentMailbox, ); + } else if (action is ResyncThreadDetailWhenSettingChangedAction) { + resyncThreadDetailWhenSettingChanged(); } // Reset [threadDetailUIAction] to original value mailboxDashBoardController.dispatchThreadDetailUIAction( diff --git a/test/features/thread_detail/presentation/extension/thread_detail_on_selected_email_updated_test.dart b/test/features/thread_detail/presentation/extension/thread_detail_on_selected_email_updated_test.dart index 5842095136..33e99e61c7 100644 --- a/test/features/thread_detail/presentation/extension/thread_detail_on_selected_email_updated_test.dart +++ b/test/features/thread_detail/presentation/extension/thread_detail_on_selected_email_updated_test.dart @@ -11,7 +11,6 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller import 'package:tmail_ui_user/features/thread/presentation/extensions/list_presentation_email_extensions.dart'; import 'package:tmail_ui_user/features/thread_detail/domain/state/get_emails_by_ids_state.dart'; import 'package:tmail_ui_user/features/thread_detail/domain/state/get_thread_by_id_state.dart'; -import 'package:tmail_ui_user/features/thread_detail/domain/usecases/get_thread_by_id_interactor.dart'; import 'package:tmail_ui_user/features/thread_detail/presentation/extension/thread_detail_on_selected_email_updated.dart'; import 'package:tmail_ui_user/features/thread_detail/presentation/thread_detail_controller.dart'; @@ -21,17 +20,14 @@ import 'thread_detail_on_selected_email_updated_test.mocks.dart'; @GenerateNiceMocks([ MockSpec(), - MockSpec(), MockSpec(), ]) void main() { late MockThreadDetailController threadDetailController; - late MockGetThreadByIdInteractor getThreadByIdInteractor; late MockMailboxDashBoardController mailboxDashboardController; setUp(() { threadDetailController = MockThreadDetailController(); - getThreadByIdInteractor = MockGetThreadByIdInteractor(); mailboxDashboardController = MockMailboxDashBoardController(); when(threadDetailController.session) .thenReturn(SessionFixtures.aliceSession); @@ -51,7 +47,6 @@ void main() { // act threadDetailController.onSelectedEmailUpdated( null, - getThreadByIdInteractor, null, ); @@ -76,7 +71,6 @@ void main() { // act threadDetailController.onSelectedEmailUpdated( selectedEmail, - getThreadByIdInteractor, null, );