Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ class EmailSubjectStyles {
overflow: PlatformInfo.isWeb ? TextOverflow.ellipsis : null,
color: Colors.black,
fontSize: 24,
height: 1,
letterSpacing: -0.24,
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ class UpdatedEmailKeywordsAction extends ThreadDetailUIAction {

class UpdatedThreadDetailSettingAction extends ThreadDetailUIAction {}

class ResyncThreadDetailWhenSettingChangedAction extends ThreadDetailUIAction {}

class EmailMovedAction extends ThreadDetailUIAction {
EmailMovedAction({
required this.emailId,
Expand Down
Original file line number Diff line number Diff line change
@@ -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();
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,13 @@ 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';

extension ThreadDetailOnSelectedEmailUpdated on ThreadDetailController {
void onSelectedEmailUpdated(
PresentationEmail? selectedEmail,
GetThreadByIdInteractor getThreadByIdInteractor,
BuildContext? context,
) {
if (selectedEmail?.id == null) {
Expand Down Expand Up @@ -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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,6 @@ class ThreadDetailController extends BaseController {
ever(mailboxDashBoardController.selectedEmail, (presentationEmail) async {
onSelectedEmailUpdated(
presentationEmail,
_getEmailIdsByThreadIdInteractor,
currentContext,
);
});
Expand All @@ -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(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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';

Expand All @@ -21,17 +20,14 @@ import 'thread_detail_on_selected_email_updated_test.mocks.dart';

@GenerateNiceMocks([
MockSpec<ThreadDetailController>(),
MockSpec<GetThreadByIdInteractor>(),
MockSpec<MailboxDashBoardController>(),
])
void main() {
late MockThreadDetailController threadDetailController;
late MockGetThreadByIdInteractor getThreadByIdInteractor;
late MockMailboxDashBoardController mailboxDashboardController;

setUp(() {
threadDetailController = MockThreadDetailController();
getThreadByIdInteractor = MockGetThreadByIdInteractor();
mailboxDashboardController = MockMailboxDashBoardController();
when(threadDetailController.session)
.thenReturn(SessionFixtures.aliceSession);
Expand All @@ -51,7 +47,6 @@ void main() {
// act
threadDetailController.onSelectedEmailUpdated(
null,
getThreadByIdInteractor,
null,
);

Expand All @@ -76,7 +71,6 @@ void main() {
// act
threadDetailController.onSelectedEmailUpdated(
selectedEmail,
getThreadByIdInteractor,
null,
);

Expand Down
Loading