1
0
Fork 0
mirror of https://github.com/sussy-code/smov.git synced 2024-12-20 14:37:43 +01:00

Merge pull request #371 from Jordaar/v4-premid

feat(metadata): add more metadata on window.meta
This commit is contained in:
mrjvs 2023-06-29 19:28:55 +02:00 committed by GitHub
commit fb2a5892a4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,29 +1,21 @@
import { useEffect } from "react"; import { useEffect } from "react";
import { MWCaption } from "@/backend/helpers/streams";
import { DetailedMeta } from "@/backend/metadata/getmeta";
import { useVideoPlayerDescriptor } from "@/video/state/hooks"; import { useVideoPlayerDescriptor } from "@/video/state/hooks";
import {
VideoMediaPlayingEvent,
useMediaPlaying,
} from "@/video/state/logic/mediaplaying";
import { useMeta } from "@/video/state/logic/meta"; import { useMeta } from "@/video/state/logic/meta";
import { useProgress } from "@/video/state/logic/progress"; import { VideoProgressEvent, useProgress } from "@/video/state/logic/progress";
import { VideoPlayerMeta } from "@/video/state/types";
export type WindowMeta = { export type WindowMeta = {
meta: DetailedMeta; media: VideoPlayerMeta;
captions: MWCaption[]; state: {
episode?: { mediaPlaying: VideoMediaPlayingEvent;
episodeId: string; progress: VideoProgressEvent;
seasonId: string;
}; };
seasons?: {
id: string;
number: number;
title: string;
episodes?: { id: string; number: number; title: string }[];
}[];
progress: {
time: number;
duration: number;
}; };
} | null;
declare global { declare global {
interface Window { interface Window {
@ -35,18 +27,16 @@ export function MetaAction() {
const descriptor = useVideoPlayerDescriptor(); const descriptor = useVideoPlayerDescriptor();
const meta = useMeta(descriptor); const meta = useMeta(descriptor);
const progress = useProgress(descriptor); const progress = useProgress(descriptor);
const mediaPlaying = useMediaPlaying(descriptor);
useEffect(() => { useEffect(() => {
if (!window.meta) window.meta = {}; if (!window.meta) window.meta = {};
if (meta) { if (meta) {
window.meta[descriptor] = { window.meta[descriptor] = {
meta: meta.meta, media: meta,
captions: meta.captions, state: {
seasons: meta.seasons, mediaPlaying,
episode: meta.episode, progress,
progress: {
time: progress.time,
duration: progress.duration,
}, },
}; };
} }
@ -54,7 +44,7 @@ export function MetaAction() {
return () => { return () => {
if (window.meta) delete window.meta[descriptor]; if (window.meta) delete window.meta[descriptor];
}; };
}, [meta, descriptor, progress]); }, [meta, descriptor, mediaPlaying, progress]);
return null; return null;
} }