summaryrefslogtreecommitdiffstats
path: root/models/users.js
diff options
context:
space:
mode:
authorJonathan Baird <jonathan@smithbox.com>2020-03-27 11:35:03 -0600
committerJonathan Baird <jonathan@smithbox.com>2020-03-27 11:35:03 -0600
commit9819c9f801128d07374b0703b482bdb83a672297 (patch)
treea132421f72031a26b346a96fd9a4615b2bca70c9 /models/users.js
parent29d62440a5cf82b01de8183a384c6d7811abad81 (diff)
downloadwekan-9819c9f801128d07374b0703b482bdb83a672297.tar.gz
wekan-9819c9f801128d07374b0703b482bdb83a672297.tar.bz2
wekan-9819c9f801128d07374b0703b482bdb83a672297.zip
add a notification drawer like trello
Diffstat (limited to 'models/users.js')
-rw-r--r--models/users.js33
1 files changed, 30 insertions, 3 deletions
diff --git a/models/users.js b/models/users.js
index d56f14ff..20581e65 100644
--- a/models/users.js
+++ b/models/users.js
@@ -165,7 +165,20 @@ Users.attachSchema(
/**
* enabled notifications for the user
*/
- type: [String],
+ type: [Object],
+ optional: true,
+ },
+ 'profile.notifications.$.activity': {
+ /**
+ * The id of the activity this notification references
+ */
+ type: String,
+ },
+ 'profile.notifications.$.read': {
+ /**
+ * the date on which this notification was read
+ */
+ type: Date,
optional: true,
},
'profile.showCardsCountAt': {
@@ -429,6 +442,20 @@ Users.helpers({
return _.contains(notifications, activityId);
},
+ notifications() {
+ const { notifications = [] } = this.profile || {};
+ for (const index in notifications) {
+ if (!notifications.hasOwnProperty(index)) continue;
+ const notification = notifications[index];
+ // this preserves their db sort order for editing
+ notification.dbIndex = index;
+ notification.activity = Activities.findOne(notification.activity);
+ }
+ // this sorts them newest to oldest to match Trello's behavior
+ notifications.reverse();
+ return notifications;
+ },
+
hasShowDesktopDragHandles() {
const profile = this.profile || {};
return profile.showDesktopDragHandles || false;
@@ -573,7 +600,7 @@ Users.mutations({
addNotification(activityId) {
return {
$addToSet: {
- 'profile.notifications': activityId,
+ 'profile.notifications': { activity: activityId },
},
};
},
@@ -581,7 +608,7 @@ Users.mutations({
removeNotification(activityId) {
return {
$pull: {
- 'profile.notifications': activityId,
+ 'profile.notifications': { activity: activityId },
},
};
},