summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--models/attachments.js35
-rw-r--r--models/cards.js12
-rw-r--r--server/migrations.js3
3 files changed, 42 insertions, 8 deletions
diff --git a/models/attachments.js b/models/attachments.js
index d469f702..1a55cb85 100644
--- a/models/attachments.js
+++ b/models/attachments.js
@@ -1,4 +1,5 @@
import { FilesCollection } from 'meteor/ostrio:files';
+const fs = require('fs');
const collectionName = 'attachments2';
@@ -19,6 +20,36 @@ if (Meteor.isServer) {
// TODO: Permission related
// TODO: Add Activity update
+ Meteor.methods({
+ cloneAttachment(file, overrides) {
+ check(file, Object);
+ check(overrides, Match.Maybe(Object));
+ const path = file.path;
+ const opts = {
+ fileName: file.name,
+ type: file.type,
+ meta: file.meta,
+ userId: file.userId
+ };
+ for (let key in overrides) {
+ if (key === 'meta') {
+ for (let metaKey in overrides.meta) {
+ opts.meta[metaKey] = overrides.meta[metaKey];
+ }
+ } else {
+ opts[key] = overrides[key];
+ }
+ }
+ const buffer = fs.readFileSync(path);
+ Attachments.write(buffer, opts, (err, fileRef) => {
+ if (err) {
+ console.log('Error when cloning record', err);
+ }
+ });
+ return true;
+ }
+ });
+
Meteor.publish(collectionName, function() {
return Attachments.find().cursor;
});
@@ -51,13 +82,13 @@ function onAttachmentUploaded(fileRef) {
} else {
// Don't add activity about adding the attachment as the activity
// be imported and delete source field
- CFSAttachments.update(
+ Attachments.collection.update(
{
_id: fileRef._id,
},
{
$unset: {
- source: '',
+ 'meta.source': '',
},
},
);
diff --git a/models/cards.js b/models/cards.js
index 1236de1a..ae52ff04 100644
--- a/models/cards.js
+++ b/models/cards.js
@@ -402,10 +402,14 @@ Cards.helpers({
const _id = Cards.insert(this);
// Copy attachments
- oldCard.attachments().forEach(att => {
- att.meta.cardId = _id;
- delete att._id;
- return Attachments.insert(att);
+ oldCard.attachments().forEach((file) => {
+ Meteor.call('cloneAttachment', file,
+ {
+ meta: {
+ cardId: _id
+ }
+ }
+ );
});
// copy checklists
diff --git a/server/migrations.js b/server/migrations.js
index e330f043..3577c78d 100644
--- a/server/migrations.js
+++ b/server/migrations.js
@@ -1061,6 +1061,7 @@ Migrations.add('change-attachment-library', () => {
let opts = {
fileName: file.name(),
type: file.type(),
+ size: file.size(),
fileId: file._id,
meta: {
userId: file.userId,
@@ -1077,8 +1078,6 @@ Migrations.add('change-attachment-library', () => {
Attachments.addFile(path, opts, (err, fileRef) => {
if (err) {
console.log('error when migrating ', fileName, err);
- } else {
- file.remove();
}
});
});