Skip to content

Commit 08fea44

Browse files
committed
TF-1715 Mark as star when drag n drop or move email to Favorite folder
1 parent 1ed8812 commit 08fea44

File tree

2 files changed

+56
-23
lines changed

2 files changed

+56
-23
lines changed

lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart

Lines changed: 54 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1347,32 +1347,67 @@ class MailboxDashBoardController extends ReloadableController
13471347
.where((email) => email.id != null)
13481348
.map((e) => MapEntry(e.id!, e.hasRead))
13491349
);
1350-
if (searchController.isSearchEmailRunning ||
1351-
selectedMailbox.value?.isFavorite == true) {
1352-
final Map<MailboxId,List<EmailId>> mapListEmailSelectedByMailBoxId = {};
1353-
for (var element in listEmails) {
1354-
final mailbox = element.findMailboxContain(mapMailboxById);
1355-
if (mailbox != null && element.id != null) {
1356-
if (mapListEmailSelectedByMailBoxId.containsKey(mailbox.id)) {
1357-
mapListEmailSelectedByMailBoxId[mailbox.id]?.add(element.id!);
1358-
} else {
1359-
mapListEmailSelectedByMailBoxId.addAll({mailbox.id: [element.id!]});
1350+
1351+
if (destinationMailbox.isFavorite) {
1352+
_handleDragSelectedMultipleEmailToFavoriteFolder(listEmails);
1353+
} else {
1354+
if (searchController.isSearchEmailRunning ||
1355+
selectedMailbox.value?.isFavorite == true) {
1356+
final Map<MailboxId,List<EmailId>> mapListEmailSelectedByMailBoxId = {};
1357+
for (var element in listEmails) {
1358+
final mailbox = element.findMailboxContain(mapMailboxById);
1359+
if (mailbox != null && element.id != null) {
1360+
if (mapListEmailSelectedByMailBoxId.containsKey(mailbox.id)) {
1361+
mapListEmailSelectedByMailBoxId[mailbox.id]?.add(element.id!);
1362+
} else {
1363+
mapListEmailSelectedByMailBoxId.addAll({mailbox.id: [element.id!]});
1364+
}
13601365
}
13611366
}
1367+
_handleDragSelectedMultipleEmailToMailboxAction(
1368+
mapListEmailSelectedByMailBoxId,
1369+
destinationMailbox,
1370+
emailIdsWithReadStatus,
1371+
);
1372+
} else if (selectedMailbox.value != null) {
1373+
_handleDragSelectedMultipleEmailToMailboxAction(
1374+
{selectedMailbox.value!.id: listEmails.listEmailIds},
1375+
destinationMailbox,
1376+
emailIdsWithReadStatus,
1377+
);
13621378
}
1363-
_handleDragSelectedMultipleEmailToMailboxAction(
1364-
mapListEmailSelectedByMailBoxId,
1365-
destinationMailbox,
1366-
emailIdsWithReadStatus,
1379+
}
1380+
}
1381+
1382+
void _handleDragSelectedMultipleEmailToFavoriteFolder(
1383+
List<PresentationEmail> listPresentationEmail,
1384+
) async {
1385+
if (accountId.value != null && sessionCurrent != null) {
1386+
final listEmailIds = listPresentationEmail
1387+
.where((email) => !email.hasStarred)
1388+
.toList()
1389+
.listEmailIds;
1390+
1391+
consumeState(
1392+
_markAsStarMultipleEmailInteractor.execute(
1393+
sessionCurrent!,
1394+
accountId.value!,
1395+
listEmailIds,
1396+
MarkStarAction.markStar,
1397+
),
13671398
);
1368-
} else if (selectedMailbox.value != null) {
1369-
_handleDragSelectedMultipleEmailToMailboxAction(
1370-
{selectedMailbox.value!.id: listEmails.listEmailIds},
1371-
destinationMailbox,
1372-
emailIdsWithReadStatus,
1399+
} else {
1400+
consumeState(
1401+
Stream.value(Left(
1402+
MarkAsStarMultipleEmailFailure(
1403+
MarkStarAction.markStar,
1404+
NotFoundSessionException(),
1405+
),
1406+
)),
13731407
);
13741408
}
13751409

1410+
dispatchAction(CancelSelectionAllEmailAction());
13761411
}
13771412

13781413
void _handleDragSelectedMultipleEmailToMailboxAction(

lib/features/thread/presentation/thread_controller.dart

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ class ThreadController extends BaseController with EmailActionController {
166166

167167
@override
168168
void handleSuccessViewState(Success success) {
169+
super.handleSuccessViewState(success);
169170
if (success is GetAllEmailSuccess) {
170171
_getAllEmailSuccess(success);
171172
} else if (success is LoadMoreEmailsSuccess) {
@@ -192,13 +193,12 @@ class ThreadController extends BaseController with EmailActionController {
192193
_openEmailWithoutMailboxFromLocationBar(success.email);
193194
}
194195
}
195-
} else {
196-
super.handleSuccessViewState(success);
197196
}
198197
}
199198

200199
@override
201200
void handleFailureViewState(Failure failure) {
201+
super.handleFailureViewState(failure);
202202
if (failure is SearchEmailFailure) {
203203
mailboxDashBoardController.updateRefreshAllEmailState(Left(RefreshAllEmailFailure()));
204204
canSearchMore = false;
@@ -216,8 +216,6 @@ class ThreadController extends BaseController with EmailActionController {
216216
} else if (failure is GetAllEmailFailure || failure is CleanAndGetAllEmailFailure) {
217217
mailboxDashBoardController.updateRefreshAllEmailState(Left(RefreshAllEmailFailure()));
218218
canLoadMore = true;
219-
} else {
220-
super.handleFailureViewState(failure);
221219
}
222220
}
223221

0 commit comments

Comments
 (0)