js/restricting-issue-visibility/add-mentioned-users-to-visible-to-list.js (39 lines of code) (raw):
var entities = require('@jetbrains/youtrack-scripting-api/entities');
var workflow = require('@jetbrains/youtrack-scripting-api/workflow');
var loginRegex = /@(([A-Z0-9._@$+\-=|])*)/gi;
exports.rule = entities.Issue.onChange({
title: 'Automatically add users to the "visible to" list',
guard: function(ctx) {
var issue = ctx.issue;
return issue.comments.added.isNotEmpty() &&
(issue.permittedGroups.isNotEmpty() || issue.permittedUsers.isNotEmpty());
},
action: function(ctx) {
var issue = ctx.issue;
var text = '';
issue.comments.added.forEach(function (comment) {
text += comment.text + '\n';
});
var message = '';
var matches = text.match(loginRegex);
if (matches) {
matches.forEach(function(m) {
var login = m.slice(1);
if (login) {
var user = entities.User.findByLogin(login);
if (user) {
issue.permittedUsers.add(user);
message += 'User "' + user.fullName +
'" is added to issue readers. ';
} else {
message += 'User with login "' + login + '" not found. ';
}
}
});
}
if (message) {
workflow.message(message);
}
},
requirements: {}
});