From 79ea4d6d1eca0bba58b086626046edfbef6cde7f Mon Sep 17 00:00:00 2001 From: Martin Filser Date: Sat, 4 Feb 2023 00:18:15 +0100 Subject: [PATCH] Move every Activities.findOne() to the ReactiveCache --- .../components/notifications/notification.js | 6 ++--- imports/reactiveCache.js | 23 +++++++++++++++++++ models/users.js | 2 +- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/client/components/notifications/notification.js b/client/components/notifications/notification.js index 5994123c9..220aa8c74 100644 --- a/client/components/notifications/notification.js +++ b/client/components/notifications/notification.js @@ -16,15 +16,15 @@ Template.notification.events({ Template.notification.helpers({ mode: 'board', isOfActivityType(activityId, type) { - const activity = Activities.findOne(activityId); + const activity = ReactiveCache.getActivity(activityId); return activity && activity.activityType === type; }, activityType(activityId) { - const activity = Activities.findOne(activityId); + const activity = ReactiveCache.getActivity(activityId); return activity ? activity.activityType : ''; }, activityUser(activityId) { - const activity = Activities.findOne(activityId); + const activity = ReactiveCache.getActivity(activityId); return activity && activity.userId; }, }); diff --git a/imports/reactiveCache.js b/imports/reactiveCache.js index e5ae9a988..fa001a512 100644 --- a/imports/reactiveCache.js +++ b/imports/reactiveCache.js @@ -43,6 +43,10 @@ ReactiveCacheServer = { const ret = Users.findOne(id); return ret; }, + getActivity(id) { + const ret = Activities.findOne(id); + return ret; + }, getCurrentSetting() { const ret = Settings.findOne(); return ret; @@ -157,6 +161,16 @@ ReactiveCacheClient = { const ret = this.__user.get(id); return ret; }, + getActivity(id) { + if (!this.__activity) { + this.__activity = new DataCache(_id => { + const _ret = Activities.findOne(_id); + return _ret; + }); + } + const ret = this.__activity.get(id); + return ret; + }, getCurrentSetting() { if (!this.__currentSetting || !this.__currentSetting.get()) { this.__currentSetting = new DataCache(() => { @@ -276,6 +290,15 @@ ReactiveCache = { } return ret; }, + getActivity(id) { + let ret; + if (Meteor.isServer) { + ret = ReactiveCacheServer.getActivity(id); + } else { + ret = ReactiveCacheClient.getActivity(id); + } + return ret; + }, getCurrentSetting() { let ret; if (Meteor.isServer) { diff --git a/models/users.js b/models/users.js index a27478ce3..7432a00aa 100644 --- a/models/users.js +++ b/models/users.js @@ -808,7 +808,7 @@ Users.helpers({ const notification = notifications[index]; // this preserves their db sort order for editing notification.dbIndex = index; - notification.activity = Activities.findOne(notification.activity); + notification.activity = ReactiveCache.getActivity(notification.activity); } // this sorts them newest to oldest to match Trello's behavior notifications.reverse();