diff options
author | Lauri Ojansivu <x@xet7.org> | 2019-07-11 22:47:48 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-11 22:47:48 +0300 |
commit | b39bbfc97a6c1a5c3995ca7f8b82a47aa19bc9b3 (patch) | |
tree | d85b4b3dad898d2e1bcc1deebdb6fdea128bf604 /models/activities.js | |
parent | f85080ebd36a1cbefe2d07fbfd3fd4809218ef01 (diff) | |
parent | 5fd86d29ba957fb2f00d5c83a7dd1a36a79303d8 (diff) | |
download | wekan-b39bbfc97a6c1a5c3995ca7f8b82a47aa19bc9b3.tar.gz wekan-b39bbfc97a6c1a5c3995ca7f8b82a47aa19bc9b3.tar.bz2 wekan-b39bbfc97a6c1a5c3995ca7f8b82a47aa19bc9b3.zip |
Merge pull request #2541 from whowillcare/master
Added new features: user will be notified when been @ and other feature
Diffstat (limited to 'models/activities.js')
-rw-r--r-- | models/activities.js | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/models/activities.js b/models/activities.js index feda36e5..168effd0 100644 --- a/models/activities.js +++ b/models/activities.js @@ -171,6 +171,26 @@ if (Meteor.isServer) { if (activity.commentId) { const comment = activity.comment(); params.comment = comment.text; + if (board) { + const atUser = /(?:^|\s+)@(\S+)(?:\s+|$)/g; + const comment = params.comment; + if (comment.match(atUser)) { + const commenter = params.user; + while (atUser.exec(comment)) { + const username = RegExp.$1; + if (commenter === username) { + // it's person at himself, ignore it? + continue; + } + const user = Users.findOne(username) || Users.findOne({ username }); + const uid = user && user._id; + if (board.hasMember(uid)) { + title = 'act-atUserComment'; + watchers = _.union(watchers, [uid]); + } + } + } + } params.commentId = comment._id; } if (activity.attachmentId) { @@ -212,6 +232,19 @@ if (Meteor.isServer) { if (value) params[key] = value; }); if (board) { + const BIGEVENTS = process.env.BIGEVENTS_PATTERN || 'due'; // if environment BIGEVENTS_PATTERN is set or default, any activityType matching it is important + try { + const atype = activity.activityType; + if (new RegExp(BIGEVENTS).exec(atype)) { + watchers = _.union( + watchers, + board.activeMembers().map(member => member.userId), + ); // notify all active members for important events system defined or default to all activity related to due date + } + } catch (e) { + // passed env var BIGEVENTS_PATTERN is not a valid regex + } + const watchingUsers = _.pluck( _.where(board.watchers, { level: 'watching' }), 'userId', |