diff --git a/src/client/components/NewsButton.ts b/src/client/components/NewsButton.ts index 52ecf5479..ba7411a34 100644 --- a/src/client/components/NewsButton.ts +++ b/src/client/components/NewsButton.ts @@ -1,15 +1,36 @@ import { LitElement, html } from "lit"; -import { customElement, property } from "lit/decorators.js"; +import { customElement, property, state } from "lit/decorators.js"; import megaphone from "../../../resources/images/Megaphone.svg"; +import version from "../../../resources/version.txt"; import { NewsModal } from "../NewsModal"; import { translateText } from "../Utils"; @customElement("news-button") export class NewsButton extends LitElement { - @property({ type: Boolean }) - hidden = false; + @property({ type: Boolean }) hidden = false; + @state() private isActive = false; + + connectedCallback() { + super.connectedCallback(); + this.checkForNewVersion(); + } + + private checkForNewVersion() { + try { + const lastSeenVersion = localStorage.getItem( + "news-button-last-seen-version", + ); + this.isActive = lastSeenVersion !== version; + } catch (error) { + // Fallback to NOT showing notification if localStorage fails + this.isActive = false; + } + } private handleClick() { + localStorage.setItem("news-button-last-seen-version", version); + this.isActive = false; + const newsModal = document.querySelector("news-modal") as NewsModal; if (newsModal) { newsModal.open(); @@ -18,7 +39,12 @@ export class NewsButton extends LitElement { render() { return html` -
+