diff options
author | Matthieu Saulnier <fantom@fedoraproject.org> | 2023-09-10 11:02:37 +0200 |
---|---|---|
committer | Matthieu Saulnier <fantom@fedoraproject.org> | 2023-09-10 11:02:37 +0200 |
commit | c3d25357d4a61a26609480bf84a67a56d1a17fc3 (patch) | |
tree | 4209832fa639354a1c905ca6d3ca899e889df90e /roles/reverseproxy/files/conversejs/src/headless/plugins/mam/index.js | |
parent | 78a34e844540a6f24a42e49bcc00ce00cd6ec955 (diff) | |
download | playbooks-ansible-c3d25357d4a61a26609480bf84a67a56d1a17fc3.tar.gz playbooks-ansible-c3d25357d4a61a26609480bf84a67a56d1a17fc3.tar.xz playbooks-ansible-c3d25357d4a61a26609480bf84a67a56d1a17fc3.zip |
Add conversejs deployment
Diffstat (limited to 'roles/reverseproxy/files/conversejs/src/headless/plugins/mam/index.js')
-rw-r--r-- | roles/reverseproxy/files/conversejs/src/headless/plugins/mam/index.js | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/roles/reverseproxy/files/conversejs/src/headless/plugins/mam/index.js b/roles/reverseproxy/files/conversejs/src/headless/plugins/mam/index.js new file mode 100644 index 0000000..da1c0ec --- /dev/null +++ b/roles/reverseproxy/files/conversejs/src/headless/plugins/mam/index.js @@ -0,0 +1,62 @@ +/** + * @description XEP-0313 Message Archive Management + * @copyright 2022, the Converse.js contributors + * @license Mozilla Public License (MPLv2) + */ +import '../disco/index.js'; +import MAMPlaceholderMessage from './placeholder.js'; +import mam_api from './api.js'; +import { + onMAMError, + onMAMPreferences, + getMAMPrefsFromFeature, + preMUCJoinMAMFetch, + fetchNewestMessages, + handleMAMResult +} from './utils.js'; +import { _converse, api, converse } from '@converse/headless/core'; + +const { Strophe } = converse.env; +const { NS } = Strophe; + +converse.plugins.add('converse-mam', { + dependencies: ['converse-disco', 'converse-muc'], + + initialize () { + api.settings.extend({ + archived_messages_page_size: '50', + mam_request_all_pages: true, + message_archiving: undefined, // Supported values are 'always', 'never', 'roster' (https://xmpp.org/extensions/xep-0313.html#prefs) + message_archiving_timeout: 20000 // Time (in milliseconds) to wait before aborting MAM request + }); + + Object.assign(api, mam_api); + // This is mainly done to aid with tests + Object.assign(_converse, { onMAMError, onMAMPreferences, handleMAMResult, MAMPlaceholderMessage }); + + /************************ Event Handlers ************************/ + api.listen.on('addClientFeatures', () => api.disco.own.features.add(NS.MAM)); + api.listen.on('serviceDiscovered', getMAMPrefsFromFeature); + api.listen.on('chatRoomViewInitialized', view => { + if (api.settings.get('muc_show_logs_before_join')) { + preMUCJoinMAMFetch(view.model); + // If we want to show MAM logs before entering the MUC, we need + // to be informed once it's clear that this MUC supports MAM. + view.model.features.on('change:mam_enabled', () => preMUCJoinMAMFetch(view.model)); + } + }); + api.listen.on('enteredNewRoom', muc => muc.features.get('mam_enabled') && fetchNewestMessages(muc)); + + api.listen.on('chatReconnected', chat => { + if (chat.get('type') === _converse.PRIVATE_CHAT_TYPE) { + fetchNewestMessages(chat); + } + }); + + api.listen.on('afterMessagesFetched', chat => { + if (chat.get('type') === _converse.PRIVATE_CHAT_TYPE) { + fetchNewestMessages(chat); + } + }); + } +}); |