diff --git a/lib/features/thread_detail/presentation/extension/handle_get_email_ids_by_thread_id_success.dart b/lib/features/thread_detail/presentation/extension/handle_get_email_ids_by_thread_id_success.dart index cdfe4be86..435ab514a 100644 --- a/lib/features/thread_detail/presentation/extension/handle_get_email_ids_by_thread_id_success.dart +++ b/lib/features/thread_detail/presentation/extension/handle_get_email_ids_by_thread_id_success.dart @@ -1,3 +1,7 @@ +// ignore_for_file: invalid_use_of_protected_member + +import 'package:jmap_dart_client/jmap/mail/email/email.dart'; +import 'package:model/email/presentation_email.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/presentation/thread_detail_controller.dart'; @@ -32,15 +36,30 @@ extension HandleGetEmailIdsByThreadIdSuccess on ThreadDetailController { final selectedEmail = mailboxDashBoardController.selectedEmail.value; final selectedEmailId = selectedEmail?.id; - emailIdsPresentation.value = { - for (final id in allEmailIds) - id: id == selectedEmailId - ? emailIdsPresentation[id] ?? selectedEmail - : null, - }; + final originalMap = Map.from(emailIdsPresentation.value); + _assignNewThreadEmailIdsWithoutRebuildingTheUI( + allEmailIds, + selectedEmailId, + originalMap, + selectedEmail, + ); if ((isThreadDetailEnabled && success is! PreloadEmailIdsInThreadSuccess) || (!isThreadDetailEnabled && success is PreloadEmailIdsInThreadSuccess)) { emailsInThreadDetailInfo.value = allEmailsInThreadDetailInfo; } } + + void _assignNewThreadEmailIdsWithoutRebuildingTheUI( + List allEmailIds, + EmailId? selectedEmailId, + Map originalMap, + PresentationEmail? selectedEmail, + ) { + emailIdsPresentation.value..clear()..addAll({ + for (final id in allEmailIds) + id: id == selectedEmailId + ? originalMap[id] ?? selectedEmail + : null, + }); + } } \ No newline at end of file