nodebb-plugin-mentions 4.8.14 → 4.8.16

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 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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodebb-plugin-mentions",
3
- "version": "4.8.14",
3
+ "version": "4.8.16",
4
4
  "description": "NodeBB Plugin that allows users to mention other users by prepending an '@' sign to their username",
5
5
  "main": "library.js",
6
6
  "repository": {
@@ -7,7 +7,6 @@ $(document).ready(function () {
7
7
  const categorySlugMap = new Map();
8
8
  let localUserList = [];
9
9
  let helpers;
10
- let groupTranslation = '';
11
10
 
12
11
  function showAlert(type, message) {
13
12
  require(['alerts'], function (alerts) {
@@ -26,14 +25,6 @@ $(document).ready(function () {
26
25
  loadCategoryList();
27
26
  }
28
27
 
29
- if (!groupTranslation) {
30
- require(['translator'], function (translator) {
31
- translator.translate('[[groups:group]]', function (translation) {
32
- groupTranslation = translation;
33
- });
34
- });
35
- }
36
-
37
28
  let slugify;
38
29
  const strategy = {
39
30
  match: /\B@([^\s\n]*)?$/,
@@ -131,8 +122,12 @@ $(document).ready(function () {
131
122
  return `${avatar} ${entry.name}${!utils.isNumber(entry.cid) ? ` (${entry.slug})` : ''}`;
132
123
  }
133
124
  case entry.isGroup: {
134
- const icon = '<i class="fa-fw fa-solid fa-users text-secondary" style="width: 24px;"></i>';
135
- return `${icon} ${entry.name} (${groupTranslation})`;
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>`;
136
131
  }
137
132
 
138
133
  default:
@@ -173,14 +168,13 @@ $(document).ready(function () {
173
168
  });
174
169
  }
175
170
 
176
- function loadGroupList() {
177
- socket.emit('plugins.mentions.listGroups', async function (err, groupNames) {
178
- if (err) {
179
- return showAlert('error', err.message);
180
- }
181
- const s = await app.require('slugify');
182
- groupList = groupNames.map(name => ({ name, slug: s(name), isGroup: true }));
183
- });
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
+ const key = translator.compile('groups:x-members', helpers.formattedNumber(group.memberCount));
176
+ group.memberCountText = await translator.translate(key);
177
+ }));
184
178
  }
185
179
 
186
180
  function loadCategoryList() {