From 9585ff0f0fdf45a1b9fd9346ac5cb9b9e585044c Mon Sep 17 00:00:00 2001
From: Patrizio Bekerle <patrizio@bekerle.com>
Date: Wed, 3 Mar 2021 13:51:52 +0100
Subject: [PATCH] Fix logging of selected files

---
 packages/file-handling/src/demo.js | 42 +++++++++++++++++++++++++-----
 1 file changed, 35 insertions(+), 7 deletions(-)

diff --git a/packages/file-handling/src/demo.js b/packages/file-handling/src/demo.js
index 149b9667..f81a5668 100644
--- a/packages/file-handling/src/demo.js
+++ b/packages/file-handling/src/demo.js
@@ -11,6 +11,8 @@ export class FileSourceDemo extends ScopedElementsMixin(LitElement) {
         super();
         this.lang = 'de';
         this.url = '';
+        this.selectedFiles = [];
+        this.selectedFilesCount = 0;
     }
 
     static get scopedElements() {
@@ -24,6 +26,8 @@ export class FileSourceDemo extends ScopedElementsMixin(LitElement) {
         return {
             lang: { type: String },
             url: { type: String },
+            selectedFiles: { type: Array, attribute: false },
+            selectedFilesCount: { type: Number, attribute: false },
         };
     }
 
@@ -31,9 +35,10 @@ export class FileSourceDemo extends ScopedElementsMixin(LitElement) {
         super.connectedCallback();
 
         this.updateComplete.then(() => {
-            this.shadowRoot.querySelectorAll('dbp-file-source')
+            this.shadowRoot.querySelectorAll('.file-source')
                 .forEach(element => {
-                    element.addEventListener('dbp-file-source-file-finished', this.addLogEntry.bind(this));
+                    // TODO: remove orphaned event listeners
+                    element.addEventListener('dbp-file-source-file-selected', this.addLogEntry.bind(this));
                 });
         });
     }
@@ -48,12 +53,27 @@ export class FileSourceDemo extends ScopedElementsMixin(LitElement) {
         super.update(changedProperties);
     }
 
-    addLogEntry(ev) {
-        const ul = this.shadowRoot.querySelector('#log');
-        const li = document.createElement('li');
-        li.innerHTML = `<li><b>${ev.detail.status}</b> <tt>${ev.detail.filename}</tt>`;
+    getSelectedFilesHtml() {
+        if (this.selectedFilesCount === 0) {
+            return `No files were selected`;
+        }
+
+        let results = [];
+
+        this.selectedFiles.forEach((file) => {
+            results.push(html`
+                <div class="file-block">
+                    <strong>${file.name}</strong> (${file.type})</span>
+                </div>
+            `);
+        });
 
-        ul.appendChild(li);
+        return results;
+    }
+
+    addLogEntry(ev) {
+        this.selectedFiles.push(ev.detail.file);
+        this.selectedFilesCount = this.selectedFiles.length;
     }
 
     render() {
@@ -80,6 +100,9 @@ export class FileSourceDemo extends ScopedElementsMixin(LitElement) {
                     <p>${unsafeHTML(i18n.t('required-server', { url: this.url}))}</p>
                 </div>
                 <div class="content">
+                    <h2 class="subtitle">Selected files</h2>
+                    ${this.getSelectedFilesHtml()}
+
                     <h2 class="subtitle">Send files via event</h2>
 
                     <p>There is no restriction for a specific file type:</p>
@@ -88,6 +111,7 @@ export class FileSourceDemo extends ScopedElementsMixin(LitElement) {
                         Open dialog
                     </button>
                     <dbp-file-source id="file-source1"
+                                     class="file-source"
                                      allowed-mime-types="*/*"
                                      subscribe="nextcloud-auth-url:nextcloud-auth-url,nextcloud-web-dav-url:nextcloud-web-dav-url,nextcloud-name:nextcloud-name,nextcloud-file-url:nextcloud-file-url"
                                      lang="en"
@@ -99,6 +123,7 @@ export class FileSourceDemo extends ScopedElementsMixin(LitElement) {
                         Open dialog
                     </button>
                     <dbp-file-source id="file-source2" lang="en" url="${this.url}"
+                                     class="file-source"
                                      allowed-mime-types="image/*"
                                      subscribe="nextcloud-auth-url:nextcloud-auth-url,nextcloud-web-dav-url:nextcloud-web-dav-url,nextcloud-name:nextcloud-name,nextcloud-file-url:nextcloud-file-url"
                                      enabled-targets="local,nextcloud"
@@ -110,6 +135,7 @@ export class FileSourceDemo extends ScopedElementsMixin(LitElement) {
                         Open dialog
                     </button>
                     <dbp-file-source id="file-source3" lang="en" url="${this.url}"
+                                     class="file-source"
                                      allowed-mime-types="application/pdf"
                                      subscribe="nextcloud-auth-url:nextcloud-auth-url,nextcloud-web-dav-url:nextcloud-web-dav-url,nextcloud-name:nextcloud-name,nextcloud-file-url:nextcloud-file-url"
                                      enabled-targets="local,nextcloud"
@@ -121,6 +147,7 @@ export class FileSourceDemo extends ScopedElementsMixin(LitElement) {
                         Open dialog
                     </button>
                     <dbp-file-source id="file-source4" lang="en" url="${this.url}"
+                                     class="file-source"
                                      allowed-mime-types="text/plain,image/*"
                                      subscribe="nextcloud-auth-url:nextcloud-auth-url,nextcloud-web-dav-url:nextcloud-web-dav-url,nextcloud-name:nextcloud-name,nextcloud-file-url:nextcloud-file-url"
                                      enabled-targets="local,nextcloud"
@@ -132,6 +159,7 @@ export class FileSourceDemo extends ScopedElementsMixin(LitElement) {
                         Open dialog
                     </button>
                     <dbp-file-source id="file-source5" lang="en" url="${this.url}"
+                                     class="file-source"
                                      allowed-mime-types="application/pdf"
                                      decompress-zip
                                      subscribe="nextcloud-auth-url:nextcloud-auth-url,nextcloud-web-dav-url:nextcloud-web-dav-url,nextcloud-name:nextcloud-name,nextcloud-file-url:nextcloud-file-url"
-- 
GitLab