Skip to content

Commit cc29684

Browse files
committed
TF-3358 Sort list local email draft by time
Signed-off-by: dab246 <[email protected]>
1 parent be04173 commit cc29684

File tree

3 files changed

+28
-28
lines changed

3 files changed

+28
-28
lines changed

lib/features/composer/presentation/manager/composer_manager.dart

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -23,39 +23,30 @@ class ComposerManager extends GetxController {
2323

2424
ComposerTimer? _composerTimer;
2525

26-
void addComposer(ComposerArguments composerArguments) {
27-
final id = DateTime.now().millisecondsSinceEpoch.toString();
26+
void addComposer(ComposerArguments composerArguments, {bool isSynchronous = true}) {
27+
final id = composerArguments.composerId
28+
?? DateTime.now().millisecondsSinceEpoch.toString();
2829
log('ComposerManager::addComposer:Id = $id');
29-
ComposerBindings(composerId: id, composerArguments: composerArguments).dependencies();
30+
ComposerBindings(
31+
composerId: id,
32+
composerArguments: composerArguments,
33+
).dependencies();
3034

3135
composers[id] = ComposerView(key: Key(id), composerId: id);
3236
composerIdsQueue.add(id);
3337

34-
_arrangeComposerIfNeeded();
35-
36-
_initializeTimerIfNeeded();
38+
if (isSynchronous) {
39+
_arrangeComposerIfNeeded();
40+
_initializeTimerIfNeeded();
41+
}
3742
}
3843

3944
void addListComposer(List<ComposerArguments> listArguments) {
4045
for (var argument in listArguments) {
41-
final composerId = argument.composerId;
42-
43-
if (composerId == null) continue;
44-
45-
ComposerBindings(
46-
composerId: composerId,
47-
composerArguments: argument,
48-
).dependencies();
49-
50-
composers[composerId] = ComposerView(
51-
key: Key(composerId),
52-
composerId: composerId,
53-
);
54-
composerIdsQueue.add(composerId);
46+
addComposer(argument, isSynchronous: false);
5547
}
5648

5749
_arrangeComposerIfNeeded();
58-
5950
_initializeTimerIfNeeded();
6051
}
6152

lib/features/mailbox_dashboard/presentation/extensions/restore_local_email_draft_extension.dart

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,11 @@ extension RestoreLocalEmailDraftExtension on MailboxDashBoardController {
3333
final listPresentationLocalEmailDraft = localEmailDrafts
3434
.map((localEmailDraft) => localEmailDraft.toPresentation())
3535
.toList();
36-
final listLocalEmailDraftSortByIndex = listPresentationLocalEmailDraft
37-
..sort((a, b) => (a.composerIndex ?? 0).compareTo(b.composerIndex ?? 0));
3836

39-
showLocalEmailDraftListDialog(listLocalEmailDraftSortByIndex);
37+
final listLocalEmailDraftSortByTime = listPresentationLocalEmailDraft
38+
..sort((a, b) => b.savedTime.compareTo(a.savedTime));
39+
40+
showLocalEmailDraftListDialog(listLocalEmailDraftSortByTime);
4041
}
4142

4243
void showLocalEmailDraftListDialog(List<PresentationLocalEmailDraft> presentationLocalEmailDrafts) {
@@ -64,7 +65,11 @@ extension RestoreLocalEmailDraftExtension on MailboxDashBoardController {
6465
void _restoreAllLocalEmailDrafts(List<PresentationLocalEmailDraft> localDrafts) {
6566
popBack();
6667

67-
final listComposerArguments = localDrafts
68+
69+
final listLocalEmailDraftSortByIndex = localDrafts
70+
..sort((a, b) => (a.composerIndex ?? 0).compareTo(b.composerIndex ?? 0));
71+
72+
final listComposerArguments = listLocalEmailDraftSortByIndex
6873
.map(ComposerArguments.fromLocalEmailDraft)
6974
.toList();
7075

lib/features/mailbox_dashboard/presentation/widgets/local_email_draft/local_email_draft_list_dialog_builder.dart

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -279,13 +279,17 @@ class _LocalEmailDraftListDialogBuilderState
279279
);
280280
}
281281

282-
Future<void> _removeLocalEmailDraft(BuildContext context, String draftLocalId) async {
282+
Future<void> _removeLocalEmailDraft(
283+
BuildContext context,
284+
String draftLocalId,
285+
{bool showToast = true}
286+
) async {
283287
_listLocalEmailDraftsNotifier.value = List.from(_listLocalEmailDraftsNotifier.value)
284288
..removeWhere((draftLocal) => draftLocal.id == draftLocalId);
285289

286290
await _removeLocalEmailDraftInteractor?.execute(draftLocalId);
287291

288-
if (context.mounted) {
292+
if (showToast && context.mounted) {
289293
_appToast.showToastSuccessMessage(
290294
context,
291295
AppLocalizations.of(context).deleteLocalDraftSuccessfully,
@@ -323,7 +327,7 @@ class _LocalEmailDraftListDialogBuilderState
323327
leadingSVGIconColor: Colors.white,
324328
);
325329

326-
_removeLocalEmailDraft(context, draftLocal.id);
330+
_removeLocalEmailDraft(context, draftLocal.id, showToast: false);
327331
} else if (resultState is SaveEmailAsDraftsFailure) {
328332
final errorMessage = getMessageFailure(
329333
appLocalizations: AppLocalizations.of(context),

0 commit comments

Comments
 (0)