TF-3924 Thread Detail Reduce middle state when metadata loading
This commit is contained in:
+25
-6
@@ -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<EmailId> allEmailIds,
|
||||
EmailId? selectedEmailId,
|
||||
Map<dynamic, dynamic> originalMap,
|
||||
PresentationEmail? selectedEmail,
|
||||
) {
|
||||
emailIdsPresentation.value..clear()..addAll({
|
||||
for (final id in allEmailIds)
|
||||
id: id == selectedEmailId
|
||||
? originalMap[id] ?? selectedEmail
|
||||
: null,
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user