diff --git a/src/routes/MetaDetails/StreamsList/StreamsList.js b/src/routes/MetaDetails/StreamsList/StreamsList.js
index c748feae7..e6297e8cc 100644
--- a/src/routes/MetaDetails/StreamsList/StreamsList.js
+++ b/src/routes/MetaDetails/StreamsList/StreamsList.js
@@ -16,6 +16,9 @@ const StreamsList = ({ className, video, ...props }) => {
const { t } = useTranslation();
const { core } = useServices();
const [selectedAddon, setSelectedAddon] = React.useState(ALL_ADDONS_KEY);
+ const streamsContainerRef = React.useRef(null);
+ const [isScrollable, setIsScrollable] = React.useState(false);
+ const [showBackToTop, setShowBackToTop] = React.useState(false);
const onAddonSelected = React.useCallback((event) => {
setSelectedAddon(event.value);
}, []);
@@ -76,10 +79,33 @@ const StreamsList = ({ className, video, ...props }) => {
onSelect: onAddonSelected
};
}, [streamsByAddon, selectedAddon]);
- const streamsContainerRef = React.useRef(null);
+ const handleScroll = () => {
+ if (streamsContainerRef.current) {
+ const { scrollTop, scrollHeight, clientHeight } = streamsContainerRef.current;
+ const isScrollable = scrollHeight - clientHeight > 0;
+ setShowBackToTop(scrollTop > 50);
+ setIsScrollable(isScrollable);
+ }
+ };
+ React.useEffect(() => {
+ const container = streamsContainerRef.current;
+ handleScroll();
+ if (container) {
+ container.addEventListener('scroll', handleScroll);
+ }
+ return () => {
+ if (container) {
+ container.removeEventListener('scroll', handleScroll);
+ }
+ };
+ }, [streamsByAddon, selectedAddon]);
+
const scrollToTop = () => {
- if (streamsContainerRef?.current) {
- streamsContainerRef.current.scrollTo(0, 0);
+ if (streamsContainerRef.current) {
+ streamsContainerRef.current.scroll({
+ top: 0,
+ behavior: 'smooth'
+ });
}
};
return (
@@ -128,6 +154,10 @@ const StreamsList = ({ className, video, ...props }) => {
null
}
+
{filteredStreams.map((stream, index) => (
{
/>
))}
{
- streamsContainerRef?.current?.scrollHeight > streamsContainerRef?.current?.clientHeight ?
+ isScrollable && countLoadingAddons === 0 ?
-
+