Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
engelgabriel committed Aug 15, 2016
2 parents 0e72c4d + e76d2df commit 7ab2481
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 15 deletions.
1 change: 0 additions & 1 deletion client/routes/router.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -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')

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,2 @@
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()
48 changes: 47 additions & 1 deletion packages/rocketchat-lib/client/lib/cachedCollection.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -22,6 +36,12 @@ class CachedCollectionManager {
}
}

clearAllCacheOnLogout() {
for (const item of this.items) {
item.clearCacheOnLogout();
}
}

countQueries() {
for (const item of this.items) {
item.countQueries();
Expand All @@ -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;
Expand All @@ -49,6 +76,7 @@ class CachedCollection {
syncMethodName,
eventName,
eventType = 'onUser',
initOnLogin = false,
useSync = true,
useCache = true,
debug = true,
Expand All @@ -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) {
Expand Down Expand Up @@ -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) {
Expand Down
9 changes: 0 additions & 9 deletions packages/rocketchat-ui/lib/RoomManager.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -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?
Expand Down Expand Up @@ -245,7 +237,6 @@ Tracker.autorun ->
open: open
close: close
closeAllRooms: closeAllRooms
init: init
getDomOfRoom: getDomOfRoom
existsDomOfRoom: existsDomOfRoom
msgStream: msgStream
Expand Down
2 changes: 1 addition & 1 deletion packages/rocketchat-ui/lib/collections.coffee
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
@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
Expand Down

0 comments on commit 7ab2481

Please sign in to comment.