From 76dbf50db18327aa12c36fe47d339c9ae6e77c79 Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Fri, 1 Aug 2025 00:40:18 +0200 Subject: [PATCH] Feature: add online indicator --- scripts/prepareServiceWorker.ts | 21 +++++++++++++++++++++ src/Logic/Web/IsOnline.ts | 19 +++++++++++++++++++ src/service-worker/SWGenerated.ts | 4 ++++ 3 files changed, 44 insertions(+) create mode 100644 scripts/prepareServiceWorker.ts create mode 100644 src/Logic/Web/IsOnline.ts create mode 100644 src/service-worker/SWGenerated.ts diff --git a/scripts/prepareServiceWorker.ts b/scripts/prepareServiceWorker.ts new file mode 100644 index 000000000..71f3ebbc7 --- /dev/null +++ b/scripts/prepareServiceWorker.ts @@ -0,0 +1,21 @@ +import Script from "./Script" +import Constants from "../src/Models/Constants" +import { writeFileSync } from "fs" + +class PrepareServiceWorker extends Script { + constructor() { + super("Super various little jobs to help the service worker") + + } + + public async main() { + const v = Constants.vNumber + writeFileSync("./src/service-worker/SWGenerated.ts", + ["export class SWGenerated {", + "// generated by scripts/prepareServiceWorker.ts", + "static vNumber = " + JSON.stringify(v), "}"].join("\n") + , "utf8") + } +} + +new PrepareServiceWorker().run() diff --git a/src/Logic/Web/IsOnline.ts b/src/Logic/Web/IsOnline.ts new file mode 100644 index 000000000..9764c177d --- /dev/null +++ b/src/Logic/Web/IsOnline.ts @@ -0,0 +1,19 @@ +import { Store, UIEventSource } from "../UIEventSource" + +export class IsOnline { + private static readonly _isOnline: UIEventSource = new UIEventSource(navigator.onLine) + static { + + window.addEventListener("online", () => { + IsOnline._isOnline.set(true) + }) + + window.addEventListener("offline", () => { + IsOnline._isOnline.set(false) + + }) + } + + public static readonly isOnline: Store = IsOnline._isOnline + +} diff --git a/src/service-worker/SWGenerated.ts b/src/service-worker/SWGenerated.ts new file mode 100644 index 000000000..23483a4c5 --- /dev/null +++ b/src/service-worker/SWGenerated.ts @@ -0,0 +1,4 @@ +export class SWGenerated { +// generated by scripts/prepareServiceWorker.ts +static vNumber = "0.54.4" +} \ No newline at end of file