mirror of
https://github.com/wekan/wekan.git
synced 2025-12-17 07:50:12 +01:00
Add Features: notifications will be sent when user is being @, or activitytype matches env var BIGENVENTS
This commit is contained in:
parent
f2a0ae0a2c
commit
5fd86d29ba
2 changed files with 35 additions and 1 deletions
|
|
@ -721,5 +721,6 @@
|
||||||
"act-withDue": "__card__ due reminders [__board__]",
|
"act-withDue": "__card__ due reminders [__board__]",
|
||||||
"act-almostdue": "was reminding the current due (__timeValue__) of __card__ is approaching",
|
"act-almostdue": "was reminding the current due (__timeValue__) of __card__ is approaching",
|
||||||
"act-pastdue": "was reminding the current due (__timeValue__) of __card__ is past",
|
"act-pastdue": "was reminding the current due (__timeValue__) of __card__ is past",
|
||||||
"act-duenow": "was reminding the current due (__timeValue__) of __card__ is now"
|
"act-duenow": "was reminding the current due (__timeValue__) of __card__ is now",
|
||||||
|
"act-atUserComment": "You were mentioned in [__board__] __card__"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -171,6 +171,26 @@ if (Meteor.isServer) {
|
||||||
if (activity.commentId) {
|
if (activity.commentId) {
|
||||||
const comment = activity.comment();
|
const comment = activity.comment();
|
||||||
params.comment = comment.text;
|
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;
|
params.commentId = comment._id;
|
||||||
}
|
}
|
||||||
if (activity.attachmentId) {
|
if (activity.attachmentId) {
|
||||||
|
|
@ -212,6 +232,19 @@ if (Meteor.isServer) {
|
||||||
if (value) params[key] = value;
|
if (value) params[key] = value;
|
||||||
});
|
});
|
||||||
if (board) {
|
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(
|
const watchingUsers = _.pluck(
|
||||||
_.where(board.watchers, { level: 'watching' }),
|
_.where(board.watchers, { level: 'watching' }),
|
||||||
'userId',
|
'userId',
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue