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(() => {
|
useEffect(() => {
|
||||||
setMounted(true);
|
setMounted(true);
|
||||||
// Delay nebula render to prioritize main content (LCP)
|
// Delay nebula render to prioritize main content (LCP)
|
||||||
const timer = requestIdleCallback
|
// Use typeof check for Safari compatibility (requestIdleCallback not supported)
|
||||||
? requestIdleCallback(() => setShowNebula(true))
|
let idleHandle: number | undefined;
|
||||||
: setTimeout(() => setShowNebula(true), 100);
|
let timeoutHandle: number | undefined;
|
||||||
|
|
||||||
|
if (typeof window !== 'undefined' && 'requestIdleCallback' in window) {
|
||||||
|
idleHandle = window.requestIdleCallback(() => setShowNebula(true));
|
||||||
|
} else {
|
||||||
|
timeoutHandle = window.setTimeout(() => setShowNebula(true), 100);
|
||||||
|
}
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
if (typeof timer === 'number') {
|
if (timeoutHandle !== undefined) {
|
||||||
clearTimeout(timer);
|
window.clearTimeout(timeoutHandle);
|
||||||
} else if (cancelIdleCallback) {
|
}
|
||||||
cancelIdleCallback(timer as unknown as number);
|
if (idleHandle !== undefined && 'cancelIdleCallback' in window) {
|
||||||
|
window.cancelIdleCallback(idleHandle);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}, []);
|
}, []);
|
||||||
|
|||||||
Reference in New Issue
Block a user