From 73823e9e0744bb10c58bf3af5b38365298abca47 Mon Sep 17 00:00:00 2001 From: Abdalrzag Eisa Date: Fri, 13 Jun 2025 21:56:36 +0300 Subject: [PATCH 01/14] Pass `currentlyPlayingVideoID` into `SideDrawer` --- src/routes/Player/Player.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/routes/Player/Player.js b/src/routes/Player/Player.js index 8ba813786..b10cbef42 100644 --- a/src/routes/Player/Player.js +++ b/src/routes/Player/Player.js @@ -787,6 +787,7 @@ const Player = ({ urlParams, queryParams }) => { metaItem={player.metaItem?.content} seriesInfo={player.seriesInfo} closeSideDrawer={closeSideDrawer} + currentlyPlayingVideoID={player.selected?.streamRequest.path.id} /> { From 40871dc8f2f64ae95d525ec1fced4f50dcb0a079 Mon Sep 17 00:00:00 2001 From: Abdalrzag Eisa Date: Fri, 13 Jun 2025 21:59:19 +0300 Subject: [PATCH 02/14] Add button `jump-to-currently-playing-video` --- src/routes/Player/SideDrawer/SideDrawer.tsx | 52 +++++++++++++-------- 1 file changed, 32 insertions(+), 20 deletions(-) diff --git a/src/routes/Player/SideDrawer/SideDrawer.tsx b/src/routes/Player/SideDrawer/SideDrawer.tsx index cb94e24e5..365ba87ae 100644 --- a/src/routes/Player/SideDrawer/SideDrawer.tsx +++ b/src/routes/Player/SideDrawer/SideDrawer.tsx @@ -1,11 +1,11 @@ // Copyright (C) 2017-2024 Smart code 203358507 -import React, { useMemo, useCallback, useState, forwardRef, memo } from 'react'; +import React, { useMemo, useCallback, useState, forwardRef, memo, useRef } from 'react'; import classNames from 'classnames'; import Icon from '@stremio/stremio-icons/react'; import { useServices } from 'stremio/services'; import { CONSTANTS } from 'stremio/common'; -import { MetaPreview, Video } from 'stremio/components'; +import { MetaPreview, Video, Button } from 'stremio/components'; import SeasonsBar from 'stremio/routes/MetaDetails/VideosList/SeasonsBar'; import styles from './SideDrawer.less'; @@ -13,6 +13,7 @@ type Props = { className?: string; seriesInfo: SeriesInfo; metaItem: MetaItem; + currentlyPlayingVideoID: string; closeSideDrawer: () => void; }; @@ -75,6 +76,14 @@ const SideDrawer = memo(forwardRef(({ seriesInfo, classNa event.stopPropagation(); }; + const currentlyPlayingVideoRef = useRef(null); + + const jumpToCurrentlyPlaying = () => { + const { current } = currentlyPlayingVideoRef; + + if (current) current.scrollIntoView({ behavior: 'smooth', block: 'center' }); + }; + return (
@@ -102,25 +111,28 @@ const SideDrawer = memo(forwardRef(({ seriesInfo, classNa onSelect={seasonOnSelect} />
+ {videos.map((video, index) => ( -
From 7dc0958e392d707b90ea6e26c93f808ae25ed090 Mon Sep 17 00:00:00 2001 From: Abdalrzag Eisa Date: Fri, 13 Jun 2025 22:00:17 +0300 Subject: [PATCH 03/14] Add `jump-to-currently-playing-btn` class --- src/routes/Player/SideDrawer/SideDrawer.less | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/routes/Player/SideDrawer/SideDrawer.less b/src/routes/Player/SideDrawer/SideDrawer.less index 2d2178c3e..e970a8ca7 100644 --- a/src/routes/Player/SideDrawer/SideDrawer.less +++ b/src/routes/Player/SideDrawer/SideDrawer.less @@ -1,5 +1,6 @@ // Copyright (C) 2017-2024 Smart code 203358507 +@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; @import (reference) '~stremio/common/screen-sizes.less'; :import('~stremio/components/MetaPreview/styles.less') { @@ -71,10 +72,22 @@ flex: 2; display: flex; flex-direction: column; + position: relative; .videos { overflow-y: auto; } + + .jump-to-currently-playing-btn { + position: absolute; + bottom: 1rem; + right: 1rem; + z-index: 1; + width: 2.5rem; + height: 2.5rem; + border-radius: 50%; + background-color: @color-primaryvariant1-light1-90; + } } } From 524bcd90da368ba7784febf12f80980e0df82366 Mon Sep 17 00:00:00 2001 From: Abdalrzag Eisa Date: Sat, 14 Jun 2025 02:38:11 +0300 Subject: [PATCH 04/14] automatically jump to video on mount, remove button --- src/routes/Player/SideDrawer/SideDrawer.less | 13 ------------- src/routes/Player/SideDrawer/SideDrawer.tsx | 14 +++++++------- 2 files changed, 7 insertions(+), 20 deletions(-) diff --git a/src/routes/Player/SideDrawer/SideDrawer.less b/src/routes/Player/SideDrawer/SideDrawer.less index e970a8ca7..2d2178c3e 100644 --- a/src/routes/Player/SideDrawer/SideDrawer.less +++ b/src/routes/Player/SideDrawer/SideDrawer.less @@ -1,6 +1,5 @@ // Copyright (C) 2017-2024 Smart code 203358507 -@import (reference) '~@stremio/stremio-colors/less/stremio-colors.less'; @import (reference) '~stremio/common/screen-sizes.less'; :import('~stremio/components/MetaPreview/styles.less') { @@ -72,22 +71,10 @@ flex: 2; display: flex; flex-direction: column; - position: relative; .videos { overflow-y: auto; } - - .jump-to-currently-playing-btn { - position: absolute; - bottom: 1rem; - right: 1rem; - z-index: 1; - width: 2.5rem; - height: 2.5rem; - border-radius: 50%; - background-color: @color-primaryvariant1-light1-90; - } } } diff --git a/src/routes/Player/SideDrawer/SideDrawer.tsx b/src/routes/Player/SideDrawer/SideDrawer.tsx index 365ba87ae..11ff4b995 100644 --- a/src/routes/Player/SideDrawer/SideDrawer.tsx +++ b/src/routes/Player/SideDrawer/SideDrawer.tsx @@ -1,11 +1,11 @@ // Copyright (C) 2017-2024 Smart code 203358507 -import React, { useMemo, useCallback, useState, forwardRef, memo, useRef } from 'react'; +import React, { useMemo, useCallback, useState, forwardRef, memo, useRef, useEffect } from 'react'; import classNames from 'classnames'; import Icon from '@stremio/stremio-icons/react'; import { useServices } from 'stremio/services'; import { CONSTANTS } from 'stremio/common'; -import { MetaPreview, Video, Button } from 'stremio/components'; +import { MetaPreview, Video } from 'stremio/components'; import SeasonsBar from 'stremio/routes/MetaDetails/VideosList/SeasonsBar'; import styles from './SideDrawer.less'; @@ -78,11 +78,12 @@ const SideDrawer = memo(forwardRef(({ seriesInfo, classNa const currentlyPlayingVideoRef = useRef(null); - const jumpToCurrentlyPlaying = () => { + useEffect(() => { const { current } = currentlyPlayingVideoRef; - - if (current) current.scrollIntoView({ behavior: 'smooth', block: 'center' }); - }; + if (current) { + setTimeout(() => { current.scrollIntoView({ behavior: 'smooth', block: 'center' }); }, 300); + } + }, []); return (
@@ -111,7 +112,6 @@ const SideDrawer = memo(forwardRef(({ seriesInfo, classNa onSelect={seasonOnSelect} />
- {videos.map((video, index) => (