mirror of
https://github.com/movie-web/movie-web.git
synced 2024-12-24 18:21:53 +01:00
commit
This commit is contained in:
parent
0784695ae5
commit
0ce6efae2e
@ -6,8 +6,7 @@ import './VideoElement.css'
|
|||||||
|
|
||||||
// streamUrl: string
|
// streamUrl: string
|
||||||
// loading: boolean
|
// loading: boolean
|
||||||
export function VideoElement({ streamUrl, loading, setProgress }) {
|
export function VideoElement({ streamUrl, loading, setProgress, videoRef }) {
|
||||||
const videoRef = React.useRef(null);
|
|
||||||
const [error, setError] = React.useState(false);
|
const [error, setError] = React.useState(false);
|
||||||
|
|
||||||
React.useEffect(() => {
|
React.useEffect(() => {
|
||||||
@ -30,14 +29,6 @@ export function VideoElement({ streamUrl, loading, setProgress }) {
|
|||||||
}
|
}
|
||||||
}, [videoRef, streamUrl, loading]);
|
}, [videoRef, streamUrl, loading]);
|
||||||
|
|
||||||
React.useEffect(() => {
|
|
||||||
console.log('running')
|
|
||||||
const element = document.getElementsByClassName('videoElement')[0];
|
|
||||||
if (!element) return;
|
|
||||||
|
|
||||||
element.onProgress = setProgress;
|
|
||||||
})
|
|
||||||
|
|
||||||
if (error)
|
if (error)
|
||||||
return (<VideoPlaceholder>Your browser is not supported</VideoPlaceholder>)
|
return (<VideoPlaceholder>Your browser is not supported</VideoPlaceholder>)
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@ export function MovieView(props) {
|
|||||||
const [ episodeLists, setEpisodeList ] = React.useState([]);
|
const [ episodeLists, setEpisodeList ] = React.useState([]);
|
||||||
const [ loading, setLoading ] = React.useState(false);
|
const [ loading, setLoading ] = React.useState(false);
|
||||||
const [ selectedSeason, setSelectedSeason ] = React.useState("1");
|
const [ selectedSeason, setSelectedSeason ] = React.useState("1");
|
||||||
|
const videoRef = React.useRef(null);
|
||||||
let isVideoTimeSet = React.useRef(false)
|
let isVideoTimeSet = React.useRef(false)
|
||||||
|
|
||||||
const season = showRouteMatch?.params.season || "1";
|
const season = showRouteMatch?.params.season || "1";
|
||||||
@ -34,10 +35,10 @@ export function MovieView(props) {
|
|||||||
if (streamData.type === "show" && !showRouteMatch) history.replace(`${baseRouteMatch.url}/season/1/episode/1`);
|
if (streamData.type === "show" && !showRouteMatch) history.replace(`${baseRouteMatch.url}/season/1/episode/1`);
|
||||||
}, [streamData.type, showRouteMatch, history, baseRouteMatch.url]);
|
}, [streamData.type, showRouteMatch, history, baseRouteMatch.url]);
|
||||||
|
|
||||||
// React.useEffect(() => {
|
React.useEffect(() => {
|
||||||
// if (streamData.type === "show" && showRouteMatch) setSelectedSeason(showRouteMatch.params.season.toString());
|
if (streamData.type === "show" && showRouteMatch) setSelectedSeason(showRouteMatch.params.season.toString());
|
||||||
// // eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
// }, []);
|
}, []);
|
||||||
|
|
||||||
React.useEffect(() => {
|
React.useEffect(() => {
|
||||||
let cancel = false;
|
let cancel = false;
|
||||||
@ -84,23 +85,20 @@ export function MovieView(props) {
|
|||||||
let time = ls?.[streamData.source]?.[streamData.type]?.[streamData.slug]?.[key]?.currentlyAt;
|
let time = ls?.[streamData.source]?.[streamData.type]?.[streamData.slug]?.[key]?.currentlyAt;
|
||||||
|
|
||||||
if (time) {
|
if (time) {
|
||||||
const element = document.getElementsByClassName('videoElement')[0];
|
if (!videoRef.current) {
|
||||||
|
isVideoTimeSet.current = false;
|
||||||
if (!element) {
|
return;
|
||||||
return () => { isVideoTimeSet.current = false }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
element.currentTime = time;
|
videoRef.current.currentTime = time;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return () => {
|
isVideoTimeSet.current = true;
|
||||||
isVideoTimeSet.current = true;
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|
||||||
const setProgress = (evt) => {
|
const setProgress = (evt) => {
|
||||||
console.log('setting progress')
|
|
||||||
let ls = JSON.parse(localStorage.getItem("video-progress") || "{}")
|
let ls = JSON.parse(localStorage.getItem("video-progress") || "{}")
|
||||||
|
|
||||||
if (!ls[streamData.source])
|
if (!ls[streamData.source])
|
||||||
@ -143,7 +141,7 @@ export function MovieView(props) {
|
|||||||
Season {season}: Episode {episode}
|
Season {season}: Episode {episode}
|
||||||
</Title> : undefined}
|
</Title> : undefined}
|
||||||
|
|
||||||
<VideoElement streamUrl={streamUrl} loading={loading} setProgress={setProgress} />
|
<VideoElement streamUrl={streamUrl} loading={loading} setProgress={setProgress} videoRef={videoRef} />
|
||||||
|
|
||||||
{streamData.type === "show" ?
|
{streamData.type === "show" ?
|
||||||
<EpisodeSelector
|
<EpisodeSelector
|
||||||
|
@ -162,7 +162,7 @@ export function SearchView() {
|
|||||||
if (!subselection.show) continue;
|
if (!subselection.show) continue;
|
||||||
|
|
||||||
let newShow = {};
|
let newShow = {};
|
||||||
|
|
||||||
// if the current season has a next episode, load it
|
// if the current season has a next episode, load it
|
||||||
if (subselection.meta.episodes[subselection.show.season].includes(`${parseInt(subselection.show.episode) + 1}`)) {
|
if (subselection.meta.episodes[subselection.show.season].includes(`${parseInt(subselection.show.episode) + 1}`)) {
|
||||||
newShow.season = subselection.show.season;
|
newShow.season = subselection.show.season;
|
||||||
@ -194,8 +194,6 @@ export function SearchView() {
|
|||||||
return b.data.updatedAt - a.data.updatedAt
|
return b.data.updatedAt - a.data.updatedAt
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log(newContinueWatching);
|
|
||||||
|
|
||||||
setContinueWatching(newContinueWatching)
|
setContinueWatching(newContinueWatching)
|
||||||
})
|
})
|
||||||
}, []);
|
}, []);
|
||||||
|
Loading…
Reference in New Issue
Block a user