Added 'duplicate' menu option

For now duplicates next to original document in the same collection
This commit is contained in:
Tom Moor
2018-06-05 06:57:26 -07:00
parent 45a2c03030
commit 2d02093f48
3 changed files with 34 additions and 0 deletions

View File

@@ -36,6 +36,10 @@ class DocumentMenu extends React.Component<Props> {
this.props.history.push(documentMoveUrl(this.props.document));
};
handleDuplicate = async (ev: SyntheticEvent<*>) => {
this.props.document.duplicate();
};
handlePin = (ev: SyntheticEvent<*>) => {
this.props.document.pin();
};
@@ -100,6 +104,9 @@ class DocumentMenu extends React.Component<Props> {
>
New child document
</DropdownMenuItem>
<DropdownMenuItem onClick={this.handleDuplicate}>
Duplicate
</DropdownMenuItem>
<DropdownMenuItem onClick={this.handleMove}>Move</DropdownMenuItem>
</React.Fragment>
)}

View File

@@ -270,6 +270,10 @@ class Document extends BaseModel {
return false;
};
duplicate = () => {
this.emit('documents.duplicate', this);
};
download() {
const a = window.document.createElement('a');
a.textContent = 'download';

View File

@@ -203,6 +203,26 @@ class DocumentsStore extends BaseStore {
}
};
@action
duplicate = async (document: Document): * => {
const res = await client.post('/documents.create', {
publish: true,
parentDocument: document.parentDocumentId,
collection: document.collection.id,
title: `${document.title} (duplicate)`,
text: document.text,
});
if (res && res.data) {
const duped = res.data;
this.emit('documents.create', duped);
this.emit('documents.publish', {
id: duped.id,
collectionId: duped.collection.id,
});
}
};
@action
add = (document: Document): void => {
this.data.set(document.id, document);
@@ -235,6 +255,9 @@ class DocumentsStore extends BaseStore {
this.on('documents.create', (data: Document) => {
this.add(new Document(data));
});
this.on('documents.duplicate', (data: Document) => {
this.duplicate(data);
});
// Re-fetch dashboard content so that we don't show deleted documents
this.on('collections.delete', () => {