Fixed intro skipper for VLC

This commit is contained in:
Alex Kim
2024-10-28 21:40:09 +11:00
parent db20fffeb5
commit 0f178a502b
3 changed files with 41 additions and 6 deletions

View File

@@ -4,6 +4,7 @@ import { useAtom } from "jotai";
import { apiAtom } from "@/providers/JellyfinProvider";
import { getAuthHeaders } from "@/utils/jellyfin/jellyfin";
import { writeToLog } from "@/utils/log";
import { msToSeconds, secondsToMs } from "@/utils/time";
interface IntroTimestamps {
EpisodeId: string;
@@ -14,14 +15,31 @@ interface IntroTimestamps {
Valid: boolean;
}
/**
* Custom hook to handle skipping intros in a media player.
*
* @param {number} currentTime - The current playback time in seconds.
*/
export const useIntroSkipper = (
itemId: string | undefined,
currentTime: number,
seek: (ticks: number) => void,
play: () => void
play: () => void,
isVlc: boolean = false
) => {
const [api] = useAtom(apiAtom);
const [showSkipButton, setShowSkipButton] = useState(false);
if (isVlc) {
currentTime = msToSeconds(currentTime);
}
const wrappedSeek = (seconds: number) => {
if (isVlc) {
seek(secondsToMs(seconds));
return;
}
seek(seconds);
};
const { data: introTimestamps } = useQuery<IntroTimestamps | null>({
queryKey: ["introTimestamps", itemId],
@@ -60,7 +78,7 @@ export const useIntroSkipper = (
console.log("skipIntro");
if (!introTimestamps) return;
try {
seek(introTimestamps.IntroEnd);
wrappedSeek(introTimestamps.IntroEnd);
setTimeout(() => {
play();
}, 200);