Add useEffect clean up to YouTube embed

This commit is contained in:
Kalle 2026-05-11 20:26:50 +03:00
parent 49b563e5ef
commit 4a021cc1ce
2 changed files with 7 additions and 13 deletions

View File

@ -64,19 +64,6 @@ export function YouTubeEmbed({
useEffect(() => {
if (!enableApi || !isApiReady || !containerRef.current) return;
if (playerRef.current) {
try {
playerRef.current.loadVideoById({ videoId: id, startSeconds: start });
} catch {
toastQueue.add({
message: t("vods:errors.youtubePreviewFailed"),
variant: "error",
});
setHasError(true);
}
return;
}
try {
const player = new window.YT.Player(containerRef.current, {
height: "281",
@ -103,12 +90,18 @@ export function YouTubeEmbed({
},
},
});
return () => {
player.destroy();
playerRef.current = null;
};
} catch {
toastQueue.add({
message: t("vods:errors.youtubePreviewFailed"),
variant: "error",
});
setHasError(true);
return;
}
}, [enableApi, isApiReady, id, start, autoplay, onPlayerReady, t]);

1
types/youtube.d.ts vendored
View File

@ -26,5 +26,6 @@ declare namespace YT {
);
loadVideoById(options: { videoId: string; startSeconds?: number }): void;
getCurrentTime(): number;
destroy(): void;
}
}