muc: add a add to contacts button
This commit is contained in:
parent
72be204f77
commit
b0b8a3f89d
@ -1,5 +1,9 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## Unreleased
|
||||||
|
|
||||||
|
- Add a "Add to Contacts" button in MUC occupant modals
|
||||||
|
|
||||||
## 10.0.0 (2022-10-30)
|
## 10.0.0 (2022-10-30)
|
||||||
|
|
||||||
- Update to Strophe.js 1.6.0 which adds support for SCRAM-SHA-256 and SCRAM-SHA-512
|
- Update to Strophe.js 1.6.0 which adds support for SCRAM-SHA-256 and SCRAM-SHA-512
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import BaseModal from "plugins/modal/modal.js";
|
import BaseModal from "plugins/modal/modal.js";
|
||||||
import tpl_occupant_modal from "./templates/occupant.js";
|
import tpl_occupant_modal from "./templates/occupant.js";
|
||||||
import { _converse, api } from "@converse/headless/core";
|
import { _converse, api } from "@converse/headless/core";
|
||||||
|
import { Model } from '@converse/skeletor/src/model.js';
|
||||||
|
|
||||||
export default class OccupantModal extends BaseModal {
|
export default class OccupantModal extends BaseModal {
|
||||||
|
|
||||||
@ -36,13 +36,27 @@ export default class OccupantModal extends BaseModal {
|
|||||||
const role = this.model?.get('role');
|
const role = this.model?.get('role');
|
||||||
const affiliation = this.model?.get('affiliation');
|
const affiliation = this.model?.get('affiliation');
|
||||||
const hats = this.model?.get('hats')?.length ? this.model.get('hats') : null;
|
const hats = this.model?.get('hats')?.length ? this.model.get('hats') : null;
|
||||||
return tpl_occupant_modal({ jid, vcard, nick, occupant_id, role, affiliation, hats });
|
const muc = this.model.collection.chatroom;
|
||||||
|
const addToContacts = api.contacts.get(jid).then(contact => {
|
||||||
|
if (!contact && muc.features.get('nonanonymous') && jid && jid != _converse.bare_jid) {
|
||||||
|
return this.addToContacts.bind(this);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return tpl_occupant_modal({ jid, vcard, nick, occupant_id, role, affiliation, hats, addToContacts });
|
||||||
}
|
}
|
||||||
|
|
||||||
getModalTitle () { // eslint-disable-line class-methods-use-this
|
getModalTitle () { // eslint-disable-line class-methods-use-this
|
||||||
const model = this.model ?? this.message;
|
const model = this.model ?? this.message;
|
||||||
return model?.getDisplayName();
|
return model?.getDisplayName();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
addToContacts () {
|
||||||
|
const model = this.model ?? this.message;
|
||||||
|
const jid = model.get('jid');
|
||||||
|
if (jid) {
|
||||||
|
api.modal.show('converse-add-contact-modal', {'model': new Model({ jid })});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
api.elements.define('converse-muc-occupant-modal', OccupantModal);
|
api.elements.define('converse-muc-occupant-modal', OccupantModal);
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
import 'shared/avatar/avatar.js';
|
import 'shared/avatar/avatar.js';
|
||||||
import { __ } from 'i18n';
|
import { __ } from 'i18n';
|
||||||
import { html } from "lit";
|
import { html } from "lit";
|
||||||
|
import { until } from 'lit/directives/until.js';
|
||||||
|
|
||||||
|
|
||||||
export default (o) => {
|
export default (o) => {
|
||||||
|
const addToContacts = o.addToContacts.then(add => add ? html`<li><button class="btn btn-primary" type="button" @click=${add}>${__('Add to Contacts')}</button></li>` : '');
|
||||||
return html`
|
return html`
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
@ -33,6 +35,7 @@ export default (o) => {
|
|||||||
<li>
|
<li>
|
||||||
${ o.occupant_id ? html`<div class="row"><strong>${__('Occupant Id')}:</strong></div><div class="row">${o.occupant_id}</div>` : '' }
|
${ o.occupant_id ? html`<div class="row"><strong>${__('Occupant Id')}:</strong></div><div class="row">${o.occupant_id}</div>` : '' }
|
||||||
</li>
|
</li>
|
||||||
|
${ until(addToContacts, '') }
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user