A small web app for watching movies and shows easily
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

42 lines
1.1 KiB

import { MWSeasonWithEpisodeMeta } from "@/backend/metadata/types";
import { useVideoPlayerDescriptor } from "@/video/state/hooks";
import { useControls } from "@/video/state/logic/controls";
import { VideoPlayerMeta } from "@/video/state/types";
import { useEffect } from "react";
interface MetaControllerProps {
data?: VideoPlayerMeta;
seasonData?: MWSeasonWithEpisodeMeta;
}
function formatMetadata(
props: MetaControllerProps
): VideoPlayerMeta | undefined {
const seasonsWithEpisodes = props.data?.seasons?.map((v) => {
if (v.id === props.seasonData?.id)
return {
...v,
episodes: props.seasonData.episodes,
};
return v;
});
if (!props.data) return undefined;
return {
meta: props.data.meta,
episode: props.data.episode,
seasons: seasonsWithEpisodes,
};
}
export function MetaController(props: MetaControllerProps) {
const descriptor = useVideoPlayerDescriptor();
const controls = useControls(descriptor);
useEffect(() => {
controls.setMeta(formatMetadata(props));
}, [props, controls]);
return null;
}