|
@@ -1,27 +1,22 @@
|
|
|
import { html } from 'lit';
|
|
|
import { until } from 'lit/directives/until.js';
|
|
|
-import { _converse, api } from "@converse/headless";
|
|
|
+import { _converse, api, u } from "@converse/headless";
|
|
|
import { __ } from 'i18n';
|
|
|
|
|
|
/**
|
|
|
* @param {import('../occupant').default} el
|
|
|
*/
|
|
|
export default (el) => {
|
|
|
- const i18n_nickname = __('Nickname');
|
|
|
- const i18n_affiliation = __('Affiliation');
|
|
|
const i18n_participants = __('Participants');
|
|
|
const i18n_add_to_contacts = __('Add to Contacts');
|
|
|
const i18n_no_occupant = __('No participant data found');
|
|
|
|
|
|
const jid = el.model?.get('jid');
|
|
|
const nick = el.model?.get('nick');
|
|
|
- const occupant_id = el.model?.get('occupant_id');
|
|
|
- const role = el.model?.get('role');
|
|
|
- const affiliation = el.model?.get('affiliation');
|
|
|
- const hats = el.model?.get('hats')?.length ? el.model.get('hats') : null;
|
|
|
+ const role = u.firstCharToUpperCase(el.model?.get('role'));
|
|
|
+ const affiliation = u.firstCharToUpperCase(el.model?.get('affiliation'));
|
|
|
+ const hats = el.model?.get('hats')?.length ? el.model.get('hats').map(({ title }) => title) : [];
|
|
|
|
|
|
- const allowed_commands = el.muc.getAllowedCommands();
|
|
|
- const may_moderate = allowed_commands.includes('modtools');
|
|
|
const can_see_real_jids = el.muc.features.get('nonanonymous') || el.muc.getOwnRole() === 'moderator';
|
|
|
const bare_jid = _converse.session.get('bare_jid');
|
|
|
const not_me = jid != bare_jid;
|
|
@@ -45,55 +40,26 @@ export default (el) => {
|
|
|
|
|
|
${el.model ? html`
|
|
|
<div class="row">
|
|
|
- <div class="col-auto">
|
|
|
+ <div class="col">
|
|
|
<converse-avatar
|
|
|
.model=${el.model}
|
|
|
- class="avatar modal-avatar"
|
|
|
+ class="avatar modal-avatar justify-content-center"
|
|
|
name="${el.model.getDisplayName()}"
|
|
|
nonce=${el.getVcard()?.get('vcard_updated')}
|
|
|
height="120" width="120"></converse-avatar>
|
|
|
</div>
|
|
|
- <div class="col">
|
|
|
+ </div>
|
|
|
+ <div class="row">
|
|
|
+ <div class="col-auto">
|
|
|
<ul class="occupant-details">
|
|
|
- <li>
|
|
|
- ${ nick ? html`<div class="row"><strong class="g-0">${i18n_nickname}:</strong></div><div class="row">${nick}</div>` : '' }
|
|
|
- </li>
|
|
|
+ ${ nick ? html`<li class="occupant-details-nickname">${nick}</li>` : '' }
|
|
|
<li>
|
|
|
${ jid ? html`<div class="row"><strong class="g-0">${__('XMPP Address')}:</strong></div><div class="row">${jid}</div>` : '' }
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <div class="row"><strong class="g-0">${i18n_affiliation}:</strong></div>
|
|
|
- <div class="row">${affiliation}
|
|
|
- ${ may_moderate ? html`
|
|
|
- <a href="#"
|
|
|
- data-form="affiliation-form"
|
|
|
- class="toggle-form right"
|
|
|
- color="var(--secondary-color)"
|
|
|
- @click=${(ev) => el.toggleForm(ev)}><converse-icon class="fa fa-wrench" size="1em"></converse-icon>
|
|
|
- </a>
|
|
|
- ${ el.show_affiliation_form ? html`<converse-muc-affiliation-form jid=${jid} .muc=${el.muc} affiliation=${affiliation}></converse-muc-affiliation-form>` : '' }` : ''
|
|
|
- }
|
|
|
- </div>
|
|
|
- </li>
|
|
|
<li>
|
|
|
- <div class="row"><strong class="g-0">${__('Role')}:</strong></div>
|
|
|
- <div class="row">${role}
|
|
|
- ${ may_moderate && role ? html`
|
|
|
- <a href="#"
|
|
|
- data-form="row-form"
|
|
|
- class="toggle-form right"
|
|
|
- color="var(--secondary-color)"
|
|
|
- @click=${(ev) => el.toggleForm(ev)}><converse-icon class="fa fa-wrench" size="1em"></converse-icon>
|
|
|
- </a>
|
|
|
- ${ el.show_role_form ? html`<converse-muc-role-form jid=${jid} .muc=${el.muc} role=${role}></converse-muc-role-form>` : '' }` : ''
|
|
|
- }
|
|
|
- </div>
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- ${ hats ? html`<div class="row"><strong class="g-0">${__('Hats')}:</strong></div><div class="row">${hats}</div>` : '' }
|
|
|
- </li>
|
|
|
<li>
|
|
|
- ${ occupant_id ? html`<div class="row"><strong class="g-0">${__('Occupant Id')}:</strong></div><div class="row">${occupant_id}</div>` : '' }
|
|
|
+ <span class="badge text-bg-primary">${affiliation}</span>
|
|
|
+ <span class="badge text-bg-secondary">${role}</span>
|
|
|
+ ${ hats.length ? html`${hats.map((h) => html`<span class="badge text-bg-info">${h}</span>`)}` : '' }
|
|
|
</li>
|
|
|
${ until(add_to_contacts, '') }
|
|
|
</ul>
|