From 1b13e0c205835b4bb9a79e016889f7dc52c58a80 Mon Sep 17 00:00:00 2001 From: luohua Date: Tue, 26 Sep 2017 19:23:32 +0800 Subject: [PATCH] [FIX] After deleting the room, cache is not synchronizing --- packages/rocketchat-lib/client/lib/cachedCollection.js | 1 + packages/rocketchat-ui/client/views/app/room.js | 6 ++++++ server/publications/room.js | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/rocketchat-lib/client/lib/cachedCollection.js b/packages/rocketchat-lib/client/lib/cachedCollection.js index 88f369f83a5..7fed8068d2b 100644 --- a/packages/rocketchat-lib/client/lib/cachedCollection.js +++ b/packages/rocketchat-lib/client/lib/cachedCollection.js @@ -330,6 +330,7 @@ class CachedCollection { this.log('record received', t, record); if (t === 'removed') { this.collection.remove(record._id); + RoomManager.close(record.t+record.name); } else { delete record.$loki; this.collection.upsert({ _id: record._id }, _.omit(record, '_id')); diff --git a/packages/rocketchat-ui/client/views/app/room.js b/packages/rocketchat-ui/client/views/app/room.js index 6e84324a102..9351181efc6 100644 --- a/packages/rocketchat-ui/client/views/app/room.js +++ b/packages/rocketchat-ui/client/views/app/room.js @@ -952,4 +952,10 @@ Template.room.onRendered(function() { newMessage.classList.remove('not'); } }); + Tracker.autorun(function() { + const subRoom = ChatSubscription.findOne({rid:template.data._id}); + if (!subRoom) { + FlowRouter.go('home'); + } + }); }); diff --git a/server/publications/room.js b/server/publications/room.js index ba1420ffb4c..d35010b0575 100644 --- a/server/publications/room.js +++ b/server/publications/room.js @@ -97,7 +97,7 @@ RocketChat.models.Rooms.cache.on('sync', (type, room/*, diff*/) => { }); RocketChat.models.Subscriptions.on('changed', (type, subscription/*, diff*/) => { - if (type === 'inserted') { + if (type === 'inserted' || type === 'removed') { const room = RocketChat.models.Rooms.findOneById(subscription.rid); if (room) { RocketChat.Notifications.notifyUserInThisInstance(subscription.u._id, 'rooms-changed', type, roomMap({_room: room}));