Просмотр исходного кода

Move every Attachments.findOne() to the ReactiveCache

Martin Filser 2 лет назад
Родитель
Сommit
3fc9c6efe7

+ 1 - 1
client/components/cards/attachments.js

@@ -66,7 +66,7 @@ function getPrevAttachmentId(currentAttachmentId) {
 
 function openAttachmentViewer(attachmentId){
 
-    const attachment = Attachments.findOne({_id: attachmentId});
+    const attachment = ReactiveCache.getAttachment(attachmentId);
 
     $("#attachment-name").text(attachment.name);
 

+ 23 - 0
imports/reactiveCache.js

@@ -39,6 +39,10 @@ ReactiveCacheServer = {
     const ret = CustomFields.find(selector).fetch();
     return ret;
   },
+  getAttachment(id) {
+    const ret = Attachments.findOne(id);
+    return ret;
+  },
   getUser(id) {
     const ret = Users.findOne(id);
     return ret;
@@ -159,6 +163,16 @@ ReactiveCacheClient = {
     const ret = this.__customFields.get(Jsons.stringify(selector));
     return ret;
   },
+  getAttachment(id) {
+    if (!this.__attachment) {
+      this.__attachment = new DataCache(_id => {
+        const _ret = Attachments.findOne(_id);
+        return _ret;
+      });
+    }
+    const ret = this.__attachment.get(id);
+    return ret;
+  },
   getUser(id) {
     if (!this.__user) {
       this.__user = new DataCache(userId => {
@@ -309,6 +323,15 @@ ReactiveCache = {
     }
     return ret;
   },
+  getAttachment(id) {
+    let ret;
+    if (Meteor.isServer) {
+      ret = ReactiveCacheServer.getAttachment(id);
+    } else {
+      ret = ReactiveCacheClient.getAttachment(id);
+    }
+    return ret;
+  },
   getUser(id) {
     let ret;
     if (Meteor.isServer) {

+ 1 - 1
models/activities.js

@@ -44,7 +44,7 @@ Activities.helpers({
     return ReactiveCache.getCardComment(this.commentId);
   },
   attachment() {
-    return Attachments.findOne(this.attachmentId);
+    return ReactiveCache.getAttachment(this.attachmentId);
   },
   checklist() {
     return Checklists.findOne(this.checklistId);

+ 4 - 4
models/attachments.js

@@ -151,20 +151,20 @@ if (Meteor.isServer) {
       check(fileObjId, String);
       check(storageDestination, String);
 
-      const fileObj = Attachments.findOne({_id: fileObjId});
+      const fileObj = ReactiveCache.getAttachment(fileObjId);
       moveToStorage(fileObj, storageDestination, fileStoreStrategyFactory);
     },
     renameAttachment(fileObjId, newName) {
       check(fileObjId, String);
       check(newName, String);
 
-      const fileObj = Attachments.findOne({_id: fileObjId});
+      const fileObj = ReactiveCache.getAttachment(fileObjId);
       rename(fileObj, newName, fileStoreStrategyFactory);
     },
     validateAttachment(fileObjId) {
       check(fileObjId, String);
 
-      const fileObj = Attachments.findOne({_id: fileObjId});
+      const fileObj = ReactiveCache.getAttachment(fileObjId);
       const isValid = Promise.await(isFileValid(fileObj, attachmentUploadMimeTypes, attachmentUploadSize, attachmentUploadExternalProgram));
 
       if (!isValid) {
@@ -177,7 +177,7 @@ if (Meteor.isServer) {
 
       Meteor.call('validateAttachment', fileObjId);
 
-      const fileObj = Attachments.findOne({_id: fileObjId});
+      const fileObj = ReactiveCache.getAttachment(fileObjId);
 
       if (fileObj) {
         Meteor.defer(() => Meteor.call('moveAttachmentToStorage', fileObjId, storageDestination));

+ 1 - 1
models/cards.js

@@ -804,7 +804,7 @@ Cards.helpers({
 
   cover() {
     if (!this.coverId) return false;
-    const cover = Attachments.findOne(this.coverId);
+    const cover = ReactiveCache.getAttachment(this.coverId);
     // if we return a cover before it is fully stored, we will get errors when we try to display it
     // todo XXX we could return a default "upload pending" image in the meantime?
     return cover && cover.link() && cover;