nodebb-plugin-mentions 4.8.13 → 4.8.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/library.js +4 -2
- package/package.json +1 -1
- package/static/autofill.js +20 -10
package/library.js
CHANGED
|
@@ -607,8 +607,10 @@ SocketPlugins.mentions.listGroups = async function () {
|
|
|
607
607
|
const noMentionGroups = await getNoMentionGroups();
|
|
608
608
|
const filteredGroups = groups.filter(g => g && !noMentionGroups.includes(g))
|
|
609
609
|
.map(g => validator.escape(String(g)));
|
|
610
|
-
|
|
611
|
-
return filteredGroups
|
|
610
|
+
const fields = ['name', 'slug', 'icon', 'memberCount', 'labelColor', 'textColor'];
|
|
611
|
+
return (await Groups.getGroupsFields(filteredGroups, fields))
|
|
612
|
+
.filter(g => g && g.name && g.slug)
|
|
613
|
+
.map(g => ({ ..._.pick(g, fields), isGroup: true }));
|
|
612
614
|
};
|
|
613
615
|
|
|
614
616
|
SocketPlugins.mentions.userSearch = async (socket, data) => {
|
package/package.json
CHANGED
package/static/autofill.js
CHANGED
|
@@ -24,6 +24,7 @@ $(document).ready(function () {
|
|
|
24
24
|
if (!categoryList) {
|
|
25
25
|
loadCategoryList();
|
|
26
26
|
}
|
|
27
|
+
|
|
27
28
|
let slugify;
|
|
28
29
|
const strategy = {
|
|
29
30
|
match: /\B@([^\s\n]*)?$/,
|
|
@@ -62,8 +63,7 @@ $(document).ready(function () {
|
|
|
62
63
|
const groupMentions = groupList.filter(
|
|
63
64
|
group => group.name.toLocaleLowerCase().startsWith(termLowerCase) ||
|
|
64
65
|
group.slug.startsWith(termLowerCase)
|
|
65
|
-
).sort((a, b) =>a.name.toLocaleLowerCase() > b.name.toLocaleLowerCase() ? 1 : -1)
|
|
66
|
-
.map(group => group.name);
|
|
66
|
+
).sort((a, b) => a.name.toLocaleLowerCase() > b.name.toLocaleLowerCase() ? 1 : -1);
|
|
67
67
|
|
|
68
68
|
// Add group mentions at the bottom of dropdown
|
|
69
69
|
callback([...users, ...groupMentions]);
|
|
@@ -77,6 +77,8 @@ $(document).ready(function () {
|
|
|
77
77
|
return `@${mention.userslug} `;
|
|
78
78
|
} else if (mention.cid) {
|
|
79
79
|
return `@${utils.isNumber(mention.cid) ? mention.handle : mention.slug} `;
|
|
80
|
+
} else if (mention.isGroup) {
|
|
81
|
+
return `@${slugify(mention.name, true)} `;
|
|
80
82
|
} else if (mention) {
|
|
81
83
|
return `@${slugify(mention, true)} `;
|
|
82
84
|
}
|
|
@@ -119,6 +121,14 @@ $(document).ready(function () {
|
|
|
119
121
|
const avatar = helpers.buildCategoryIcon(entry, '24px', 'rounded-circle');
|
|
120
122
|
return `${avatar} ${entry.name}${!utils.isNumber(entry.cid) ? ` (${entry.slug})` : ''}`;
|
|
121
123
|
}
|
|
124
|
+
case entry.isGroup: {
|
|
125
|
+
const icon = helpers.buildCategoryIcon({
|
|
126
|
+
icon: entry.icon || 'fa-users',
|
|
127
|
+
bgColor: entry.labelColor,
|
|
128
|
+
color: entry.textColor,
|
|
129
|
+
}, '24px', 'rounded-circle');
|
|
130
|
+
return `${icon} ${entry.name} <span class="text-sm text-secondary">(${entry.memberCountText})</span>`;
|
|
131
|
+
}
|
|
122
132
|
|
|
123
133
|
default:
|
|
124
134
|
return entry.hasOwnProperty('name') ? entry.name : entry;
|
|
@@ -158,14 +168,14 @@ $(document).ready(function () {
|
|
|
158
168
|
});
|
|
159
169
|
}
|
|
160
170
|
|
|
161
|
-
function loadGroupList() {
|
|
162
|
-
socket.emit('plugins.mentions.listGroups'
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
const
|
|
167
|
-
|
|
168
|
-
});
|
|
171
|
+
async function loadGroupList() {
|
|
172
|
+
groupList = await socket.emit('plugins.mentions.listGroups');
|
|
173
|
+
const [translator, helpers] = await app.require(['translator', 'helpers']);
|
|
174
|
+
await Promise.all(groupList.map(async (group) => {
|
|
175
|
+
group.memberCount = 12312313;
|
|
176
|
+
const key = translator.compile('groups:x-members', helpers.formattedNumber(group.memberCount));
|
|
177
|
+
group.memberCountText = await translator.translate(key);
|
|
178
|
+
}));
|
|
169
179
|
}
|
|
170
180
|
|
|
171
181
|
function loadCategoryList() {
|