소스 검색

Clear messages when converse reconnects

JC Brand 6 년 전
부모
커밋
5f04176929
1개의 변경된 파일19개의 추가작업 그리고 20개의 파일을 삭제
  1. 19 20
      src/headless/converse-muc.js

+ 19 - 20
src/headless/converse-muc.js

@@ -1490,18 +1490,6 @@ converse.plugins.add('converse-muc', {
             _converse.api.trigger('roomsAutoJoined');
         }
 
-        function disconnectChatRooms () {
-            /* When disconnecting, mark all groupchats as
-             * disconnected, so that they will be properly entered again
-             * when fetched from session storage.
-             */
-            _converse.chatboxes.each(model => {
-                if (model.get('type') === _converse.CHATROOMS_TYPE) {
-                    model.save('connection_status', converse.ROOMSTATUS.DISCONNECTED);
-                }
-            });
-        }
-
 
         /************************ BEGIN Event Handlers ************************/
         _converse.api.listen.on('addClientFeatures', () => {
@@ -1513,13 +1501,23 @@ converse.plugins.add('converse-muc', {
             }
         });
         _converse.api.listen.on('chatBoxesFetched', autoJoinRooms);
+
+
+        function disconnectChatRooms () {
+            /* When disconnecting, mark all groupchats as
+             * disconnected, so that they will be properly entered again
+             * when fetched from session storage.
+             */
+            return _converse.chatboxes
+                .filter(m => (m.get('type') === _converse.CHATROOMS_TYPE))
+                .forEach(m => m.save('connection_status', converse.ROOMSTATUS.DISCONNECTED))
+        }
         _converse.api.listen.on('disconnecting', disconnectChatRooms);
 
         _converse.api.listen.on('statusInitialized', () => {
             // XXX: For websocket connections, we disconnect from all
             // chatrooms when the page reloads. This is a workaround for
             // issue #1111 and should be removed once we support XEP-0198
-            const options = {'once': true, 'passive': true};
             window.addEventListener(_converse.unloadevent, () => {
                 if (_converse.connection._proto instanceof Strophe.Websocket) {
                     disconnectChatRooms();
@@ -1531,13 +1529,14 @@ converse.plugins.add('converse-muc', {
             /* Upon a reconnection event from converse, join again
              * all the open groupchats.
              */
-            _converse.chatboxes.each(model => {
-                if (model.get('type') === _converse.CHATROOMS_TYPE) {
-                    model.save('connection_status', converse.ROOMSTATUS.DISCONNECTED);
-                    model.registerHandlers();
-                    model.join();
-                }
-            });
+            _converse.chatboxes
+                .filter(m => (m.get('type') === _converse.CHATROOMS_TYPE))
+                .forEach(m => m.save('connection_status', converse.ROOMSTATUS.DISCONNECTED))
+                .forEach(room => {
+                    room.clearMessages();
+                    room.registerHandlers();
+                    room.join();
+                });
         }
         _converse.api.listen.on('reconnected', reconnectToChatRooms);
         /************************ END Event Handlers ************************/