From 621f8b5c2bda959c2b6a43edc3d4eb8a87b5365f Mon Sep 17 00:00:00 2001 From: Halla Moore Date: Mon, 27 Jun 2016 10:15:05 -0700 Subject: [PATCH] Add starred query to threads route --- packages/nylas-api/routes/threads.js | 33 +++++++++++-------- packages/nylas-core/models/account/thread.js | 1 + .../processors/threading.js | 8 +++-- 3 files changed, 27 insertions(+), 15 deletions(-) diff --git a/packages/nylas-api/routes/threads.js b/packages/nylas-api/routes/threads.js index 159a5353a..e31097ec6 100644 --- a/packages/nylas-api/routes/threads.js +++ b/packages/nylas-api/routes/threads.js @@ -11,7 +11,8 @@ module.exports = (server) => { tags: ['threads'], validate: { query: { - unread: Joi.boolean().allow(''), + unread: Joi.boolean(), + starred: Joi.boolean(), }, }, response: { @@ -23,19 +24,25 @@ module.exports = (server) => { handler: (request, reply) => { request.getAccountDatabase().then((db) => { const {Thread} = db; - // the unread value will be '' if the url was just '/threads?unread' - if (request.query.unread || request.query.unread === '') { - Thread.findAll({ - where: {unreadCount: {gt: 0}}, - limit: 50, - }).then((threads) => { - reply(Serialization.jsonStringify(threads)); - }) - } else { - Thread.findAll({limit: 50}).then((threads) => { - reply(Serialization.jsonStringify(threads)); - }) + const where = {}; + + if (request.query.unread) { + where.unreadCount = {gt: 0}; + } else if (request.query.unread !== undefined) { + where.unreadCount = 0; } + if (request.query.starred) { + where.starredCount = {gt: 0}; + } else if (request.query.starred !== undefined) { + where.starredCount = 0; + } + + Thread.findAll({ + where: where, + limit: 50, + }).then((threads) => { + reply(Serialization.jsonStringify(threads)); + }) }) }, }); diff --git a/packages/nylas-core/models/account/thread.js b/packages/nylas-core/models/account/thread.js index 4851d32fb..2789347ca 100644 --- a/packages/nylas-core/models/account/thread.js +++ b/packages/nylas-core/models/account/thread.js @@ -4,6 +4,7 @@ module.exports = (sequelize, Sequelize) => { subject: Sequelize.STRING, cleanedSubject: Sequelize.STRING, unreadCount: Sequelize.INTEGER, + starredCount: Sequelize.INTEGER, }, { classMethods: { associate: ({Message}) => { diff --git a/packages/nylas-message-processor/processors/threading.js b/packages/nylas-message-processor/processors/threading.js index e139207f7..bb81f2f22 100644 --- a/packages/nylas-message-processor/processors/threading.js +++ b/packages/nylas-message-processor/processors/threading.js @@ -128,6 +128,7 @@ function matchThread({db, accountId, message}) { subject: message.subject, cleanedSubject: cleanSubject(message.subject), unreadCount: 0, + starredCount: 0, }) }) }) @@ -142,6 +143,7 @@ function matchThread({db, accountId, message}) { subject: message.subject, cleanedSubject: cleanSubject(message.subject), unreadCount: 0, + starredCount: 0, }) }) } @@ -157,11 +159,13 @@ function addMessageToThread({db, accountId, message}) { } function updateThreadProperties({thread, message}) { - // Update the thread's unread count if (message.unread) { thread.unreadCount++; - thread.save(); } + if (message.starred) { + thread.starredCount++; + } + thread.save(); }