Refac improve inline embeddable player functionality

This commit is contained in:
MerlinScheurer
2024-12-27 19:31:45 +01:00
parent 3d43ade857
commit 20e3b7b7ff
4 changed files with 17 additions and 3 deletions

View File

@@ -27,12 +27,14 @@ const EmbeddableVideoPlayer = ({ videoId }: EmbeddableVideoPlayerProps) => {
const [, setSearchParams] = useSearchParams(); const [, setSearchParams] = useSearchParams();
const [refresh, setRefresh] = useState(false); const [refresh, setRefresh] = useState(false);
const [loading, setLoading] = useState(false);
const [videoResponse, setVideoResponse] = useState<VideoResponseType>(); const [videoResponse, setVideoResponse] = useState<VideoResponseType>();
const [playlists, setPlaylists] = useState<PlaylistList>(); const [playlists, setPlaylists] = useState<PlaylistList>();
useEffect(() => { useEffect(() => {
(async () => { (async () => {
setLoading(true);
const videoResponse = await loadVideoById(videoId); const videoResponse = await loadVideoById(videoId);
const playlistIds = videoResponse.data.playlist; const playlistIds = videoResponse.data.playlist;
@@ -62,6 +64,7 @@ const EmbeddableVideoPlayer = ({ videoId }: EmbeddableVideoPlayerProps) => {
setVideoResponse(videoResponse); setVideoResponse(videoResponse);
setRefresh(false); setRefresh(false);
setLoading(false);
})(); })();
}, [videoId, refresh]); }, [videoId, refresh]);
@@ -87,7 +90,14 @@ const EmbeddableVideoPlayer = ({ videoId }: EmbeddableVideoPlayerProps) => {
<> <>
<div className="player-wrapper"> <div className="player-wrapper">
<div className="video-player"> <div className="video-player">
<VideoPlayer video={videoResponse} sponsorBlock={sponsorblock} embed={true} /> {!loading && (
<VideoPlayer
video={videoResponse}
sponsorBlock={sponsorblock}
embed={true}
autoplay={true}
/>
)}
<div className="player-title boxed-content"> <div className="player-title boxed-content">
<img <img

View File

@@ -39,6 +39,8 @@ const VideoListItem = ({
<a <a
onClick={() => { onClick={() => {
setSearchParams({ videoId: video.youtube_id }); setSearchParams({ videoId: video.youtube_id });
window.scroll({ top: 0, left: 0, behavior: 'smooth' });
}} }}
> >
<div className={`video-thumb-wrap ${viewLayout}`}> <div className={`video-thumb-wrap ${viewLayout}`}>

View File

@@ -171,6 +171,9 @@ const Home = () => {
<> <>
<title>TubeArchivist</title> <title>TubeArchivist</title>
<ScrollToTopOnNavigate /> <ScrollToTopOnNavigate />
{showEmbeddedVideo && <EmbeddableVideoPlayer videoId={videoId} />}
<div className={`boxed-content ${gridView}`}> <div className={`boxed-content ${gridView}`}>
{continueVideos && continueVideos.length > 0 && ( {continueVideos && continueVideos.length > 0 && (
<> <>
@@ -212,8 +215,6 @@ const Home = () => {
/> />
</div> </div>
{showEmbeddedVideo && <EmbeddableVideoPlayer videoId={videoId} />}
<div className={`boxed-content ${gridView}`}> <div className={`boxed-content ${gridView}`}>
<div className={`video-list ${view} ${gridViewGrid}`}> <div className={`video-list ${view} ${gridViewGrid}`}>
{!hasVideos && ( {!hasVideos && (

View File

@@ -515,6 +515,7 @@ video:-webkit-full-screen {
.video-thumb-wrap { .video-thumb-wrap {
position: relative; position: relative;
cursor: pointer;
} }
.video-thumb-wrap:hover > .video-play { .video-thumb-wrap:hover > .video-play {