mirror of
https://github.com/Such-Software/such.software.git
synced 2026-10-17 05:32:05 +02:00
fix: safari loading issue
This commit is contained in:
@@ -25,15 +25,22 @@ export function DynamicBackground({ nebulaPosition }: DynamicBackgroundProps) {
|
||||
useEffect(() => {
|
||||
setMounted(true);
|
||||
// Delay nebula render to prioritize main content (LCP)
|
||||
const timer = requestIdleCallback
|
||||
? requestIdleCallback(() => setShowNebula(true))
|
||||
: setTimeout(() => setShowNebula(true), 100);
|
||||
// Use typeof check for Safari compatibility (requestIdleCallback not supported)
|
||||
let idleHandle: number | undefined;
|
||||
let timeoutHandle: number | undefined;
|
||||
|
||||
if (typeof window !== 'undefined' && 'requestIdleCallback' in window) {
|
||||
idleHandle = window.requestIdleCallback(() => setShowNebula(true));
|
||||
} else {
|
||||
timeoutHandle = window.setTimeout(() => setShowNebula(true), 100);
|
||||
}
|
||||
|
||||
return () => {
|
||||
if (typeof timer === 'number') {
|
||||
clearTimeout(timer);
|
||||
} else if (cancelIdleCallback) {
|
||||
cancelIdleCallback(timer as unknown as number);
|
||||
if (timeoutHandle !== undefined) {
|
||||
window.clearTimeout(timeoutHandle);
|
||||
}
|
||||
if (idleHandle !== undefined && 'cancelIdleCallback' in window) {
|
||||
window.cancelIdleCallback(idleHandle);
|
||||
}
|
||||
};
|
||||
}, []);
|
||||
|
||||
Reference in New Issue
Block a user