From e61fe01daa19bb809fc9f3465089a06a26237ab7 Mon Sep 17 00:00:00 2001
From: Patrizio Bekerle <patrizio@bekerle.com>
Date: Thu, 4 Feb 2021 10:08:51 +0100
Subject: [PATCH] Remove dbp-language-changed event and use dbp-set-property
 event for "lang"

---
 packages/app-shell/src/app-shell.js           | 14 +++++------
 .../language-select/src/language-select.js    | 23 -------------------
 packages/provider/src/adapter-lit-element.js  |  2 ++
 .../assets/dbp-toolkit-showcase.html.ejs      |  3 ++-
 4 files changed, 11 insertions(+), 31 deletions(-)

diff --git a/packages/app-shell/src/app-shell.js b/packages/app-shell/src/app-shell.js
index c0b5e611..2ad9b933 100644
--- a/packages/app-shell/src/app-shell.js
+++ b/packages/app-shell/src/app-shell.js
@@ -297,12 +297,8 @@ export class AppShell extends ScopedElementsMixin(AdapterLitElement) {
             this.lang = lang;
             this.router.update();
 
-            const event = new CustomEvent("dbp-language-changed", {
-                bubbles: true,
-                detail: {'lang': lang}
-            });
-
-            this.dispatchEvent(event);
+            // tell a dbp-provider to update the "lang" property
+            this.sendSetPropertyEvent('lang', lang);
         }
     }
 
@@ -312,6 +308,10 @@ export class AppShell extends ScopedElementsMixin(AdapterLitElement) {
                 // For screen readers
                 document.documentElement.setAttribute("lang", this.lang);
                 i18n.changeLanguage(this.lang);
+
+                this.router.update();
+                this.subtitle = this.activeMetaDataText("short_name");
+                this.description = this.activeMetaDataText("description");
             }
         });
 
@@ -822,7 +822,7 @@ export class AppShell extends ScopedElementsMixin(AdapterLitElement) {
                 <dbp-notification lang="${this.lang}"></dbp-notification>
                 <header>
                     <div class="hd1-left">
-                        <dbp-language-select @dbp-language-changed=${this.onLanguageChanged.bind(this)}></dbp-language-select>
+                        <dbp-language-select subscribe="lang"></dbp-language-select>
                     </div>
                     <div class="hd1-middle">
                     </div>
diff --git a/packages/language-select/src/language-select.js b/packages/language-select/src/language-select.js
index 772163c5..2ab2f3ca 100644
--- a/packages/language-select/src/language-select.js
+++ b/packages/language-select/src/language-select.js
@@ -13,8 +13,6 @@ export class LanguageSelect extends AdapterLitElement {
         this._lang = 'de';
         this.languages = ['de', 'en'];
 
-        this.onExternalChange = this.onExternalChange.bind(this);
-
         // for the i18next scanner
         i18n.t('de');
         i18n.t('de-action');
@@ -54,13 +52,6 @@ export class LanguageSelect extends AdapterLitElement {
         this.requestUpdate('next', oldNext);
 
         if (oldValue !== value) {
-            let event = new CustomEvent("dbp-language-changed", {
-                bubbles: true,
-                composed: true,
-                detail: {'lang': value}
-            });
-            this.dispatchEvent(event);
-
             // tell a dbp-provider to update the "lang" property
             this.sendSetPropertyEvent('lang', value);
 
@@ -109,20 +100,6 @@ export class LanguageSelect extends AdapterLitElement {
         ];
     }
 
-    onExternalChange(e) {
-        this.lang = e.detail.lang;
-    }
-
-    connectedCallback() {
-        super.connectedCallback();
-        window.addEventListener('dbp-language-changed', this.onExternalChange);
-    }
-
-    disconnectedCallback() {
-        document.removeEventListener('dbp-language-changed', this.onExternalChange);
-        super.disconnectedCallback();
-    }
-
     onClick(e) {
         e.preventDefault();
         this.lang = this.next;
diff --git a/packages/provider/src/adapter-lit-element.js b/packages/provider/src/adapter-lit-element.js
index 4f15cc63..9b41c7a4 100644
--- a/packages/provider/src/adapter-lit-element.js
+++ b/packages/provider/src/adapter-lit-element.js
@@ -302,6 +302,8 @@ export class AdapterLitElement extends LitElement {
      * @returns {boolean}
      */
     sendSetPropertyEvent(name, value) {
+        // console.log("dbp-set-property", name, value);
+
         const event = new CustomEvent('dbp-set-property', {
             bubbles: true,
             composed: true,
diff --git a/toolkit-showcase/assets/dbp-toolkit-showcase.html.ejs b/toolkit-showcase/assets/dbp-toolkit-showcase.html.ejs
index d4a9e251..59898d09 100644
--- a/toolkit-showcase/assets/dbp-toolkit-showcase.html.ejs
+++ b/toolkit-showcase/assets/dbp-toolkit-showcase.html.ejs
@@ -54,7 +54,7 @@
 
 <body>
 <dbp-provider id="root"
-              lang="en" entry-point-url="<%= entryPointURL %>"
+              entry-point-url="<%= entryPointURL %>"
               nextcloud-auth-url="<%= nextcloudWebAppPasswordURL %>"
               nextcloud-web-dav-url="<%= nextcloudWebDavURL %>"
               nextcloud-name="<%= nextcloudName %>"
@@ -62,6 +62,7 @@
     <<%= name %>
         src="<%= getUrl(name + '.topic.metadata.json') %>"
         auth
+        lang="en"
         base-path="<%= getUrl('') %>"
         keycloak-config='{"url": "<%= keyCloakBaseURL %>", "realm": "tugraz", "clientId": "<%= keyCloakClientId %>", "silentCheckSsoRedirectUri": "<%= getUrl('silent-check-sso.html') %>"}'
         matomo-url="<%= matomoUrl %>" matomo-site-id="<%= matomoSiteId %>"
-- 
GitLab