From ef11508b38b36f4a2c79d861ae59566175f28fd8 Mon Sep 17 00:00:00 2001 From: Halla Moore Date: Wed, 29 Jun 2016 17:23:18 -0700 Subject: [PATCH] Added MarkThreadAsUnread task --- packages/nylas-api/routes/threads.js | 7 +++++++ packages/nylas-sync/syncback-task-factory.js | 2 ++ .../mark-thread-as-unread.imap.js | 19 +++++++++++++++++++ 3 files changed, 28 insertions(+) create mode 100644 packages/nylas-sync/syncback_tasks/mark-thread-as-unread.imap.js diff --git a/packages/nylas-api/routes/threads.js b/packages/nylas-api/routes/threads.js index a9ab9d180..bada66b8a 100644 --- a/packages/nylas-api/routes/threads.js +++ b/packages/nylas-api/routes/threads.js @@ -184,6 +184,13 @@ module.exports = (server) => { threadId: request.params.id, }, }) + } else if (payload.unread === true) { + createSyncbackRequest(request, reply, { + type: "MarkThreadAsUnread", + props: { + threadId: request.params.id, + }, + }) } }, }); diff --git a/packages/nylas-sync/syncback-task-factory.js b/packages/nylas-sync/syncback-task-factory.js index aa33abc5b..d99599d43 100644 --- a/packages/nylas-sync/syncback-task-factory.js +++ b/packages/nylas-sync/syncback-task-factory.js @@ -10,6 +10,8 @@ class SyncbackTaskFactory { Task = require('./syncback_tasks/move-to-folder.imap'); break; case "MarkThreadAsRead": Task = require('./syncback_tasks/mark-thread-as-read.imap'); break; + case "MarkThreadAsUnread": + Task = require('./syncback_tasks/mark-thread-as-unread.imap'); break; default: throw new Error(`Invalid Task Type: ${syncbackRequest.type}`) } diff --git a/packages/nylas-sync/syncback_tasks/mark-thread-as-unread.imap.js b/packages/nylas-sync/syncback_tasks/mark-thread-as-unread.imap.js new file mode 100644 index 000000000..5c661392e --- /dev/null +++ b/packages/nylas-sync/syncback_tasks/mark-thread-as-unread.imap.js @@ -0,0 +1,19 @@ +const SyncbackTask = require('./syncback-task') +const TaskHelpers = require('./task-helpers') + +class MarkThreadAsUnread extends SyncbackTask { + description() { + return `MarkThreadAsUnread`; + } + + run(db, imap) { + const threadId = this.syncbackRequestObject().props.threadId + + const eachMsg = ({message, box}) => { + return box.delFlags(message.categoryUID, 'SEEN') + } + + return TaskHelpers.forEachMessageInThread({threadId, db, imap, callback: eachMsg}) + } +} +module.exports = MarkThreadAsUnread;