From f1cf98921f5606af905d5af187d58db49f19c0ab Mon Sep 17 00:00:00 2001 From: John Livingston Date: Fri, 7 Jun 2024 12:25:04 +0200 Subject: [PATCH] Custom channel emoticons WIP (#130): * fix reset when opening multiple chat * disable default converseJs custom icons --- conversejs/lib/converse-params.ts | 36 +++++++++-------------- conversejs/lib/plugins/livechat-emojis.ts | 14 +++------ server/lib/emojis/emojis.ts | 7 ----- 3 files changed, 18 insertions(+), 39 deletions(-) diff --git a/conversejs/lib/converse-params.ts b/conversejs/lib/converse-params.ts index eb079fa0..1170184c 100644 --- a/conversejs/lib/converse-params.ts +++ b/conversejs/lib/converse-params.ts @@ -114,28 +114,20 @@ function defaultConverseParams ( params.clear_cache_on_logout = true params.allow_user_trust_override = false - // We must enable custom emoji category, that ConverseJS disables by default. - // We put it last by default, but first if there are any custom emojis for this chat. - params.emoji_categories = Object.assign( - {}, - customEmojisUrl - ? { custom: ':converse:' } - : {}, - { - smileys: ':grinning:', - people: ':thumbsup:', - activity: ':soccer:', - travel: ':motorcycle:', - objects: ':bomb:', - nature: ':rainbow:', - food: ':hotdog:', - symbols: ':musical_note:', - flags: ':flag_ac:' - }, - !customEmojisUrl - ? { custom: ':converse:' } - : {} - ) + // We change emoji_categories to put custom first. + // We set custom to null, it will be set to another value if custom emojis are enabled. + params.emoji_categories = { + custom: null, + smileys: ':grinning:', + people: ':thumbsup:', + activity: ':soccer:', + travel: ':motorcycle:', + objects: ':bomb:', + nature: ':rainbow:', + food: ':hotdog:', + symbols: ':musical_note:', + flags: ':flag_ac:' + } return params } diff --git a/conversejs/lib/plugins/livechat-emojis.ts b/conversejs/lib/plugins/livechat-emojis.ts index f95bc8a1..b1b8ab42 100644 --- a/conversejs/lib/plugins/livechat-emojis.ts +++ b/conversejs/lib/plugins/livechat-emojis.ts @@ -33,8 +33,6 @@ export const livechatEmojisPlugin = { return json } - // We will put default emojis at the end, so keeping a copy - const defaultCustom = json.custom ?? {} // Now we must clone json, to avoid side effects when navigating between several videos. json = JSON.parse(JSON.stringify(json)) json.custom = {} @@ -61,18 +59,14 @@ export const livechatEmojisPlugin = { } } - for (const key in defaultCustom) { - if (key in json.custom) { - // Was overriden by the backend, skipping. - continue - } - json.custom[key] = defaultCustom[key] - } - // And if there was a default definition, using it for the custom cat icon. + // Else we fallback to the first. + // If none... just keep custom to null! + defaultDef ??= customs[0] if (defaultDef) { const cat = _converse.api.settings.get('emoji_categories') cat.custom = defaultDef.sn + _converse.api.settings.set('emoji_categories', cat) } return json }) diff --git a/server/lib/emojis/emojis.ts b/server/lib/emojis/emojis.ts index 09455a10..cfb1760b 100644 --- a/server/lib/emojis/emojis.ts +++ b/server/lib/emojis/emojis.ts @@ -311,13 +311,6 @@ export class Emojis { customEmojis.push(sanitized) } - // For now, the frontend does not implement isCategoryEmoji. - // if there is no isCategoryEmoji, we will take the first value. - // TODO: remove this when the frontend will be able to set this. - if (!categoryEmojiFound && customEmojis.length) { - customEmojis[0].isCategoryEmoji = true - } - const result: ChannelEmojis = { customEmojis: customEmojis }