From 145ee8821343e11cfabaa92c7d3d64d80514449b Mon Sep 17 00:00:00 2001 From: JC Brand Date: Thu, 9 May 2019 12:18:36 +0200 Subject: [PATCH] Start handling error presences in MUC model --- dist/converse.js | 11 ++++++++++- src/headless/converse-muc.js | 10 +++++++++- src/headless/dist/converse-headless.js | 11 ++++++++++- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/dist/converse.js b/dist/converse.js index f50b05a1a..38d84b6ca 100644 --- a/dist/converse.js +++ b/dist/converse.js @@ -60970,7 +60970,16 @@ _converse_core__WEBPACK_IMPORTED_MODULE_3__["default"].plugins.add('converse-muc */ onPresence(pres) { if (pres.getAttribute('type') === 'error') { - this.save('connection_status', _converse_core__WEBPACK_IMPORTED_MODULE_3__["default"].ROOMSTATUS.DISCONNECTED); + // TODO: currently showErrorMessageFromPresence handles + // 'error" presences in converse-muc-views. + // Instead, they should be handled here and the presence + // handler removed from there. + if (sizzle(`error not-authorized[xmlns="${Strophe.NS.STANZAS}"]`, pres).length) { + this.save('connection_status', _converse_core__WEBPACK_IMPORTED_MODULE_3__["default"].ROOMSTATUS.PASSWORD_REQUIRED); + } else { + this.save('connection_status', _converse_core__WEBPACK_IMPORTED_MODULE_3__["default"].ROOMSTATUS.DISCONNECTED); + } + return; } diff --git a/src/headless/converse-muc.js b/src/headless/converse-muc.js index 3647ea69d..2db7bf501 100644 --- a/src/headless/converse-muc.js +++ b/src/headless/converse-muc.js @@ -1116,7 +1116,15 @@ converse.plugins.add('converse-muc', { */ onPresence (pres) { if (pres.getAttribute('type') === 'error') { - this.save('connection_status', converse.ROOMSTATUS.DISCONNECTED); + // TODO: currently showErrorMessageFromPresence handles + // 'error" presences in converse-muc-views. + // Instead, they should be handled here and the presence + // handler removed from there. + if (sizzle(`error not-authorized[xmlns="${Strophe.NS.STANZAS}"]`, pres).length) { + this.save('connection_status', converse.ROOMSTATUS.PASSWORD_REQUIRED); + } else { + this.save('connection_status', converse.ROOMSTATUS.DISCONNECTED); + } return; } const is_self = pres.querySelector("status[code='110']"); diff --git a/src/headless/dist/converse-headless.js b/src/headless/dist/converse-headless.js index 003932480..e41fe03f6 100644 --- a/src/headless/dist/converse-headless.js +++ b/src/headless/dist/converse-headless.js @@ -39257,7 +39257,16 @@ _converse_core__WEBPACK_IMPORTED_MODULE_3__["default"].plugins.add('converse-muc */ onPresence(pres) { if (pres.getAttribute('type') === 'error') { - this.save('connection_status', _converse_core__WEBPACK_IMPORTED_MODULE_3__["default"].ROOMSTATUS.DISCONNECTED); + // TODO: currently showErrorMessageFromPresence handles + // 'error" presences in converse-muc-views. + // Instead, they should be handled here and the presence + // handler removed from there. + if (sizzle(`error not-authorized[xmlns="${Strophe.NS.STANZAS}"]`, pres).length) { + this.save('connection_status', _converse_core__WEBPACK_IMPORTED_MODULE_3__["default"].ROOMSTATUS.PASSWORD_REQUIRED); + } else { + this.save('connection_status', _converse_core__WEBPACK_IMPORTED_MODULE_3__["default"].ROOMSTATUS.DISCONNECTED); + } + return; }