Fixed Add member and @mentions.

Thanks to xet7 !

Fixes #6076,
fixes #6077
This commit is contained in:
Lauri Ojansivu 2026-01-20 02:28:32 +02:00
parent 603a65ef17
commit ad511bd137
14 changed files with 413 additions and 149 deletions

View file

@ -909,10 +909,11 @@ template(name="cardMembersPopup")
each members
li.item(class="{{#if isCardMember}}active{{/if}}")
a.name.js-select-member(href="#")
+userAvatar(userId=user._id)
+userAvatar(userId=userId)
span.full-name
= user.profile.fullname
| (<span class="username">{{ user.username }}</span>)
= userData.profile.fullname
if userData.username
| (#{userData.username})
if isCardMember
| ✅
@ -923,10 +924,11 @@ template(name="cardAssigneesPopup")
each members
li.item(class="{{#if isCardAssignee}}active{{/if}}")
a.name.js-select-assignee(href="#")
+userAvatar(userId=user._id)
+userAvatar(userId=userId)
span.full-name
= user.profile.fullname
| (<span class="username">{{ user.username }}</span>)
= userData.profile.fullname
if userData.username
| (#{userData.username})
if isCardAssignee
| ✅
if currentUser.isWorker
@ -936,7 +938,8 @@ template(name="cardAssigneesPopup")
+userAvatar(userId=currentUser._id)
span.full-name
= currentUser.profile.fullname
| (<span class="username">{{ currentUser.username }}</span>)
if currentUser.username
| (#{currentUser.username})
if currentUser.isCardAssignee
| ✅

View file

@ -928,6 +928,12 @@ Template.cardMembersPopup.onCreated(function () {
});
Template.cardMembersPopup.events({
'click .js-select-member'(event) {
const card = Utils.getCurrentCard();
const memberId = this.userId;
card.toggleMember(memberId);
event.preventDefault();
},
'keyup .card-members-filter'(event) {
const members = filterMembers(event.target.value);
Template.instance().members.set(members);
@ -935,8 +941,23 @@ Template.cardMembersPopup.events({
});
Template.cardMembersPopup.helpers({
isCardMember() {
const card = Template.parentData();
const cardMembers = card.getMembers();
return _.contains(cardMembers, this.userId);
},
members() {
return _.sortBy(Template.instance().members.get(),'fullname');
const members = Template.instance().members.get();
const uniqueMembers = _.uniq(members, 'userId');
return _.sortBy(uniqueMembers, member => {
const user = ReactiveCache.getUser(member.userId);
return user ? user.profile.fullname : '';
});
},
userData() {
return ReactiveCache.getUser(this.userId);
},
});
@ -1910,10 +1931,15 @@ Template.cardAssigneesPopup.helpers({
},
members() {
return _.sortBy(Template.instance().members.get(),'fullname');
const members = Template.instance().members.get();
const uniqueMembers = _.uniq(members, 'userId');
return _.sortBy(uniqueMembers, member => {
const user = ReactiveCache.getUser(member.userId);
return user ? user.profile.fullname : '';
});
},
user() {
userData() {
return ReactiveCache.getUser(this.userId);
},
});