From 2f605c9a4cdbf040dcdcf288fa501ee2f47badbe Mon Sep 17 00:00:00 2001 From: David Arnold Date: Sun, 13 Sep 2020 17:05:40 -0500 Subject: [PATCH] Ref: Avatars to use modern gridfs --- models/avatars.js | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/models/avatars.js b/models/avatars.js index 2fda031dd..b4c24ded8 100644 --- a/models/avatars.js +++ b/models/avatars.js @@ -1,29 +1,34 @@ -Avatars = new FS.Collection('avatars', { - stores: [new FS.Store.GridFS('avatars')], - filter: { - maxSize: 72000, - allow: { - contentTypes: ['image/*'], - }, +import { Meteor } from 'meteor/meteor'; +import { FilesCollection } from 'meteor/ostrio:files'; +import { createBucket } from './lib/grid/createBucket'; +import { createOnAfterUpload } from './lib/fsHooks/createOnAfterUpload'; +import { createInterceptDownload } from './lib/fsHooks/createInterceptDownload'; +import { createOnAfterRemove } from './lib/fsHooks/createOnAfterRemove'; + +const avatarsBucket = createBucket('avatars'); + +export const Avatars = new FilesCollection({ + debug: false, // Change to `true` for debugging + collectionName: 'avatars', + allowClientCode: false, + onBeforeUpload(file) { + if (file.size <= 72000 && file.isImage) return true; + return 'Please upload image, with size equal or less than 72KB'; }, + onAfterUpload: createOnAfterUpload(avatarsBucket), + interceptDownload: createInterceptDownload(avatarsBucket), + onAfterRemove: createOnAfterRemove(avatarsBucket), }); -function isOwner(userId, file) { - return userId && userId === file.userId; +function isOwner(userId, doc) { + return userId && userId === doc.userId; } Avatars.allow({ insert: isOwner, update: isOwner, remove: isOwner, - download() { - return true; - }, fetch: ['userId'], }); -Avatars.files.before.insert((userId, doc) => { - doc.userId = userId; -}); - export default Avatars;