import React from "react"; import { useTranslation } from "react-i18next"; import { pushAlert } from "./services/alert"; import Button from "./views/common/button/Button"; if (import.meta.env.PROD && "serviceWorker" in navigator) { let isThisTriggerUpgrade = false; const upgradeSuccessLocalStorageKey = "TIMELINE_UPGRADE_SUCCESS"; if (window.localStorage.getItem(upgradeSuccessLocalStorageKey)) { pushAlert({ message: "serviceWorker.upgradeSuccess", type: "success", }); window.localStorage.removeItem(upgradeSuccessLocalStorageKey); } void import("workbox-window").then(({ Workbox, messageSW }) => { const wb = new Workbox("/sw.js"); let registration: ServiceWorkerRegistration | undefined; // externalactivated is not usable but I still use its name. wb.addEventListener("controlling", () => { const upgradeReload = (): void => { window.localStorage.setItem(upgradeSuccessLocalStorageKey, "true"); window.location.reload(); }; if (isThisTriggerUpgrade) { upgradeReload(); } else { const Message: React.FC = () => { const { t } = useTranslation(); return ( <> {t("serviceWorker.externalActivatedPrompt")}