diff --git a/client/components/lists/listBody.js b/client/components/lists/listBody.js index 9b54f901e..3a368c344 100644 --- a/client/components/lists/listBody.js +++ b/client/components/lists/listBody.js @@ -336,7 +336,7 @@ BlazeComponent.extendComponent({ [ // User mentions { - match: /\B@([\w.]*)$/, + match: /\B@([\w.-]*)$/, search(term, callback) { const currentBoard = Boards.findOne(Session.get('currentBoard')); callback( @@ -347,6 +347,9 @@ BlazeComponent.extendComponent({ ); }, template(user) { + if (user.profile && user.profile.fullname) { + return (user.username + " (" + user.profile.fullname + ")"); + } return user.username; }, replace(user) { diff --git a/client/components/main/editor.js b/client/components/main/editor.js index fec040a23..6c81fe32d 100644 --- a/client/components/main/editor.js +++ b/client/components/main/editor.js @@ -11,7 +11,7 @@ BlazeComponent.extendComponent({ const mentions = [ // User mentions { - match: /\B@([\w.]*)$/, + match: /\B@([\w.-]*)$/, search(term, callback) { const currentBoard = Boards.findOne(Session.get('currentBoard')); callback( @@ -21,17 +21,23 @@ BlazeComponent.extendComponent({ .map(member => { const user = Users.findOne(member.userId); const username = user.username; - const fullName = user.profile && user.profile !== undefined ? user.profile.fullname : ""; - return username.includes(term) || fullName.includes(term) ? fullName + "(" + username + ")" : null; + const fullName = user.profile && user.profile !== undefined && user.profile.fullname ? user.profile.fullname : ""; + return username.includes(term) || fullName.includes(term) ? user : null; }) - .filter(Boolean), [...specialHandleNames]) + .filter(Boolean), [...specialHandles]) ); }, - template(value) { - return value; + template(user) { + if (user.profile && user.profile.fullname) { + return (user.profile.fullname + " (" + user.username + ")"); + } + return user.username; }, - replace(username) { - return `@${username} `; + replace(user) { + if (user.profile && user.profile.fullname) { + return `@${user.username} (${user.profile.fullname}) `; + } + return `@${user.username} `; }, index: 1, }, @@ -355,7 +361,7 @@ Blaze.Template.registerHelper( } return member; }), [...specialHandles]); - const mentionRegex = /\B@([\w.]*)/gi; + const mentionRegex = /\B@([\w.-]*)/gi; let currentMention; while ((currentMention = mentionRegex.exec(content)) !== null) { diff --git a/models/activities.js b/models/activities.js index 9f913a554..c59488a87 100644 --- a/models/activities.js +++ b/models/activities.js @@ -202,7 +202,7 @@ if (Meteor.isServer) { } return member; }); - const mentionRegex = /\B@(?:(?:"([\w.\s]*)")|([\w.]+))/gi; // including space in username + const mentionRegex = /\B@(?:(?:"([\w.\s-]*)")|([\w.-]+))/gi; // including space in username let currentMention; while ((currentMention = mentionRegex.exec(comment)) !== null) { /*eslint no-unused-vars: ["error", { "varsIgnorePattern": "[iI]gnored" }]*/