Skip to content
Snippets Groups Projects
Unverified Commit 624b451c authored by Bekerle, Patrizio's avatar Bekerle, Patrizio :fire:
Browse files

Integrate vpu-file-sink to download signed documents as zip file for the...

Integrate vpu-file-sink to download signed documents as zip file for the official signing process (#28)
parent 5e4e932a
No related branches found
No related tags found
No related merge requests found
Pipeline #11987 passed with warnings
...@@ -7,12 +7,14 @@ import {PdfPreview} from "./vpu-pdf-preview"; ...@@ -7,12 +7,14 @@ import {PdfPreview} from "./vpu-pdf-preview";
import * as commonUtils from 'vpu-common/utils'; import * as commonUtils from 'vpu-common/utils';
import * as utils from './utils'; import * as utils from './utils';
import {Button, Icon, MiniSpinner} from 'vpu-common'; import {Button, Icon, MiniSpinner} from 'vpu-common';
import FileSaver from 'file-saver';
import * as commonStyles from 'vpu-common/styles'; import * as commonStyles from 'vpu-common/styles';
import {classMap} from 'lit-html/directives/class-map.js'; import {classMap} from 'lit-html/directives/class-map.js';
import {FileSource} from 'vpu-file-handling'; import {FileSource} from 'vpu-file-handling';
import JSONLD from "vpu-common/jsonld"; import JSONLD from "vpu-common/jsonld";
import {TextSwitch} from './textswitch.js'; 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(); const i18n = createI18nInstance();
...@@ -44,6 +46,7 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(VPUSignatureLitElem ...@@ -44,6 +46,7 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(VPUSignatureLitElem
return { return {
'vpu-icon': Icon, 'vpu-icon': Icon,
'vpu-file-source': FileSource, 'vpu-file-source': FileSource,
'vpu-file-sink': FileSink,
'vpu-pdf-preview': PdfPreview, 'vpu-pdf-preview': PdfPreview,
'vpu-mini-spinner': MiniSpinner, 'vpu-mini-spinner': MiniSpinner,
'vpu-button': Button, 'vpu-button': Button,
...@@ -253,34 +256,6 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(VPUSignatureLitElem ...@@ -253,34 +256,6 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(VPUSignatureLitElem
this.lang = e.detail.lang; 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 * Re-Upload all failed files
*/ */
...@@ -861,6 +836,11 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(VPUSignatureLitElem ...@@ -861,6 +836,11 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(VPUSignatureLitElem
<div class="${classMap({hidden: !this.isLoading()})}"> <div class="${classMap({hidden: !this.isLoading()})}">
<vpu-mini-spinner></vpu-mini-spinner> <vpu-mini-spinner></vpu-mini-spinner>
</div> </div>
<vpu-file-sink id="file-sink"
nextcloud-auth-url="${this.showTestNextcloudFilePicker ? nextcloudWebAppPasswordURL : ""}"
nextcloud-web-dav-url="${nextcloudWebDavURL}"
lang="${this.lang}"
></vpu-file-sink>
`; `;
} }
} }
......
import {LitElement} from "lit-element"; import {LitElement} from "lit-element";
import {EventBus} from 'vpu-common'; import {EventBus} from 'vpu-common';
import buildinfo from 'consts:buildinfo';
import * as utils from "./utils";
export default class VPUSignatureLitElement extends LitElement { export default class VPUSignatureLitElement extends LitElement {
constructor() { constructor() {
...@@ -12,6 +14,8 @@ export default class VPUSignatureLitElement extends LitElement { ...@@ -12,6 +14,8 @@ export default class VPUSignatureLitElement extends LitElement {
// will be set in function update // will be set in function update
this.fileSourceUrl = ""; this.fileSourceUrl = "";
this.showTestNextcloudFilePicker = buildinfo.env === 'local';
} }
/** /**
...@@ -200,4 +204,23 @@ export default class VPUSignatureLitElement extends LitElement { ...@@ -200,4 +204,23 @@ export default class VPUSignatureLitElement extends LitElement {
return organization !== null ? organization.alternateName : ""; 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();
}
} }
Subproject commit 2374986a58762ae47ff115b2a6a863878b20d3cd Subproject commit 63b49c3a2eeae312b4a2aeec4cc2f7f0ee12b749
Subproject commit 39d039c761f484c6028dea6b2e0c064f04662af4 Subproject commit a2dcbdcac25ab88561aec86d6b7863e27deaddd1
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment