|
@@ -52287,6 +52287,235 @@ _converse_headless_converse_core__WEBPACK_IMPORTED_MODULE_1__["default"].plugins
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
+/***/ "./src/converse-mam-views.js":
|
|
|
+/*!***********************************!*\
|
|
|
+ !*** ./src/converse-mam-views.js ***!
|
|
|
+ \***********************************/
|
|
|
+/*! no exports provided */
|
|
|
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
+
|
|
|
+"use strict";
|
|
|
+__webpack_require__.r(__webpack_exports__);
|
|
|
+/* harmony import */ var _converse_headless_converse_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @converse/headless/converse-core */ "./src/headless/converse-core.js");
|
|
|
+// Converse.js (A browser based XMPP chat client)
|
|
|
+// https://conversejs.org
|
|
|
+//
|
|
|
+// Copyright (c) 2012-2019, Jan-Carel Brand <jc@opkode.com>
|
|
|
+// Licensed under the Mozilla Public License (MPLv2)
|
|
|
+//
|
|
|
+// Views for XEP-0313 Message Archive Management
|
|
|
+
|
|
|
+const CHATROOMS_TYPE = 'chatroom';
|
|
|
+const _converse$env = _converse_headless_converse_core__WEBPACK_IMPORTED_MODULE_0__["default"].env,
|
|
|
+ Strophe = _converse$env.Strophe,
|
|
|
+ _ = _converse$env._;
|
|
|
+const u = _converse_headless_converse_core__WEBPACK_IMPORTED_MODULE_0__["default"].env.utils;
|
|
|
+_converse_headless_converse_core__WEBPACK_IMPORTED_MODULE_0__["default"].plugins.add('converse-mam-views', {
|
|
|
+ dependencies: ['converse-disco', 'converse-mam', 'converse-chatview', 'converse-muc-views'],
|
|
|
+ overrides: {
|
|
|
+ // Overrides mentioned here will be picked up by converse.js's
|
|
|
+ // plugin architecture they will replace existing methods on the
|
|
|
+ // relevant objects or classes.
|
|
|
+ //
|
|
|
+ // New functions which don't exist yet can also be added.
|
|
|
+ ChatBoxView: {
|
|
|
+ render() {
|
|
|
+ const result = this.__super__.render.apply(this, arguments);
|
|
|
+
|
|
|
+ if (!this.disable_mam) {
|
|
|
+ this.content.addEventListener('scroll', _.debounce(this.onScroll.bind(this), 100));
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
+ },
|
|
|
+
|
|
|
+ fetchNewestMessages() {
|
|
|
+ /* Fetches messages that might have been archived *after*
|
|
|
+ * the last archived message in our local cache.
|
|
|
+ */
|
|
|
+ if (this.disable_mam) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ const _converse = this.__super__._converse,
|
|
|
+ most_recent_msg = u.getMostRecentMessage(this.model);
|
|
|
+
|
|
|
+ if (_.isNil(most_recent_msg)) {
|
|
|
+ this.fetchArchivedMessages();
|
|
|
+ } else {
|
|
|
+ const stanza_id = most_recent_msg.get(`stanza_id ${this.model.get('jid')}`);
|
|
|
+
|
|
|
+ if (stanza_id) {
|
|
|
+ this.fetchArchivedMessages({
|
|
|
+ 'after': stanza_id
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ this.fetchArchivedMessages({
|
|
|
+ 'start': most_recent_msg.get('time')
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ fetchArchivedMessagesIfNecessary() {
|
|
|
+ /* Check if archived messages should be fetched, and if so, do so. */
|
|
|
+ if (this.disable_mam || this.model.get('mam_initialized')) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ const _converse = this.__super__._converse;
|
|
|
+
|
|
|
+ _converse.api.disco.supports(Strophe.NS.MAM, _converse.bare_jid).then(result => {
|
|
|
+ // Success
|
|
|
+ if (result.length) {
|
|
|
+ this.fetchArchivedMessages();
|
|
|
+ }
|
|
|
+
|
|
|
+ this.model.save({
|
|
|
+ 'mam_initialized': true
|
|
|
+ });
|
|
|
+ }, () => {
|
|
|
+ // Error
|
|
|
+ _converse.log("Error or timeout while checking for MAM support", Strophe.LogLevel.ERROR);
|
|
|
+ }).catch(msg => {
|
|
|
+ this.clearSpinner();
|
|
|
+
|
|
|
+ _converse.log(msg, Strophe.LogLevel.FATAL);
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ fetchArchivedMessages(options) {
|
|
|
+ const _converse = this.__super__._converse;
|
|
|
+
|
|
|
+ if (this.disable_mam) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ const is_groupchat = this.model.get('type') === CHATROOMS_TYPE;
|
|
|
+ let mam_jid, message_handler;
|
|
|
+
|
|
|
+ if (is_groupchat) {
|
|
|
+ mam_jid = this.model.get('jid');
|
|
|
+ message_handler = this.model.onMessage.bind(this.model);
|
|
|
+ } else {
|
|
|
+ mam_jid = _converse.bare_jid;
|
|
|
+ message_handler = _converse.chatboxes.onMessage.bind(_converse.chatboxes);
|
|
|
+ }
|
|
|
+
|
|
|
+ _converse.api.disco.supports(Strophe.NS.MAM, mam_jid).then(results => {
|
|
|
+ // Success
|
|
|
+ if (!results.length) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ this.addSpinner();
|
|
|
+
|
|
|
+ _converse.api.archive.query( // TODO: only query from the last message we have
|
|
|
+ // in our history
|
|
|
+ _.extend({
|
|
|
+ 'groupchat': is_groupchat,
|
|
|
+ 'before': '',
|
|
|
+ // Page backwards from the most recent message
|
|
|
+ 'max': _converse.archived_messages_page_size,
|
|
|
+ 'with': this.model.get('jid')
|
|
|
+ }, options), messages => {
|
|
|
+ // Success
|
|
|
+ this.clearSpinner();
|
|
|
+
|
|
|
+ _.each(messages, message_handler);
|
|
|
+ }, e => {
|
|
|
+ // Error
|
|
|
+ this.clearSpinner();
|
|
|
+
|
|
|
+ _converse.log("Error or timeout while trying to fetch " + "archived messages", Strophe.LogLevel.ERROR);
|
|
|
+
|
|
|
+ _converse.log(e, Strophe.LogLevel.ERROR);
|
|
|
+ });
|
|
|
+ }, () => {
|
|
|
+ // Error
|
|
|
+ _converse.log("Error or timeout while checking for MAM support", Strophe.LogLevel.ERROR);
|
|
|
+ }).catch(msg => {
|
|
|
+ this.clearSpinner();
|
|
|
+
|
|
|
+ _converse.log(msg, Strophe.LogLevel.FATAL);
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ onScroll(ev) {
|
|
|
+ const _converse = this.__super__._converse;
|
|
|
+
|
|
|
+ if (this.content.scrollTop === 0 && this.model.messages.length) {
|
|
|
+ const oldest_message = this.model.messages.at(0);
|
|
|
+ const by_jid = this.model.get('jid');
|
|
|
+ const stanza_id = oldest_message.get(`stanza_id ${by_jid}`);
|
|
|
+
|
|
|
+ if (stanza_id) {
|
|
|
+ this.fetchArchivedMessages({
|
|
|
+ 'before': stanza_id
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ this.fetchArchivedMessages({
|
|
|
+ 'end': oldest_message.get('time')
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ },
|
|
|
+ ChatRoomView: {
|
|
|
+ initialize() {
|
|
|
+ const _converse = this.__super__._converse;
|
|
|
+
|
|
|
+ this.__super__.initialize.apply(this, arguments);
|
|
|
+
|
|
|
+ this.model.on('change:mam_enabled', this.fetchArchivedMessagesIfNecessary, this);
|
|
|
+ this.model.on('change:connection_status', this.fetchArchivedMessagesIfNecessary, this);
|
|
|
+ },
|
|
|
+
|
|
|
+ renderChatArea() {
|
|
|
+ const result = this.__super__.renderChatArea.apply(this, arguments);
|
|
|
+
|
|
|
+ if (!this.disable_mam) {
|
|
|
+ this.content.addEventListener('scroll', _.debounce(this.onScroll.bind(this), 100));
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
+ },
|
|
|
+
|
|
|
+ fetchArchivedMessagesIfNecessary() {
|
|
|
+ if (this.model.get('connection_status') !== _converse_headless_converse_core__WEBPACK_IMPORTED_MODULE_0__["default"].ROOMSTATUS.ENTERED || !this.model.get('mam_enabled') || this.model.get('mam_initialized')) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ this.fetchArchivedMessages();
|
|
|
+ this.model.save({
|
|
|
+ 'mam_initialized': true
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ initialize() {
|
|
|
+ /* The initialize function gets called as soon as the plugin is
|
|
|
+ * loaded by Converse.js's plugin machinery.
|
|
|
+ */
|
|
|
+ const _converse = this._converse;
|
|
|
+ /* Event handlers */
|
|
|
+
|
|
|
+ _converse.on('afterMessagesFetched', view => view.fetchNewestMessages());
|
|
|
+
|
|
|
+ _converse.on('reconnected', () => {
|
|
|
+ const private_chats = _converse.chatboxviews.filter(view => _.at(view, 'model.attributes.type')[0] === 'chatbox');
|
|
|
+
|
|
|
+ _.each(private_chats, view => view.fetchNewestMessages());
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+});
|
|
|
+
|
|
|
+/***/ }),
|
|
|
+
|
|
|
/***/ "./src/converse-message-view.js":
|
|
|
/*!**************************************!*\
|
|
|
!*** ./src/converse-message-view.js ***!
|
|
@@ -60404,15 +60633,16 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
/* harmony import */ var converse_embedded__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! converse-embedded */ "./src/converse-embedded.js");
|
|
|
/* harmony import */ var converse_fullscreen__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! converse-fullscreen */ "./src/converse-fullscreen.js");
|
|
|
/* harmony import */ var converse_headline__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! converse-headline */ "./src/converse-headline.js");
|
|
|
-/* harmony import */ var converse_minimize__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! converse-minimize */ "./src/converse-minimize.js");
|
|
|
-/* harmony import */ var converse_muc_views__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! converse-muc-views */ "./src/converse-muc-views.js");
|
|
|
-/* harmony import */ var converse_notification__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! converse-notification */ "./src/converse-notification.js");
|
|
|
-/* harmony import */ var converse_omemo__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! converse-omemo */ "./src/converse-omemo.js");
|
|
|
-/* harmony import */ var converse_push__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! converse-push */ "./src/converse-push.js");
|
|
|
-/* harmony import */ var converse_register__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! converse-register */ "./src/converse-register.js");
|
|
|
-/* harmony import */ var converse_roomslist__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! converse-roomslist */ "./src/converse-roomslist.js");
|
|
|
-/* harmony import */ var converse_rosterview__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! converse-rosterview */ "./src/converse-rosterview.js");
|
|
|
-/* harmony import */ var _converse_headless_converse_core__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @converse/headless/converse-core */ "./src/headless/converse-core.js");
|
|
|
+/* harmony import */ var converse_mam_views__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! converse-mam-views */ "./src/converse-mam-views.js");
|
|
|
+/* harmony import */ var converse_minimize__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! converse-minimize */ "./src/converse-minimize.js");
|
|
|
+/* harmony import */ var converse_muc_views__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! converse-muc-views */ "./src/converse-muc-views.js");
|
|
|
+/* harmony import */ var converse_notification__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! converse-notification */ "./src/converse-notification.js");
|
|
|
+/* harmony import */ var converse_omemo__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! converse-omemo */ "./src/converse-omemo.js");
|
|
|
+/* harmony import */ var converse_push__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! converse-push */ "./src/converse-push.js");
|
|
|
+/* harmony import */ var converse_register__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! converse-register */ "./src/converse-register.js");
|
|
|
+/* harmony import */ var converse_roomslist__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! converse-roomslist */ "./src/converse-roomslist.js");
|
|
|
+/* harmony import */ var converse_rosterview__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! converse-rosterview */ "./src/converse-rosterview.js");
|
|
|
+/* harmony import */ var _converse_headless_converse_core__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @converse/headless/converse-core */ "./src/headless/converse-core.js");
|
|
|
/* START: Removable components
|
|
|
* --------------------
|
|
|
* Any of the following components may be removed if they're not needed.
|
|
@@ -60440,6 +60670,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
|
|
|
// Support for headline messages
|
|
|
|
|
|
+
|
|
|
// Allows chat boxes to be minimized
|
|
|
|
|
|
// Views related to MUC
|
|
@@ -60457,11 +60688,11 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
/* END: Removable components */
|
|
|
|
|
|
|
|
|
-const WHITELISTED_PLUGINS = ['converse-autocomplete', 'converse-bookmarks', 'converse-caps', 'converse-chatboxviews', 'converse-chatview', 'converse-controlbox', 'converse-dragresize', 'converse-embedded', 'converse-fullscreen', 'converse-headline', 'converse-message-view', 'converse-minimize', 'converse-modal', 'converse-muc-views', 'converse-notification', 'converse-oauth', 'converse-omemo', 'converse-profile', 'converse-push', 'converse-register', 'converse-roomslist', 'converse-rosterview', 'converse-singleton'];
|
|
|
-const initialize = _converse_headless_converse_core__WEBPACK_IMPORTED_MODULE_21__["default"].initialize;
|
|
|
+const WHITELISTED_PLUGINS = ['converse-autocomplete', 'converse-bookmarks', 'converse-caps', 'converse-chatboxviews', 'converse-chatview', 'converse-controlbox', 'converse-dragresize', 'converse-embedded', 'converse-fullscreen', 'converse-headline', 'converse-mam-views', 'converse-message-view', 'converse-minimize', 'converse-modal', 'converse-muc-views', 'converse-notification', 'converse-oauth', 'converse-omemo', 'converse-profile', 'converse-push', 'converse-register', 'converse-roomslist', 'converse-rosterview', 'converse-singleton'];
|
|
|
+const initialize = _converse_headless_converse_core__WEBPACK_IMPORTED_MODULE_22__["default"].initialize;
|
|
|
|
|
|
-_converse_headless_converse_core__WEBPACK_IMPORTED_MODULE_21__["default"].initialize = function (settings, callback) {
|
|
|
- if (_converse_headless_converse_core__WEBPACK_IMPORTED_MODULE_21__["default"].env._.isArray(settings.whitelisted_plugins)) {
|
|
|
+_converse_headless_converse_core__WEBPACK_IMPORTED_MODULE_22__["default"].initialize = function (settings, callback) {
|
|
|
+ if (_converse_headless_converse_core__WEBPACK_IMPORTED_MODULE_22__["default"].env._.isArray(settings.whitelisted_plugins)) {
|
|
|
settings.whitelisted_plugins = settings.whitelisted_plugins.concat(WHITELISTED_PLUGINS);
|
|
|
} else {
|
|
|
settings.whitelisted_plugins = WHITELISTED_PLUGINS;
|
|
@@ -60470,7 +60701,7 @@ _converse_headless_converse_core__WEBPACK_IMPORTED_MODULE_21__["default"].initia
|
|
|
return initialize(settings, callback);
|
|
|
};
|
|
|
|
|
|
-/* harmony default export */ __webpack_exports__["default"] = (_converse_headless_converse_core__WEBPACK_IMPORTED_MODULE_21__["default"]);
|
|
|
+/* harmony default export */ __webpack_exports__["default"] = (_converse_headless_converse_core__WEBPACK_IMPORTED_MODULE_22__["default"]);
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
@@ -65607,12 +65838,10 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
// Converse.js (A browser based XMPP chat client)
|
|
|
// https://conversejs.org
|
|
|
//
|
|
|
-// Copyright (c) 2012-2017, Jan-Carel Brand <jc@opkode.com>
|
|
|
+// Copyright (c) 2012-2019, Jan-Carel Brand <jc@opkode.com>
|
|
|
// Licensed under the Mozilla Public License (MPLv2)
|
|
|
//
|
|
|
-
|
|
|
-/*global define */
|
|
|
-// XEP-0059 Result Set Management
|
|
|
+// XEP-0313 Message Archive Management
|
|
|
|
|
|
|
|
|
|
|
@@ -65745,7 +65974,7 @@ function queryForArchivedMessages(_converse, options, callback, errback) {
|
|
|
}
|
|
|
|
|
|
_converse_core__WEBPACK_IMPORTED_MODULE_2__["default"].plugins.add('converse-mam', {
|
|
|
- dependencies: ['converse-chatview', 'converse-muc', 'converse-muc-views'],
|
|
|
+ dependencies: ['converse-muc'],
|
|
|
overrides: {
|
|
|
// Overrides mentioned here will be picked up by converse.js's
|
|
|
// plugin architecture they will replace existing methods on the
|
|
@@ -65795,182 +66024,6 @@ _converse_core__WEBPACK_IMPORTED_MODULE_2__["default"].plugins.add('converse-mam
|
|
|
return attrs;
|
|
|
}
|
|
|
|
|
|
- },
|
|
|
- ChatBoxView: {
|
|
|
- render() {
|
|
|
- const result = this.__super__.render.apply(this, arguments);
|
|
|
-
|
|
|
- if (!this.disable_mam) {
|
|
|
- this.content.addEventListener('scroll', _.debounce(this.onScroll.bind(this), 100));
|
|
|
- }
|
|
|
-
|
|
|
- return result;
|
|
|
- },
|
|
|
-
|
|
|
- fetchNewestMessages() {
|
|
|
- /* Fetches messages that might have been archived *after*
|
|
|
- * the last archived message in our local cache.
|
|
|
- */
|
|
|
- if (this.disable_mam) {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- const _converse = this.__super__._converse,
|
|
|
- most_recent_msg = u.getMostRecentMessage(this.model);
|
|
|
-
|
|
|
- if (_.isNil(most_recent_msg)) {
|
|
|
- this.fetchArchivedMessages();
|
|
|
- } else {
|
|
|
- const stanza_id = most_recent_msg.get(`stanza_id ${this.model.get('jid')}`);
|
|
|
-
|
|
|
- if (stanza_id) {
|
|
|
- this.fetchArchivedMessages({
|
|
|
- 'after': stanza_id
|
|
|
- });
|
|
|
- } else {
|
|
|
- this.fetchArchivedMessages({
|
|
|
- 'start': most_recent_msg.get('time')
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
- fetchArchivedMessagesIfNecessary() {
|
|
|
- /* Check if archived messages should be fetched, and if so, do so. */
|
|
|
- if (this.disable_mam || this.model.get('mam_initialized')) {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- const _converse = this.__super__._converse;
|
|
|
-
|
|
|
- _converse.api.disco.supports(Strophe.NS.MAM, _converse.bare_jid).then(result => {
|
|
|
- // Success
|
|
|
- if (result.length) {
|
|
|
- this.fetchArchivedMessages();
|
|
|
- }
|
|
|
-
|
|
|
- this.model.save({
|
|
|
- 'mam_initialized': true
|
|
|
- });
|
|
|
- }, () => {
|
|
|
- // Error
|
|
|
- _converse.log("Error or timeout while checking for MAM support", Strophe.LogLevel.ERROR);
|
|
|
- }).catch(msg => {
|
|
|
- this.clearSpinner();
|
|
|
-
|
|
|
- _converse.log(msg, Strophe.LogLevel.FATAL);
|
|
|
- });
|
|
|
- },
|
|
|
-
|
|
|
- fetchArchivedMessages(options) {
|
|
|
- const _converse = this.__super__._converse;
|
|
|
-
|
|
|
- if (this.disable_mam) {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- const is_groupchat = this.model.get('type') === CHATROOMS_TYPE;
|
|
|
- let mam_jid, message_handler;
|
|
|
-
|
|
|
- if (is_groupchat) {
|
|
|
- mam_jid = this.model.get('jid');
|
|
|
- message_handler = this.model.onMessage.bind(this.model);
|
|
|
- } else {
|
|
|
- mam_jid = _converse.bare_jid;
|
|
|
- message_handler = _converse.chatboxes.onMessage.bind(_converse.chatboxes);
|
|
|
- }
|
|
|
-
|
|
|
- _converse.api.disco.supports(Strophe.NS.MAM, mam_jid).then(results => {
|
|
|
- // Success
|
|
|
- if (!results.length) {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- this.addSpinner();
|
|
|
-
|
|
|
- _converse.api.archive.query( // TODO: only query from the last message we have
|
|
|
- // in our history
|
|
|
- _.extend({
|
|
|
- 'groupchat': is_groupchat,
|
|
|
- 'before': '',
|
|
|
- // Page backwards from the most recent message
|
|
|
- 'max': _converse.archived_messages_page_size,
|
|
|
- 'with': this.model.get('jid')
|
|
|
- }, options), messages => {
|
|
|
- // Success
|
|
|
- this.clearSpinner();
|
|
|
-
|
|
|
- _.each(messages, message_handler);
|
|
|
- }, e => {
|
|
|
- // Error
|
|
|
- this.clearSpinner();
|
|
|
-
|
|
|
- _converse.log("Error or timeout while trying to fetch " + "archived messages", Strophe.LogLevel.ERROR);
|
|
|
-
|
|
|
- _converse.log(e, Strophe.LogLevel.ERROR);
|
|
|
- });
|
|
|
- }, () => {
|
|
|
- // Error
|
|
|
- _converse.log("Error or timeout while checking for MAM support", Strophe.LogLevel.ERROR);
|
|
|
- }).catch(msg => {
|
|
|
- this.clearSpinner();
|
|
|
-
|
|
|
- _converse.log(msg, Strophe.LogLevel.FATAL);
|
|
|
- });
|
|
|
- },
|
|
|
-
|
|
|
- onScroll(ev) {
|
|
|
- const _converse = this.__super__._converse;
|
|
|
-
|
|
|
- if (this.content.scrollTop === 0 && this.model.messages.length) {
|
|
|
- const oldest_message = this.model.messages.at(0);
|
|
|
- const by_jid = this.model.get('jid');
|
|
|
- const stanza_id = oldest_message.get(`stanza_id ${by_jid}`);
|
|
|
-
|
|
|
- if (stanza_id) {
|
|
|
- this.fetchArchivedMessages({
|
|
|
- 'before': stanza_id
|
|
|
- });
|
|
|
- } else {
|
|
|
- this.fetchArchivedMessages({
|
|
|
- 'end': oldest_message.get('time')
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- },
|
|
|
- ChatRoomView: {
|
|
|
- initialize() {
|
|
|
- const _converse = this.__super__._converse;
|
|
|
-
|
|
|
- this.__super__.initialize.apply(this, arguments);
|
|
|
-
|
|
|
- this.model.on('change:mam_enabled', this.fetchArchivedMessagesIfNecessary, this);
|
|
|
- this.model.on('change:connection_status', this.fetchArchivedMessagesIfNecessary, this);
|
|
|
- },
|
|
|
-
|
|
|
- renderChatArea() {
|
|
|
- const result = this.__super__.renderChatArea.apply(this, arguments);
|
|
|
-
|
|
|
- if (!this.disable_mam) {
|
|
|
- this.content.addEventListener('scroll', _.debounce(this.onScroll.bind(this), 100));
|
|
|
- }
|
|
|
-
|
|
|
- return result;
|
|
|
- },
|
|
|
-
|
|
|
- fetchArchivedMessagesIfNecessary() {
|
|
|
- if (this.model.get('connection_status') !== _converse_core__WEBPACK_IMPORTED_MODULE_2__["default"].ROOMSTATUS.ENTERED || !this.model.get('mam_enabled') || this.model.get('mam_initialized')) {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- this.fetchArchivedMessages();
|
|
|
- this.model.save({
|
|
|
- 'mam_initialized': true
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
}
|
|
|
},
|
|
|
|
|
@@ -66038,7 +66091,7 @@ _converse_core__WEBPACK_IMPORTED_MODULE_2__["default"].plugins.add('converse-mam
|
|
|
});
|
|
|
}
|
|
|
};
|
|
|
- /* Event handlers */
|
|
|
+ /************************ BEGIN Event Handlers ************************/
|
|
|
|
|
|
|
|
|
_converse.on('serviceDiscovered', feature => {
|
|
@@ -66055,19 +66108,11 @@ _converse_core__WEBPACK_IMPORTED_MODULE_2__["default"].plugins.add('converse-mam
|
|
|
}
|
|
|
});
|
|
|
|
|
|
- _converse.on('addClientFeatures', () => {
|
|
|
- _converse.api.disco.own.features.add(Strophe.NS.MAM);
|
|
|
- });
|
|
|
-
|
|
|
- _converse.on('afterMessagesFetched', chatboxview => {
|
|
|
- chatboxview.fetchNewestMessages();
|
|
|
- });
|
|
|
+ _converse.on('addClientFeatures', () => _converse.api.disco.own.features.add(Strophe.NS.MAM));
|
|
|
+ /************************ END Event Handlers ************************/
|
|
|
|
|
|
- _converse.on('reconnected', () => {
|
|
|
- const private_chats = _converse.chatboxviews.filter(view => _.at(view, 'model.attributes.type')[0] === 'chatbox');
|
|
|
+ /************************ BEGIN API ************************/
|
|
|
|
|
|
- _.each(private_chats, view => view.fetchNewestMessages());
|
|
|
- });
|
|
|
|
|
|
_.extend(_converse.api, {
|
|
|
/**
|
|
@@ -66248,6 +66293,8 @@ _converse_core__WEBPACK_IMPORTED_MODULE_2__["default"].plugins.add('converse-mam
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
+ /************************ END API ************************/
|
|
|
+
|
|
|
}
|
|
|
|
|
|
});
|