diff --git a/imports/reactiveCache.js b/imports/reactiveCache.js index bac446a22..0ac95c92f 100644 --- a/imports/reactiveCache.js +++ b/imports/reactiveCache.js @@ -1410,6 +1410,28 @@ ReactiveMiniMongoIndex = { } } return ret; + }, + getActivityWithId(activityId, addSelect = {}, options) { + let ret = [] + if (activityId) { + const select = {addSelect, options} + if (!this.__activityWithId) { + this.__activityWithId = new DataCache(_select => { + const __select = EJSON.parse(_select); + const _activities = ReactiveCache.getActivities( + { _id: { $exists: true }, + ...__select.addSelect, + }, __select.options); + const _ret = _.indexBy(_activities, '_id') + return _ret; + }); + } + ret = this.__activityWithId.get(EJSON.stringify(select)); + if (ret) { + ret = ret[activityId]; + } + } + return ret; } } diff --git a/models/users.js b/models/users.js index 3c48241a4..392ca4e91 100644 --- a/models/users.js +++ b/models/users.js @@ -1,4 +1,4 @@ -import { ReactiveCache } from '/imports/reactiveCache'; +import { ReactiveCache, ReactiveMiniMongoIndex } from '/imports/reactiveCache'; import { SyncedCron } from 'meteor/percolate:synced-cron'; import { TAPi18n } from '/imports/i18n'; import ImpersonatedUsers from './impersonatedUsers'; @@ -853,7 +853,7 @@ Users.helpers({ // this preserves their db sort order for editing notification.dbIndex = index; if (!notification.activityObj && typeof(notification.activity) === 'string') { - notification.activityObj = ReactiveCache.getActivity(notification.activity); + notification.activityObj = ReactiveMiniMongoIndex.getActivityWithId(notification.activity); } } // this sorts them newest to oldest to match Trello's behavior