feat: Move service worker registration to a dedicated component for improved client-side handling
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import React from "react";
|
import React, { useEffect } from "react";
|
||||||
import { AudioPlayerProvider } from "../components/AudioPlayerContext";
|
import { AudioPlayerProvider } from "../components/AudioPlayerContext";
|
||||||
import { OfflineNavidromeProvider, useOfflineNavidrome } from "../components/OfflineNavidromeProvider";
|
import { OfflineNavidromeProvider, useOfflineNavidrome } from "../components/OfflineNavidromeProvider";
|
||||||
import { NavidromeConfigProvider } from "../components/NavidromeConfigContext";
|
import { NavidromeConfigProvider } from "../components/NavidromeConfigContext";
|
||||||
@@ -15,18 +15,22 @@ import { LoginForm } from "./start-screen";
|
|||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import PageTransition from "./PageTransition";
|
import PageTransition from "./PageTransition";
|
||||||
|
|
||||||
// Service Worker registration - moved to useEffect to ensure it only runs client-side
|
// ServiceWorkerRegistration component to handle registration
|
||||||
React.useEffect(() => {
|
function ServiceWorkerRegistration() {
|
||||||
if ('serviceWorker' in navigator) {
|
useEffect(() => {
|
||||||
navigator.serviceWorker.register('/sw.js')
|
if ('serviceWorker' in navigator) {
|
||||||
.then((registration) => {
|
navigator.serviceWorker.register('/sw.js')
|
||||||
console.log('Service Worker registered successfully:', registration);
|
.then((registration) => {
|
||||||
})
|
console.log('Service Worker registered successfully:', registration);
|
||||||
.catch((error) => {
|
})
|
||||||
console.error('Service Worker registration failed:', error);
|
.catch((error) => {
|
||||||
});
|
console.error('Service Worker registration failed:', error);
|
||||||
}
|
});
|
||||||
}, []);
|
}
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
function NavidromeErrorBoundary({ children }: { children: React.ReactNode }) {
|
function NavidromeErrorBoundary({ children }: { children: React.ReactNode }) {
|
||||||
// For now, since we're switching to offline-first, we'll handle errors differently
|
// For now, since we're switching to offline-first, we'll handle errors differently
|
||||||
@@ -100,6 +104,7 @@ export default function RootLayoutClient({ children }: { children: React.ReactNo
|
|||||||
<ThemeProvider>
|
<ThemeProvider>
|
||||||
<DynamicViewportTheme />
|
<DynamicViewportTheme />
|
||||||
<ThemeColorHandler />
|
<ThemeColorHandler />
|
||||||
|
<ServiceWorkerRegistration />
|
||||||
<NavidromeConfigProvider>
|
<NavidromeConfigProvider>
|
||||||
<OfflineNavidromeProvider>
|
<OfflineNavidromeProvider>
|
||||||
<NavidromeErrorBoundary>
|
<NavidromeErrorBoundary>
|
||||||
|
|||||||
Reference in New Issue
Block a user