Files
pi-agent-integrated/pi-web/components/PwaRegistration.tsx
T

34 lines
865 B
TypeScript

"use client";
import { useEffect } from "react";
export function PwaRegistration() {
useEffect(() => {
if (process.env.NODE_ENV !== "production" || !("serviceWorker" in navigator)) {
return;
}
const register = () => {
const appVersion = process.env.NEXT_PUBLIC_APP_VERSION ?? "dev";
const scriptUrl = `/sw.js?v=${encodeURIComponent(appVersion)}`;
void navigator.serviceWorker.register(scriptUrl, {
scope: "/",
updateViaCache: "none",
}).catch((error: unknown) => {
console.error("Failed to register the Pi Web service worker:", error);
});
};
if (document.readyState === "complete") {
register();
return;
}
window.addEventListener("load", register, { once: true });
return () => window.removeEventListener("load", register);
}, []);
return null;
}