"use client"; import { useRef, useEffect } from "react"; import { useTranslations } from "next-intl"; import { toast } from "sonner"; import { PageLayout } from "@/components/ui/PageLayout"; import { VideoPlayerPanel } from "./components/VideoPlayerPanel"; import { ControlPanel } from "./components/ControlPanel"; import { useVideoSync } from "./hooks/useVideoSync"; import { useSubtitleSync } from "./hooks/useSubtitleSync"; import { useSrtPlayerShortcuts } from "./hooks/useKeyboardShortcuts"; import { loadSubtitle } from "./utils/subtitleParser"; import { useSrtPlayerStore } from "./store"; export default function SrtPlayerPage() { const t = useTranslations("home"); const srtT = useTranslations("srt_player"); const videoRef = useRef(null); // Store state const subtitleUrl = useSrtPlayerStore((state) => state.subtitle.url); const setSubtitleData = useSrtPlayerStore((state) => state.setSubtitleData); // Hooks useVideoSync(videoRef); useSubtitleSync(); useSrtPlayerShortcuts(); // Load subtitle when URL changes useEffect(() => { if (subtitleUrl) { loadSubtitle(subtitleUrl) .then((subtitleData) => { setSubtitleData(subtitleData); toast.success(srtT("subtitleLoadSuccess")); }) .catch((error) => { toast.error(srtT("subtitleLoadFailed") + ": " + error.message); }); } }, [srtT, subtitleUrl, setSubtitleData]); return ( {/* Title */}

{t("srtPlayer.name")}

{t("srtPlayer.description")}

{/* Video Player */} {/* Control Panel */}
); }