Card clone OK

This commit is contained in:
Romulus Urakagi Tsai 2020-05-14 14:55:54 +08:00
parent 012ca39a8d
commit 4c5a2fbd1f
3 changed files with 42 additions and 8 deletions

View file

@ -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': '',
},
},
);

View file

@ -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

View file

@ -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();
}
});
});