import { useState } from 'react'; import { Button, Flex, HStack, Span, Text, Tooltip } from '@chakra-ui/react'; import { LuUser } from 'react-icons/lu'; import { MdOutlineForkRight } from 'react-icons/md'; import { useNavigate } from 'react-router-dom'; import { Media, Series } from '@/back-api'; import { Covers } from '@/components/Cover'; import { EmptyEnd } from '@/components/EmptyEnd'; import { PageLayout } from '@/components/Layout/PageLayout'; import { SearchInput } from '@/components/SearchInput'; import { BUTTON_TOP_BAR_PROPERTY, TopBar } from '@/components/TopBar/TopBar'; import { useColorModeValue } from '@/components/ui/color-mode'; import { BASE_WRAP_HEIGHT, BASE_WRAP_ICON_SIZE, BASE_WRAP_SPACING, BASE_WRAP_WIDTH, } from '@/constants/genericSpacing'; import { useActivePlaylistService } from '@/service/ActivePlaylist'; import { useMediaService } from '@/service/Media'; import { useOrderedSeries } from '@/service/Series'; import { shuffleArray } from '@/utils/arrayTools'; import { DataTools, TypeCheck } from '@/utils/data-tools'; const LIMIT_RANDOM_VALUES = 25; export const SeriesPage = () => { const [filterName, setFilterName] = useState(undefined); const navigate = useNavigate(); const { playInList } = useActivePlaylistService(); const onSelectItem = (data: Series) => { navigate(`/Series/${data.id}/`); }; const { dataSeries } = useOrderedSeries(filterName); const { store: MediaStore } = useMediaService(); const onRandomPlay = () => { const data = shuffleArray(dataSeries); const playingList: number[] = []; for (let i = 0; i < Math.min(data.length, LIMIT_RANDOM_VALUES); i++) { const selectedSeries: Series = data[i]; const listSeriesMedias: Media[] = DataTools.getsWhere( MediaStore.data, [ { check: TypeCheck.CONTAINS, key: 'Series', value: selectedSeries.id, }, ], [] ); if (listSeriesMedias.length === 0) { continue; } playingList.push( listSeriesMedias[Math.floor(Math.random() * listSeriesMedias.length)].id ); } playInList(0, playingList); }; return ( <> {dataSeries?.map((data) => ( onSelectItem(data)} > } /> {data.name} ))} ); };