From b77d992a38a56469df5caca92771d6ce2f1a99e4 Mon Sep 17 00:00:00 2001
From: Xavi Ferrer <xavi@delape.net>
Date: Mon, 12 Oct 2020 19:49:33 +0200
Subject: [PATCH] fix MUC badges

---
 src/conversejs/converse.min.js | 2 +-
 src/solid-xmpp-chat.js         | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/conversejs/converse.min.js b/src/conversejs/converse.min.js
index fa87789..fa1d2a0 100644
--- a/src/conversejs/converse.min.js
+++ b/src/conversejs/converse.min.js
@@ -424,7 +424,7 @@ const _h=new WeakMap,bh=Ea((...e)=>t=>{let n=_h.get(t);void 0===n&&(n={lastRende
  * subject to an additional IP rights grant found at
  * http://polymer.github.io/PATENTS.txt
  */
-const cp=(e,t)=>{const n=e.startNode.parentNode,r=void 0===t?e.endNode:t.startNode,i=n.insertBefore(_a(),r);n.insertBefore(_a(),r);const s=new Da(e.options);return s.insertAfterNode(i),s},lp=(e,t)=>(e.setValue(t),e.commit(),e),up=(e,t,n)=>{const r=e.startNode.parentNode,i=n?n.startNode:e.endNode,s=t.endNode.nextSibling;s!==i&&ua(r,t.startNode,s,i)},dp=e=>{da(e.startNode.parentNode,e.startNode,e.endNode.nextSibling)},hp=(e,t,n)=>{const r=new Map;for(let i=t;i<=n;i++)r.set(e[i],i);return r},fp=new WeakMap,pp=new WeakMap,gp=Ea((e,t,n)=>{let r;return void 0===n?n=t:void 0!==t&&(r=t),t=>{if(!(t instanceof Da))throw new Error("repeat can only be used in text bindings");const i=fp.get(t)||[],s=pp.get(t)||[],o=[],a=[],c=[];let l,u,d=0;for(const t of e)c[d]=r?r(t,d):d,a[d]=n(t,d),d++;let h=0,f=i.length-1,p=0,g=a.length-1;for(;h<=f&&p<=g;)if(null===i[h])h++;else if(null===i[f])f--;else if(s[h]===c[p])o[p]=lp(i[h],a[p]),h++,p++;else if(s[f]===c[g])o[g]=lp(i[f],a[g]),f--,g--;else if(s[h]===c[g])o[g]=lp(i[h],a[g]),up(t,i[h],o[g+1]),h++,g--;else if(s[f]===c[p])o[p]=lp(i[f],a[p]),up(t,i[f],i[h]),f--,p++;else if(void 0===l&&(l=hp(c,p,g),u=hp(s,h,f)),l.has(s[h]))if(l.has(s[f])){const e=u.get(c[p]),n=void 0!==e?i[e]:null;if(null===n){const e=cp(t,i[h]);lp(e,a[p]),o[p]=e}else o[p]=lp(n,a[p]),up(t,n,i[h]),i[e]=null;p++}else dp(i[f]),f--;else dp(i[h]),h++;for(;p<=g;){const e=cp(t,o[g+1]);lp(e,a[p]),o[p++]=e}for(;h<=f;){const e=i[h++];null!==e&&dp(e)}fp.set(t,o),pp.set(t,c)}});function mp(){const e=bp(['<div class="empty-history-feedback form-help"><span>',"</span></div>"]);return mp=function(){return e},e}function vp(){const e=bp(["",""]);return vp=function(){return e},e}function _p(){const e=bp(["\n    <converse-chat-message\n        .chatview=","\n        .hats=","\n        .model=","\n        ?correcting=","\n        ?editable=","\n        ?has_mentions=","\n        ?is_delayed=","\n        ?is_encrypted=","\n        ?is_first_unread=","\n        ?is_me_message=","\n        ?is_only_emojis=","\n        ?is_retracted=","\n        ?is_spoiler=","\n        ?is_spoiler_visible=","\n        ?retractable=","\n        edited=","\n        error=","\n        error_text=","\n        filename=","\n        filesize=","\n        from=","\n        message_type=","\n        moderated_by=","\n        moderation_reason=","\n        msgid=","\n        occupant_affiliation=","\n        occupant_role=","\n        oob_url=","\n        pretty_type=","\n        progress=","\n        reason=","\n        received=","\n        retry_event_id=","\n        sender=","\n        spoiler_hint=","\n        subject=","\n        time=","\n        username=","></converse-chat-message>\n"]);return _p=function(){return e},e}function bp(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const yp=Ed("No message history available.");function wp(e){const t=e.collection.models,n=t.indexOf(e),r=t[n-1];if(!r||Sn()(e.get("time")).isAfter(Sn()(r.get("time")),"day")){const t=Sn()(e.get("time")).startOf("day");return i={type:"date",time:t.toISOString(),datestring:t.format("dddd MMM Do YYYY")},Ga(ap(),i.time,i.time,i.datestring)}var i}function Sp(e){if("groupchat"===e.get("type")){var t;const n=qc.settings.get("muc_hats").filter(e=>e).map(e=>e.toLowerCase());let r=[];n.includes("vcard_roles")&&(r=e.vcard?e.vcard.get("role"):null,r=r?r.split(",").filter(e=>e):[]);const i=e.occupant?[e.occupant.get("role")]:[],s=e.occupant?[e.occupant.get("affiliation")]:[],o=[...r,...i,...s].filter(e=>e).filter(e=>n.includes(e.toLowerCase())).map(e=>({title:e}));return[...n.includes("hats")&&(null===(t=e.occupant)||void 0===t?void 0:t.get("hats"))||[],...o]}return[]}function xp(e,t){return{has_mentions:"groupchat"===t.get("type")&&"them"===t.get("sender")&&e.isUserMentioned(t),hats:Sp(t),is_first_unread:e.get("first_unread_id")===t.get("id"),is_me_message:t.isMeCommand(),is_retracted:t.get("retracted")||"retracted"===t.get("moderated"),username:t.getDisplayName()}}qc.elements.define("converse-message-history",class extends uc{static get properties(){return{chatview:{type:Object},messages:{type:Array}}}render(){const e=this.messages;return e.length?Ga(vp(),gp(e,e=>e.get("id"),e=>this.renderMessage(e))):Ga(mp(),yp)}renderMessage(e){if(e.get("dangling_retraction")||e.get("is_only_key"))return"";const t=wp(e);var n;return[...t?[t]:[],(n=Object.assign(e.toJSON(),xp(this.chatview.model,e),{chatview:this.chatview,model:e}),Ga(_p(),n.chatview,n.hats,n.model,n.correcting,n.editable,n.has_mentions,n.is_delayed,!!n.is_encrypted,n.is_first_unread,n.is_me_message,n.is_only_emojis,n.is_retracted,n.is_spoiler,n.is_spoiler_visible,n.retractable,n.edited||"",n.error||"",n.error_text||"",n.filename||"",n.filesize||"",n.from,n.type||"",n.moderated_by||"",n.moderation_reason||"",n.msgid,n.model.occupant?n.model.occupant.get("affiliation"):"",n.model.occupant?n.model.occupant.get("role"):"",n.oob_url||"",n.pretty_type,n.progress||0,n.reason||"",n.received||"",n.retry_event_id||"",n.sender,n.spoiler_hint||"",n.subject||"",n.time,n.username))]}});var Ep=n(16),Ap=n.n(Ep);
+const cp=(e,t)=>{const n=e.startNode.parentNode,r=void 0===t?e.endNode:t.startNode,i=n.insertBefore(_a(),r);n.insertBefore(_a(),r);const s=new Da(e.options);return s.insertAfterNode(i),s},lp=(e,t)=>(e.setValue(t),e.commit(),e),up=(e,t,n)=>{const r=e.startNode.parentNode,i=n?n.startNode:e.endNode,s=t.endNode.nextSibling;s!==i&&ua(r,t.startNode,s,i)},dp=e=>{da(e.startNode.parentNode,e.startNode,e.endNode.nextSibling)},hp=(e,t,n)=>{const r=new Map;for(let i=t;i<=n;i++)r.set(e[i],i);return r},fp=new WeakMap,pp=new WeakMap,gp=Ea((e,t,n)=>{let r;return void 0===n?n=t:void 0!==t&&(r=t),t=>{if(!(t instanceof Da))throw new Error("repeat can only be used in text bindings");const i=fp.get(t)||[],s=pp.get(t)||[],o=[],a=[],c=[];let l,u,d=0;for(const t of e)c[d]=r?r(t,d):d,a[d]=n(t,d),d++;let h=0,f=i.length-1,p=0,g=a.length-1;for(;h<=f&&p<=g;)if(null===i[h])h++;else if(null===i[f])f--;else if(s[h]===c[p])o[p]=lp(i[h],a[p]),h++,p++;else if(s[f]===c[g])o[g]=lp(i[f],a[g]),f--,g--;else if(s[h]===c[g])o[g]=lp(i[h],a[g]),up(t,i[h],o[g+1]),h++,g--;else if(s[f]===c[p])o[p]=lp(i[f],a[p]),up(t,i[f],i[h]),f--,p++;else if(void 0===l&&(l=hp(c,p,g),u=hp(s,h,f)),l.has(s[h]))if(l.has(s[f])){const e=u.get(c[p]),n=void 0!==e?i[e]:null;if(null===n){const e=cp(t,i[h]);lp(e,a[p]),o[p]=e}else o[p]=lp(n,a[p]),up(t,n,i[h]),i[e]=null;p++}else dp(i[f]),f--;else dp(i[h]),h++;for(;p<=g;){const e=cp(t,o[g+1]);lp(e,a[p]),o[p++]=e}for(;h<=f;){const e=i[h++];null!==e&&dp(e)}fp.set(t,o),pp.set(t,c)}});function mp(){const e=bp(['<div class="empty-history-feedback form-help"><span>',"</span></div>"]);return mp=function(){return e},e}function vp(){const e=bp(["",""]);return vp=function(){return e},e}function _p(){const e=bp(["\n    <converse-chat-message\n        .chatview=","\n        .hats=","\n        .model=","\n        ?correcting=","\n        ?editable=","\n        ?has_mentions=","\n        ?is_delayed=","\n        ?is_encrypted=","\n        ?is_first_unread=","\n        ?is_me_message=","\n        ?is_only_emojis=","\n        ?is_retracted=","\n        ?is_spoiler=","\n        ?is_spoiler_visible=","\n        ?retractable=","\n        edited=","\n        error=","\n        error_text=","\n        filename=","\n        filesize=","\n        from=","\n        message_type=","\n        moderated_by=","\n        moderation_reason=","\n        msgid=","\n        occupant_affiliation=","\n        occupant_role=","\n        oob_url=","\n        pretty_type=","\n        progress=","\n        reason=","\n        received=","\n        retry_event_id=","\n        sender=","\n        spoiler_hint=","\n        subject=","\n        time=","\n        username=","></converse-chat-message>\n"]);return _p=function(){return e},e}function bp(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const yp=Ed("No message history available.");function wp(e){const t=e.collection.models,n=t.indexOf(e),r=t[n-1];if(!r||Sn()(e.get("time")).isAfter(Sn()(r.get("time")),"day")){const t=Sn()(e.get("time")).startOf("day");return i={type:"date",time:t.toISOString(),datestring:t.format("dddd MMM Do YYYY")},Ga(ap(),i.time,i.time,i.datestring)}var i}function Sp(e){if("groupchat"===e.get("type")){var t;const n=qc.settings.get("muc_hats").filter(e=>e).map(e=>e.toLowerCase());let r=[];n.includes("vcard_roles")&&(r=e.vcard?e.vcard.get("role"):null,r=r?r.split(",").filter(e=>e).map(e=>({title:e})):[]);const i=[...e.occupant?[e.occupant.get("role")]:[],...e.occupant?[e.occupant.get("affiliation")]:[]].filter(e=>e).filter(e=>n.includes(e.toLowerCase())).map(e=>({title:e}));return[...n.includes("hats")&&(null===(t=e.occupant)||void 0===t?void 0:t.get("hats"))||[],...r,...i]}return[]}function xp(e,t){return{has_mentions:"groupchat"===t.get("type")&&"them"===t.get("sender")&&e.isUserMentioned(t),hats:Sp(t),is_first_unread:e.get("first_unread_id")===t.get("id"),is_me_message:t.isMeCommand(),is_retracted:t.get("retracted")||"retracted"===t.get("moderated"),username:t.getDisplayName()}}qc.elements.define("converse-message-history",class extends uc{static get properties(){return{chatview:{type:Object},messages:{type:Array}}}render(){const e=this.messages;return e.length?Ga(vp(),gp(e,e=>e.get("id"),e=>this.renderMessage(e))):Ga(mp(),yp)}renderMessage(e){if(e.get("dangling_retraction")||e.get("is_only_key"))return"";const t=wp(e);var n;return[...t?[t]:[],(n=Object.assign(e.toJSON(),xp(this.chatview.model,e),{chatview:this.chatview,model:e}),Ga(_p(),n.chatview,n.hats,n.model,n.correcting,n.editable,n.has_mentions,n.is_delayed,!!n.is_encrypted,n.is_first_unread,n.is_me_message,n.is_only_emojis,n.is_retracted,n.is_spoiler,n.is_spoiler_visible,n.retractable,n.edited||"",n.error||"",n.error_text||"",n.filename||"",n.filesize||"",n.from,n.type||"",n.moderated_by||"",n.moderation_reason||"",n.msgid,n.model.occupant?n.model.occupant.get("affiliation"):"",n.model.occupant?n.model.occupant.get("role"):"",n.oob_url||"",n.pretty_type,n.progress||0,n.reason||"",n.received||"",n.retry_event_id||"",n.sender,n.spoiler_hint||"",n.subject||"",n.time,n.username))]}});var Ep=n(16),Ap=n.n(Ep);
 /**
  * @license
  * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
diff --git a/src/solid-xmpp-chat.js b/src/solid-xmpp-chat.js
index a81519a..5ee564a 100644
--- a/src/solid-xmpp-chat.js
+++ b/src/solid-xmpp-chat.js
@@ -279,7 +279,7 @@ export const SolidXMPPChat = {
       'message_archiving': 'always',
       'message_archiving_timeout': 60000,
       'muc_disable_slash_commands': true,
-      'muc_hats': ['hats', 'vcard_roles', 'admin', 'owner', 'moderator',  'participant', 'member'],
+      'muc_hats': ['hats', 'vcard_roles', 'admin', 'moderator'],
       'muc_nickname_from_jid': true,
       'muc_fetch_members': true,
       'muc_show_join_leave': false,
-- 
GitLab