Commit 7ab24815 authored by Gabriel Engel's avatar Gabriel Engel

Merge branch 'develop'

parents 0e72c4d0 e76d2df4
......@@ -6,7 +6,6 @@ BlazeLayout.setRoot 'body'
FlowRouter.subscriptions = ->
Tracker.autorun =>
if Meteor.userId()
RoomManager.init()
@register 'userData', Meteor.subscribe('userData')
@register 'activeUsers', Meteor.subscribe('activeUsers')
......
RocketChat.authz.cachedCollection = new RocketChat.CachedCollection({ name: 'permissions', eventType: 'onAll' })
RocketChat.authz.cachedCollection = new RocketChat.CachedCollection({ name: 'permissions', eventType: 'onAll', initOnLogin: true })
@ChatPermissions = RocketChat.authz.cachedCollection.collection
RocketChat.authz.cachedCollection.init()
......@@ -4,12 +4,26 @@ class CachedCollectionManager {
constructor() {
this.items = [];
this._syncEnabled = false;
this.loginCb = [];
this.logged = false;
const _unstoreLoginToken = Accounts._unstoreLoginToken;
Accounts._unstoreLoginToken = (...args) => {
_unstoreLoginToken.apply(Accounts, args);
this.clearAllCache();
this.clearAllCacheOnLogout();
};
Tracker.autorun(() => {
if (Meteor.userId() !== null) {
if (this.logged === false) {
for (const cb of this.loginCb) {
cb();
}
}
}
this.logged = Meteor.userId() !== null;
});
}
register(cachedCollection) {
......@@ -22,6 +36,12 @@ class CachedCollectionManager {
}
}
clearAllCacheOnLogout() {
for (const item of this.items) {
item.clearCacheOnLogout();
}
}
countQueries() {
for (const item of this.items) {
item.countQueries();
......@@ -36,6 +56,13 @@ class CachedCollectionManager {
get syncEnabled() {
return this._syncEnabled;
}
onLogin(cb) {
this.loginCb.push(cb);
if (this.logged) {
cb();
}
}
}
RocketChat.CachedCollectionManager = new CachedCollectionManager;
......@@ -49,6 +76,7 @@ class CachedCollection {
syncMethodName,
eventName,
eventType = 'onUser',
initOnLogin = false,
useSync = true,
useCache = true,
debug = true,
......@@ -67,10 +95,21 @@ class CachedCollection {
this.useCache = useCache;
this.debug = debug;
this.version = version;
this.initOnLogin = initOnLogin;
this.updatedAt = new Date(0);
this.maxCacheTime = maxCacheTime;
RocketChat.CachedCollectionManager.register(this);
if (initOnLogin === true) {
RocketChat.CachedCollectionManager.onLogin(() => {
this.log('Init on login');
this.ready.set(false);
this.updatedAt = new Date(0);
this.initiated = false;
this.init();
});
}
}
log(...args) {
......@@ -209,9 +248,16 @@ class CachedCollection {
this.log('saving cache (done)');
}
clearCacheOnLogout() {
if (this.initOnLogin === true) {
this.clearCache();
}
}
clearCache() {
this.log('clearing cache');
localforage.removeItem(this.name);
this.collection.remove({});
}
setupListener(eventType, eventName) {
......
......@@ -55,14 +55,6 @@ Tracker.autorun ->
Dep = new Tracker.Dependency
init = ->
if CachedChatSubscription.ready.get()
return
CachedChatSubscription.init()
return
close = (typeName) ->
if openedRooms[typeName]
if openedRooms[typeName].sub?
......@@ -245,7 +237,6 @@ Tracker.autorun ->
open: open
close: close
closeAllRooms: closeAllRooms
init: init
getDomOfRoom: getDomOfRoom
existsDomOfRoom: existsDomOfRoom
msgStream: msgStream
......
@ChatMessage = new Meteor.Collection null
@ChatRoom = new Meteor.Collection 'rocketchat_room'
@CachedChatSubscription = new RocketChat.CachedCollection({ name: 'subscriptions' })
@CachedChatSubscription = new RocketChat.CachedCollection({ name: 'subscriptions', initOnLogin: true })
@ChatSubscription = CachedChatSubscription.collection
@UserRoles = new Mongo.Collection null
@RoomRoles = new Mongo.Collection null
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment