Преглед изворни кода

Start handling error presences in MUC model

JC Brand пре 6 година
родитељ
комит
145ee88213
3 измењених фајлова са 29 додато и 3 уклоњено
  1. 10 1
      dist/converse.js
  2. 9 1
      src/headless/converse-muc.js
  3. 10 1
      src/headless/dist/converse-headless.js

+ 10 - 1
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;
         }
 

+ 9 - 1
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']");

+ 10 - 1
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;
         }