Skip to content
Snippets Groups Projects
Commit 8cfedaa7 authored by Steinwender, Tamara's avatar Steinwender, Tamara
Browse files

Add checks in filehandling when accessing dom

parent 5a6b94e8
Branches
No related tags found
No related merge requests found
Pipeline #25630 passed
...@@ -35,7 +35,6 @@ export class FileSink extends ScopedElementsMixin(DBPLitElement) { ...@@ -35,7 +35,6 @@ export class FileSink extends ScopedElementsMixin(DBPLitElement) {
this.isDialogOpen = false; this.isDialogOpen = false;
this.enabledTargets = 'local'; this.enabledTargets = 'local';
this.firstOpen = true; this.firstOpen = true;
this.showClipboard = false;
this.fullsizeModal = false; this.fullsizeModal = false;
this.initialFileHandlingState = {target: '', path: ''}; this.initialFileHandlingState = {target: '', path: ''};
...@@ -71,7 +70,6 @@ export class FileSink extends ScopedElementsMixin(DBPLitElement) { ...@@ -71,7 +70,6 @@ export class FileSink extends ScopedElementsMixin(DBPLitElement) {
activeTarget: {type: String, attribute: 'active-target'}, activeTarget: {type: String, attribute: 'active-target'},
firstOpen: {type: Boolean, attribute: false}, firstOpen: {type: Boolean, attribute: false},
nextcloudPath: {type: String, attribute: false}, nextcloudPath: {type: String, attribute: false},
showClipboard: { type: Boolean, attribute: 'show-clipboard' },
fullsizeModal: { type: Boolean, attribute: 'fullsize-modal' }, fullsizeModal: { type: Boolean, attribute: 'fullsize-modal' },
initialFileHandlingState: {type: Object, attribute: 'initial-file-handling-state'}, initialFileHandlingState: {type: Object, attribute: 'initial-file-handling-state'},
...@@ -84,8 +82,6 @@ export class FileSink extends ScopedElementsMixin(DBPLitElement) { ...@@ -84,8 +82,6 @@ export class FileSink extends ScopedElementsMixin(DBPLitElement) {
super.connectedCallback(); super.connectedCallback();
this.updateComplete.then(() => { this.updateComplete.then(() => {
console.log("initialFileHandlingState", this.initialFileHandlingState);
}); });
} }
...@@ -137,12 +133,14 @@ export class FileSink extends ScopedElementsMixin(DBPLitElement) { ...@@ -137,12 +133,14 @@ export class FileSink extends ScopedElementsMixin(DBPLitElement) {
break; break;
case "files": case "files":
if (this.files.length !== 0 && !this.isDialogOpen) { if (this.files.length !== 0 && !this.isDialogOpen) {
console.log("--------------", this.files);
this.openDialog(); this.openDialog();
if (this.showClipboard && this.enabledTargets.includes("clipboard")) { if (this.enabledTargets.includes("clipboard")) {
const clipboardSink = this._("#clipboard-file-sink");
if (clipboardSink) {
this._("#clipboard-file-sink").filesToSave = this.files; this._("#clipboard-file-sink").filesToSave = this.files;
} }
} }
}
break; break;
case "initialFileHandlingState": case "initialFileHandlingState":
//check if default destination is set //check if default destination is set
...@@ -198,6 +196,7 @@ export class FileSink extends ScopedElementsMixin(DBPLitElement) { ...@@ -198,6 +196,7 @@ export class FileSink extends ScopedElementsMixin(DBPLitElement) {
} }
loadWebdavDirectory() { loadWebdavDirectory() {
const filePicker = this._('#nextcloud-file-picker'); const filePicker = this._('#nextcloud-file-picker');
if (filePicker && filePicker.webDavClient !== null) { if (filePicker && filePicker.webDavClient !== null) {
...@@ -207,37 +206,35 @@ export class FileSink extends ScopedElementsMixin(DBPLitElement) { ...@@ -207,37 +206,35 @@ export class FileSink extends ScopedElementsMixin(DBPLitElement) {
openDialog() { openDialog() {
this.loadWebdavDirectory(); this.loadWebdavDirectory();
MicroModal.show(this._('#modal-picker'), { const filePicker = this._('#modal-picker');
if (filePicker) {
MicroModal.show(filePicker, {
disableScroll: true, disableScroll: true,
onClose: modal => { this.isDialogOpen = false; }, onClose: modal => { this.isDialogOpen = false; },
}); });
}
console.log("initialFileHandlingState", this.initialFileHandlingState);
//check if default destination is set //check if default destination is set
if (this.initialFileHandlingState.target !== '' && typeof this.initialFileHandlingState.target !== 'undefined' && this.firstOpen) { if (this.initialFileHandlingState.target !== '' && typeof this.initialFileHandlingState.target !== 'undefined' && this.firstOpen) {
this.activeTarget = this.initialFileHandlingState.target; this.activeTarget = this.initialFileHandlingState.target;
this.nextcloudPath = this.initialFileHandlingState.path; this.nextcloudPath = this.initialFileHandlingState.path;
const filePicker = this._('#nextcloud-file-picker'); const filePicker = this._('#nextcloud-file-picker');
if (filePicker && filePicker.webDavClient !== null) { if (filePicker && filePicker.webDavClient !== null) {
filePicker.loadDirectory(this.initialFileHandlingState.path); filePicker.loadDirectory(this.initialFileHandlingState.path);
console.log("load default nextcloud sink", this.initialFileHandlingState.path);
} }
this.firstOpen = false; this.firstOpen = false;
} }
} }
closeDialog(e) { closeDialog(e) {
console.log("close start");
this.sendDestination(); this.sendDestination();
MicroModal.close(this._('#modal-picker')); MicroModal.close(this._('#modal-picker'));
console.log("close end");
} }
getClipboardHtml() { getClipboardHtml() {
if (this.enabledTargets.includes('clipboard') && this.showClipboard) { if (this.enabledTargets.includes('clipboard')) {
return html` return html`
<dbp-clipboard <dbp-clipboard
id="clipboard-file-sink" id="clipboard-file-sink"
...@@ -323,7 +320,6 @@ export class FileSink extends ScopedElementsMixin(DBPLitElement) { ...@@ -323,7 +320,6 @@ export class FileSink extends ScopedElementsMixin(DBPLitElement) {
} }
render() { render() {
const isClipboardHidden = !this.showClipboard;
return html` return html`
<vpu-notification lang="de" client-id="my-client-id"></vpu-notification> <vpu-notification lang="de" client-id="my-client-id"></vpu-notification>
...@@ -345,7 +341,7 @@ export class FileSink extends ScopedElementsMixin(DBPLitElement) { ...@@ -345,7 +341,7 @@ export class FileSink extends ScopedElementsMixin(DBPLitElement) {
</div> </div>
<div title="Clipboard" <div title="Clipboard"
@click="${() => { this.activeTarget = "clipboard"; }}" @click="${() => { this.activeTarget = "clipboard"; }}"
class="${classMap({"active": this.activeTarget === "clipboard", hidden: (!this.hasEnabledDestination("clipboard") || isClipboardHidden) })}"> class="${classMap({"active": this.activeTarget === "clipboard", hidden: (!this.hasEnabledDestination("clipboard")) })}">
<dbp-icon class="nav-icon" name="clipboard"></dbp-icon> <dbp-icon class="nav-icon" name="clipboard"></dbp-icon>
<p>Clipboard</p> <p>Clipboard</p>
</div> </div>
...@@ -374,7 +370,7 @@ export class FileSink extends ScopedElementsMixin(DBPLitElement) { ...@@ -374,7 +370,7 @@ export class FileSink extends ScopedElementsMixin(DBPLitElement) {
<div class="source-main ${classMap({"hidden": this.activeTarget !== "nextcloud" || this.nextcloudWebDavUrl === "" || this.nextcloudAuthUrl === ""})}"> <div class="source-main ${classMap({"hidden": this.activeTarget !== "nextcloud" || this.nextcloudWebDavUrl === "" || this.nextcloudAuthUrl === ""})}">
${this.getNextcloudHtml()} ${this.getNextcloudHtml()}
</div> </div>
<div class="source-main ${classMap({"hidden": this.activeTarget !== "clipboard" || isClipboardHidden})}"> <div class="source-main ${classMap({"hidden": this.activeTarget !== "clipboard"})}">
${this.getClipboardHtml()} ${this.getClipboardHtml()}
</div> </div>
</main> </main>
......
...@@ -54,7 +54,6 @@ export class FileSource extends ScopedElementsMixin(DBPLitElement) { ...@@ -54,7 +54,6 @@ export class FileSource extends ScopedElementsMixin(DBPLitElement) {
this.activeTarget = 'local'; this.activeTarget = 'local';
this.isDialogOpen = false; this.isDialogOpen = false;
this.firstOpen = true; this.firstOpen = true;
this.showClipboard = false;
this.initialFileHandlingState = {target: '', path: ''}; this.initialFileHandlingState = {target: '', path: ''};
...@@ -90,7 +89,6 @@ export class FileSource extends ScopedElementsMixin(DBPLitElement) { ...@@ -90,7 +89,6 @@ export class FileSource extends ScopedElementsMixin(DBPLitElement) {
decompressZip: { type: Boolean, attribute: 'decompress-zip' }, decompressZip: { type: Boolean, attribute: 'decompress-zip' },
activeTarget: { type: String, attribute: 'active-target' }, activeTarget: { type: String, attribute: 'active-target' },
isDialogOpen: { type: Boolean, attribute: 'dialog-open' }, isDialogOpen: { type: Boolean, attribute: 'dialog-open' },
showClipboard: { type: Boolean, attribute: 'show-clipboard' },
initialFileHandlingState: {type: Object, attribute: 'initial-file-handling-state'}, initialFileHandlingState: {type: Object, attribute: 'initial-file-handling-state'},
}; };
...@@ -366,7 +364,6 @@ export class FileSource extends ScopedElementsMixin(DBPLitElement) { ...@@ -366,7 +364,6 @@ export class FileSource extends ScopedElementsMixin(DBPLitElement) {
loadWebdavDirectory() { loadWebdavDirectory() {
const filePicker = this._('#nextcloud-file-picker'); const filePicker = this._('#nextcloud-file-picker');
// check if element is already in the dom (for example if "dialog-open" attribute is set) // check if element is already in the dom (for example if "dialog-open" attribute is set)
if (filePicker && filePicker.webDavClient !== null) { if (filePicker && filePicker.webDavClient !== null) {
filePicker.loadDirectory(filePicker.directoryPath); filePicker.loadDirectory(filePicker.directoryPath);
...@@ -378,7 +375,7 @@ export class FileSource extends ScopedElementsMixin(DBPLitElement) { ...@@ -378,7 +375,7 @@ export class FileSource extends ScopedElementsMixin(DBPLitElement) {
this.loadWebdavDirectory(); this.loadWebdavDirectory();
} }
if (this.enabledTargets.includes('clipboard') && this.showClipboard) { if (this.enabledTargets.includes('clipboard') && this._("#clipboard-file-picker")) {
this._("#clipboard-file-picker").generateClipboardTable(); this._("#clipboard-file-picker").generateClipboardTable();
this._("#clipboard-file-picker").showSelectAllButton = true; this._("#clipboard-file-picker").showSelectAllButton = true;
} }
...@@ -391,6 +388,7 @@ export class FileSource extends ScopedElementsMixin(DBPLitElement) { ...@@ -391,6 +388,7 @@ export class FileSource extends ScopedElementsMixin(DBPLitElement) {
disableScroll: true, disableScroll: true,
onClose: modal => { onClose: modal => {
this.isDialogOpen = false; this.isDialogOpen = false;
const filePicker = this._('#nextcloud-file-picker'); const filePicker = this._('#nextcloud-file-picker');
if (filePicker) { if (filePicker) {
...@@ -426,7 +424,7 @@ export class FileSource extends ScopedElementsMixin(DBPLitElement) { ...@@ -426,7 +424,7 @@ export class FileSource extends ScopedElementsMixin(DBPLitElement) {
} }
getClipboardHtml() { getClipboardHtml() {
if (this.enabledTargets.includes('clipboard') && this.showClipboard) { if (this.enabledTargets.includes('clipboard')) {
return html` return html`
<dbp-clipboard <dbp-clipboard
id="clipboard-file-picker" id="clipboard-file-picker"
...@@ -519,7 +517,6 @@ export class FileSource extends ScopedElementsMixin(DBPLitElement) { ...@@ -519,7 +517,6 @@ export class FileSource extends ScopedElementsMixin(DBPLitElement) {
render() { render() {
let allowedMimeTypes = this.allowedMimeTypes; let allowedMimeTypes = this.allowedMimeTypes;
const isClipboardHidden = !this.showClipboard;
if (this.decompressZip && this.allowedMimeTypes !== "*/*") { if (this.decompressZip && this.allowedMimeTypes !== "*/*") {
allowedMimeTypes += ",application/zip,application/x-zip-compressed"; allowedMimeTypes += ",application/zip,application/x-zip-compressed";
...@@ -550,7 +547,7 @@ export class FileSource extends ScopedElementsMixin(DBPLitElement) { ...@@ -550,7 +547,7 @@ export class FileSource extends ScopedElementsMixin(DBPLitElement) {
</div> </div>
<div title="Clipboard" <div title="Clipboard"
@click="${() => { this.activeTarget = "clipboard"; }}" @click="${() => { this.activeTarget = "clipboard"; }}"
class="${classMap({"active": this.activeTarget === "clipboard", hidden: !this.hasEnabledSource("clipboard") || isClipboardHidden })}"> class="${classMap({"active": this.activeTarget === "clipboard", hidden: !this.hasEnabledSource("clipboard") })}">
<dbp-icon class="nav-icon" name="clipboard"></dbp-icon> <dbp-icon class="nav-icon" name="clipboard"></dbp-icon>
<p>Clipboard</p> <p>Clipboard</p>
</div> </div>
...@@ -584,7 +581,7 @@ export class FileSource extends ScopedElementsMixin(DBPLitElement) { ...@@ -584,7 +581,7 @@ export class FileSource extends ScopedElementsMixin(DBPLitElement) {
<div class="source-main ${classMap({"hidden": this.activeTarget !== "nextcloud" || this.nextcloudWebDavUrl === "" || this.nextcloudAuthUrl === ""})}"> <div class="source-main ${classMap({"hidden": this.activeTarget !== "nextcloud" || this.nextcloudWebDavUrl === "" || this.nextcloudAuthUrl === ""})}">
${this.getNextcloudHtml()} ${this.getNextcloudHtml()}
</div> </div>
<div class="source-main ${classMap({"hidden": (this.activeTarget !== "clipboard" || isClipboardHidden)})}"> <div class="source-main ${classMap({"hidden": (this.activeTarget !== "clipboard")})}">
${this.getClipboardHtml()} ${this.getClipboardHtml()}
</div> </div>
</main> </main>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment