import React, { useState, useEffect } from 'react' import { useMedia } from '../utils/context/MediaContext' import { ListItem } from '../ListItem/ListItem' import styles from './list.module.scss' type ListProps = { featuredItem?: IMedia | Record searchResults?: IMedia[] } export const List: React.FC = ({ featuredItem, searchResults }: ListProps) => { const [currentListItemId, setCurrentListItemId] = useState('') const [currentPlayer, setCurrentPlayer] = useState('') const [currentPlaylist, setCurrentPlaylist] = useState('') const { setPlayer, setPlaylist, setItem, typeIs, isSearchError } = useMedia() useEffect(() => { setPlayer(currentPlayer) setPlaylist(currentPlaylist) }, [currentPlayer, setPlayer, currentPlaylist, setPlaylist]) useEffect(() => { if (featuredItem) { const { payload_id, playerId, playlistId } = featuredItem setCurrentListItemId(payload_id) playerId && setCurrentPlayer(playerId) playlistId && setCurrentPlaylist(playlistId) setTimeout(() => { document.getElementById(payload_id)?.scrollIntoView({ behavior: 'smooth', block: 'start', }) }, 100) } }, [featuredItem, typeIs]) const handleClick = (e: React.MouseEvent, itemId: string) => { e.preventDefault() // Resets the states when current list item card is closed if (itemId === currentListItemId) { setCurrentPlayer('') setCurrentPlaylist('') setItem({}) setCurrentListItemId('') return } const currentItem = searchResults?.length ? searchResults.filter((item: IMedia) => item.payload_id === itemId)[0] : {} setCurrentListItemId(itemId) setItem(currentItem) } return (
    {!isSearchError ? ( <> {searchResults ? ( searchResults.map((item: IMedia) => ( )) ) : (
  • Searching...
  • )} ) : (
  • {searchResults?.length ? searchResults[0].error : 'An error has occurred with the search results'}
  • )}
) }