diff --git a/src/client/Main.ts b/src/client/Main.ts index 871278732..ade475838 100644 --- a/src/client/Main.ts +++ b/src/client/Main.ts @@ -23,7 +23,7 @@ import { LangSelector } from "./LangSelector"; import { LanguageModal } from "./LanguageModal"; import "./Matchmaking"; import { MatchmakingModal } from "./Matchmaking"; -import { NewsModal } from "./NewsModal"; +import "./NewsModal"; import "./PublicLobby"; import { PublicLobby } from "./PublicLobby"; import { SinglePlayerModal } from "./SinglePlayerModal"; @@ -39,8 +39,6 @@ import { incrementGamesPlayed, isInIframe, } from "./Utils"; -import "./components/NewsButton"; -import { NewsButton } from "./components/NewsButton"; import "./components/baseComponents/Button"; import "./components/baseComponents/Modal"; import { getUserMe, isLoggedIn } from "./jwt"; @@ -118,20 +116,6 @@ class Client { } gameVersion.innerText = version; - const newsModal = document.querySelector("news-modal") as NewsModal; - if (!newsModal || !(newsModal instanceof NewsModal)) { - console.warn("News modal element not found"); - } - const newsButton = document.querySelector("news-button") as NewsButton; - if (!newsButton) { - console.warn("News button element not found"); - } else { - console.log("News button element found"); - } - - // Comment out to show news button. - // newsButton.hidden = true; - const langSelector = document.querySelector( "lang-selector", ) as LangSelector; diff --git a/src/client/NewsModal.ts b/src/client/NewsModal.ts index ddfa1fdc5..db624f349 100644 --- a/src/client/NewsModal.ts +++ b/src/client/NewsModal.ts @@ -2,6 +2,8 @@ import { LitElement, css, html } from "lit"; import { resolveMarkdown } from "lit-markdown"; import { customElement, property, query } from "lit/decorators.js"; import changelog from "../../resources/changelog.md"; +import megaphone from "../../resources/images/Megaphone.svg"; +import version from "../../resources/version.txt"; import { translateText } from "../client/Utils"; import "./components/baseComponents/Button"; import "./components/baseComponents/Modal"; @@ -128,3 +130,49 @@ export class NewsModal extends LitElement { this.modalEl?.close(); } } + +@customElement("news-button") +export class NewsButton extends LitElement { + @query("news-modal") private newsModal!: NewsModal; + + connectedCallback() { + super.connectedCallback(); + this.checkForNewVersion(); + } + + private checkForNewVersion() { + const lastSeenVersion = localStorage.getItem("last-seen-version"); + if (lastSeenVersion !== null && lastSeenVersion !== version) { + setTimeout(() => { + this.openNewsModel(); + }, 500); + } + } + + private openNewsModel() { + localStorage.setItem("last-seen-version", version); + this.newsModal.open(); + } + + render() { + return html` +