import { useRef } from 'react'; import type { AgGridReact as AgGridReactType } from '@ag-grid-community/react/lib/agGridReact'; import { useParams } from 'react-router'; import { LibraryItem } from '/@/renderer/api/types'; import { NativeScrollArea, Spinner } from '/@/renderer/components'; import { usePlayQueueAdd } from '/@/renderer/features/player'; import { PlaylistDetailContent } from '/@/renderer/features/playlists/components/playlist-detail-content'; import { PlaylistDetailHeader } from '/@/renderer/features/playlists/components/playlist-detail-header'; import { usePlaylistDetail } from '/@/renderer/features/playlists/queries/playlist-detail-query'; import { AnimatedPage, LibraryHeaderBar } from '/@/renderer/features/shared'; import { useFastAverageColor } from '/@/renderer/hooks'; import { usePlayButtonBehavior } from '/@/renderer/store/settings.store'; import { useCurrentServer } from '../../../store/auth.store'; const PlaylistDetailRoute = () => { const tableRef = useRef(null); const scrollAreaRef = useRef(null); const headerRef = useRef(null); const { playlistId } = useParams() as { playlistId: string }; const server = useCurrentServer(); const detailQuery = usePlaylistDetail({ query: { id: playlistId }, serverId: server?.id }); const { color: background, colorId } = useFastAverageColor({ algorithm: 'sqrt', id: playlistId, src: detailQuery?.data?.imageUrl, srcLoaded: !detailQuery?.isLoading, }); const handlePlayQueueAdd = usePlayQueueAdd(); const playButtonBehavior = usePlayButtonBehavior(); const handlePlay = () => { handlePlayQueueAdd?.({ byItemType: { id: [playlistId], type: LibraryItem.PLAYLIST, }, playType: playButtonBehavior, }); }; if (!background || colorId !== playlistId) { return ; } return ( {detailQuery?.data?.name} ), offset: 200, target: headerRef, }} > ); }; export default PlaylistDetailRoute;