From 076dbbd999354b3eb28199c6634b135b50bd7f31 Mon Sep 17 00:00:00 2001 From: Eugen Ciur <eugen@papermerge.com> Date: Tue, 16 Nov 2021 20:55:55 +0100 Subject: [PATCH] update files --- app/adapters/document.js | 16 ++++++++++++++++ app/components/button/upload.js | 20 ++++++++++---------- app/routes/authenticated/document.js | 2 +- 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/app/adapters/document.js b/app/adapters/document.js index f0b1aab..f5ec3ec 100644 --- a/app/adapters/document.js +++ b/app/adapters/document.js @@ -14,4 +14,20 @@ export default class NodeAdapter extends ApplicationAdapter { return ret; }); } + + uploadFile({doc, file}) { + let build_url, url, headers; + + headers = this.headers; + headers['Content-Disposition'] = `attachment; filename=${file.name}`; + + build_url = this.buildURL('documents', doc.id); + url = `${build_url}upload/${file.name}`; + + return fetch(url, { + method: 'PUT', + body: file, + headers: headers + }); + } } diff --git a/app/components/button/upload.js b/app/components/button/upload.js index 7645086..2f10ec2 100644 --- a/app/components/button/upload.js +++ b/app/components/button/upload.js @@ -30,8 +30,6 @@ export default class UploadButtonComponent extends Component { @action onUploadChange(event) { let files; - console.log(this.args.node.id); - console.log(event.target.files); files = event.target.files; @@ -41,22 +39,22 @@ export default class UploadButtonComponent extends Component { } Array.from(files, (file) => { - let new_doc; - /* Upload of documents to the server side is two stage process: (1.) create document model on the server side (2.) upload file and associated it with model created in (1.) */ - new_doc = this._createDocumentModel({ + this._createDocumentModel({ file: file, node: this.args.node, lang: "deu" + }).then((doc) => { + this._uploadFile({doc, file}); }); - this._uploadFile({doc: new_doc, file: file}); + }); } - _createDocumentModel({file, node, lang}) { + async _createDocumentModel({file, node, lang}) { /* Creates document model on the server side. @@ -78,9 +76,7 @@ export default class UploadButtonComponent extends Component { new_doc.parent = node; new_doc.lang = lang; - new_doc.save(); - - return new_doc; + return new_doc.save(); } _uploadFile({file, doc}) { @@ -89,6 +85,10 @@ export default class UploadButtonComponent extends Component { Document model ``doc`` should exist on the server side. */ + let doc_adapter = this.store.adapterFor('document'); + + + doc_adapter.uploadFile({file, doc}); } } \ No newline at end of file diff --git a/app/routes/authenticated/document.js b/app/routes/authenticated/document.js index 1bb1975..4695eb5 100644 --- a/app/routes/authenticated/document.js +++ b/app/routes/authenticated/document.js @@ -61,7 +61,7 @@ export default class DocumentRoute extends Route { return { 'document_version': document_version, 'pages': pages_with_url - } + }; } renderTemplate() { -- GitLab