mirror of
https://git.vectorsigma.ru/public/tubearchivist.git
synced 2026-08-07 23:09:43 +00:00
Refac improve inline embeddable player functionality
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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}`}>
|
||||||
|
|||||||
@@ -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 && (
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user