summaryrefslogtreecommitdiffstats
path: root/roles/reverseproxy/files/conversejs/src/headless/plugins/mam/index.js
diff options
context:
space:
mode:
authorMatthieu Saulnier <fantom@fedoraproject.org>2023-09-10 11:02:37 +0200
committerMatthieu Saulnier <fantom@fedoraproject.org>2023-09-10 11:02:37 +0200
commitc3d25357d4a61a26609480bf84a67a56d1a17fc3 (patch)
tree4209832fa639354a1c905ca6d3ca899e889df90e /roles/reverseproxy/files/conversejs/src/headless/plugins/mam/index.js
parent78a34e844540a6f24a42e49bcc00ce00cd6ec955 (diff)
downloadplaybooks-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.js62
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);
+ }
+ });
+ }
+});