feat: implémentation de la PWA avec service worker, manifest et installation

This commit is contained in:
Julien Froidefond
2025-02-12 21:56:22 +01:00
parent 26d4790b0a
commit 0e270b1f01
16 changed files with 807 additions and 8 deletions

View File

@@ -4,6 +4,7 @@ import { ThemeProvider } from "next-themes";
import { useState, useEffect } from "react";
import { Header } from "@/components/layout/Header";
import { Sidebar } from "@/components/layout/Sidebar";
import { InstallPWA } from "../ui/InstallPWA";
import { Toaster } from "@/components/ui/toaster";
export default function ClientLayout({ children }: { children: React.ReactNode }) {
@@ -34,12 +35,27 @@ export default function ClientLayout({ children }: { children: React.ReactNode }
};
}, [isSidebarOpen]);
useEffect(() => {
// Enregistrer le service worker
if ("serviceWorker" in navigator) {
navigator.serviceWorker
.register("/sw.js")
.then((registration) => {
console.log("Service Worker enregistré avec succès:", registration);
})
.catch((error) => {
console.error("Erreur lors de l'enregistrement du Service Worker:", error);
});
}
}, []);
return (
<ThemeProvider attribute="class" defaultTheme="system" enableSystem>
<div className="relative min-h-screen">
<Header onToggleSidebar={() => setIsSidebarOpen(!isSidebarOpen)} />
<Sidebar isOpen={isSidebarOpen} />
<main className="container pt-4 md:pt-8">{children}</main>
<InstallPWA />
<Toaster />
</div>
</ThemeProvider>