From 3c7cd9a6c4dc30afa737320d8aefab97ca3d5be3 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Fri, 12 Feb 2021 10:11:00 -0500 Subject: [PATCH] feat: newsletter opt-in/out in UCP, closes #21 --- src/controllers/accounts/settings.js | 2 ++ src/user/notifications.js | 11 ++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/controllers/accounts/settings.js b/src/controllers/accounts/settings.js index 8d561bc976..de9bfffed1 100644 --- a/src/controllers/accounts/settings.js +++ b/src/controllers/accounts/settings.js @@ -33,11 +33,13 @@ settingsController.get = async function (req, res, next) { userData.acpLanguages = _.cloneDeep(languagesData); } + console.log('dorp'); const data = await plugins.hooks.fire('filter:user.customSettings', { settings: settings, customSettings: [], uid: req.uid, }); + console.log(data.customSettings); const [notificationSettings, routes] = await Promise.all([ getNotificationSettings(userData), diff --git a/src/user/notifications.js b/src/user/notifications.js index ad9175cab0..a6116c3cb1 100644 --- a/src/user/notifications.js +++ b/src/user/notifications.js @@ -24,10 +24,12 @@ UserNotifications.get = async function (uid) { if (unread.length < 30) { read = await getNotificationsFromSet(`uid:${uid}:notifications:read`, uid, 0, 29 - unread.length); } - return { + + return await plugins.hooks.fire('filter:user.notifications.get', { + uid, read: read.filter(Boolean), unread: unread, - }; + }); }; async function filterNotifications(nids, filter) { @@ -133,7 +135,7 @@ UserNotifications.getUnreadCount = async function (uid) { const mergeIds = notifData.map(n => n.mergeId); // Collapse any notifications with identical mergeIds - return mergeIds.reduce((count, mergeId, idx, arr) => { + let count = mergeIds.reduce((count, mergeId, idx, arr) => { // A missing (null) mergeId means that notification is counted separately. if (mergeId === null || idx === arr.indexOf(mergeId)) { count += 1; @@ -141,6 +143,9 @@ UserNotifications.getUnreadCount = async function (uid) { return count; }, 0); + + ({ count } = await plugins.hooks.fire('filter:user.notifications.getCount', { uid, count })); + return count; }; UserNotifications.getUnreadByField = async function (uid, field, values) {