mirror of
https://github.com/movie-web/movie-web.git
synced 2024-12-25 20:11:52 +01:00
69 lines
2.2 KiB
TypeScript
69 lines
2.2 KiB
TypeScript
import { MWMediaMeta } from "@/backend/metadata/types";
|
|
import { IconPatch } from "@/components/buttons/IconPatch";
|
|
import { Icon, Icons } from "@/components/Icon";
|
|
import { BrandPill } from "@/components/layout/BrandPill";
|
|
import {
|
|
getIfBookmarkedFromPortable,
|
|
useBookmarkContext,
|
|
} from "@/state/bookmark";
|
|
import { AirplayControl } from "../controls/AirplayControl";
|
|
import { ChromeCastControl } from "../controls/ChromeCastControl";
|
|
|
|
interface VideoPlayerHeaderProps {
|
|
media?: MWMediaMeta;
|
|
onClick?: () => void;
|
|
isMobile?: boolean;
|
|
}
|
|
|
|
export function VideoPlayerHeader(props: VideoPlayerHeaderProps) {
|
|
const { bookmarkStore, setItemBookmark } = useBookmarkContext();
|
|
const isBookmarked = props.media
|
|
? getIfBookmarkedFromPortable(bookmarkStore.bookmarks, props.media)
|
|
: false;
|
|
const showDivider = props.media && props.onClick;
|
|
return (
|
|
<div className="flex items-center">
|
|
<div className="flex flex-1 items-center">
|
|
<p className="flex items-center">
|
|
{props.onClick ? (
|
|
<span
|
|
onClick={props.onClick}
|
|
className="flex cursor-pointer items-center py-1 text-white opacity-50 transition-opacity hover:opacity-100"
|
|
>
|
|
<Icon className="mr-2" icon={Icons.ARROW_LEFT} />
|
|
<span>Back to home</span>
|
|
</span>
|
|
) : null}
|
|
{showDivider ? (
|
|
<span className="mx-4 h-6 w-[1.5px] rotate-[30deg] bg-white opacity-50" />
|
|
) : null}
|
|
{props.media ? (
|
|
<span className="flex items-center text-white">
|
|
<span>{props.media.title}</span>
|
|
</span>
|
|
) : null}
|
|
</p>
|
|
{props.media && (
|
|
<IconPatch
|
|
clickable
|
|
transparent
|
|
icon={isBookmarked ? Icons.BOOKMARK : Icons.BOOKMARK_OUTLINE}
|
|
className="ml-2 text-white"
|
|
onClick={() =>
|
|
props.media && setItemBookmark(props.media, !isBookmarked)
|
|
}
|
|
/>
|
|
)}
|
|
</div>
|
|
{props.isMobile ? (
|
|
<>
|
|
<AirplayControl />
|
|
<ChromeCastControl />
|
|
</>
|
|
) : (
|
|
<BrandPill />
|
|
)}
|
|
</div>
|
|
);
|
|
}
|