diff --git a/src/vpu-official-signature-pdf-upload.js b/src/vpu-official-signature-pdf-upload.js index cafa7687f89fc8697914a3b9571f9f964e5b2ceb..fa4415ce66d99c66a11391c13f027850cb5aa79b 100644 --- a/src/vpu-official-signature-pdf-upload.js +++ b/src/vpu-official-signature-pdf-upload.js @@ -7,12 +7,14 @@ import {PdfPreview} from "./vpu-pdf-preview"; import * as commonUtils from 'vpu-common/utils'; import * as utils from './utils'; import {Button, Icon, MiniSpinner} from 'vpu-common'; -import FileSaver from 'file-saver'; import * as commonStyles from 'vpu-common/styles'; import {classMap} from 'lit-html/directives/class-map.js'; import {FileSource} from 'vpu-file-handling'; import JSONLD from "vpu-common/jsonld"; import {TextSwitch} from './textswitch.js'; +import nextcloudWebAppPasswordURL from 'consts:nextcloudWebAppPasswordURL'; +import nextcloudWebDavURL from 'consts:nextcloudWebDavURL'; +import {FileSink} from "../vendor/file-handling/src/file-sink"; const i18n = createI18nInstance(); @@ -44,6 +46,7 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(VPUSignatureLitElem return { 'vpu-icon': Icon, 'vpu-file-source': FileSource, + 'vpu-file-sink': FileSink, 'vpu-pdf-preview': PdfPreview, 'vpu-mini-spinner': MiniSpinner, 'vpu-button': Button, @@ -253,34 +256,6 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(VPUSignatureLitElem this.lang = e.detail.lang; } - /** - * Download signed pdf-files as zip - */ - async zipDownloadClickHandler() { - // see: https://stuk.github.io/jszip/ - let JSZip = (await import('jszip/dist/jszip.js')).default; - let zip = new JSZip(); - const that = this; - let fileNames = []; - - // add all signed pdf-files - this.signedFiles.forEach((file) => { - let fileName = file.name; - - // add pseudo-random string on duplicate file name - if (fileNames.indexOf(fileName) !== -1) { - fileName = utils.baseName(fileName) + "-" + Math.random().toString(36).substring(7) + ".pdf"; - } - - fileNames.push(fileName); - zip.file(fileName, utils.getPDFFileBase64Content(file), {base64: true}); - }); - - let content = await zip.generateAsync({type:"blob"}); - FileSaver.saveAs(content, "signed-documents.zip"); - that._("#zip-download-button").stop(); - } - /** * Re-Upload all failed files */ @@ -861,6 +836,11 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(VPUSignatureLitElem <div class="${classMap({hidden: !this.isLoading()})}"> <vpu-mini-spinner></vpu-mini-spinner> </div> + <vpu-file-sink id="file-sink" + nextcloud-auth-url="${this.showTestNextcloudFilePicker ? nextcloudWebAppPasswordURL : ""}" + nextcloud-web-dav-url="${nextcloudWebDavURL}" + lang="${this.lang}" + ></vpu-file-sink> `; } } diff --git a/src/vpu-signature-lit-element.js b/src/vpu-signature-lit-element.js index b1d85636988d162fcf9b4405cc4531bc4b4197c2..6baa988da7499359eb1b31bf01cd537014d896ea 100644 --- a/src/vpu-signature-lit-element.js +++ b/src/vpu-signature-lit-element.js @@ -1,5 +1,7 @@ import {LitElement} from "lit-element"; import {EventBus} from 'vpu-common'; +import buildinfo from 'consts:buildinfo'; +import * as utils from "./utils"; export default class VPUSignatureLitElement extends LitElement { constructor() { @@ -12,6 +14,8 @@ export default class VPUSignatureLitElement extends LitElement { // will be set in function update this.fileSourceUrl = ""; + + this.showTestNextcloudFilePicker = buildinfo.env === 'local'; } /** @@ -200,4 +204,23 @@ export default class VPUSignatureLitElement extends LitElement { return organization !== null ? organization.alternateName : ""; } + + /** + * Download signed pdf-files as zip + */ + async zipDownloadClickHandler() { + let files = []; + + // add all signed pdf-files + this.signedFiles.forEach((file) => { + const arr = utils.convertDataURIToBinary(file.contentUrl); + const binaryFile = new File([arr], file.name, { type: utils.getDataURIContentType(file.contentUrl) }); + files.push(binaryFile); + }); + + const detail = { "files": files, "filename": "signed-documents.zip" }; + const event = new CustomEvent("vpu-file-sink-download-compressed-files", { "detail": detail }); + this._("#file-sink").dispatchEvent(event); + this._("#zip-download-button").stop(); + } } diff --git a/vendor/common b/vendor/common index 2374986a58762ae47ff115b2a6a863878b20d3cd..63b49c3a2eeae312b4a2aeec4cc2f7f0ee12b749 160000 --- a/vendor/common +++ b/vendor/common @@ -1 +1 @@ -Subproject commit 2374986a58762ae47ff115b2a6a863878b20d3cd +Subproject commit 63b49c3a2eeae312b4a2aeec4cc2f7f0ee12b749 diff --git a/vendor/file-handling b/vendor/file-handling index 39d039c761f484c6028dea6b2e0c064f04662af4..a2dcbdcac25ab88561aec86d6b7863e27deaddd1 160000 --- a/vendor/file-handling +++ b/vendor/file-handling @@ -1 +1 @@ -Subproject commit 39d039c761f484c6028dea6b2e0c064f04662af4 +Subproject commit a2dcbdcac25ab88561aec86d6b7863e27deaddd1