import { useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import { useRecoilState, useRecoilValue } from 'recoil'; import { sessionStore } from '../../stores'; import { AREAS, collectionStore } from './stores'; import Dropzone from './components/upload/Dropzone'; import Collection from './components/collection/collection'; const PlaylistsRoute = () => { const navigate = useNavigate(); const [collection, setCollection] = useRecoilState(collectionStore); const session = useRecoilValue(sessionStore); /** * Tab between the public/private areas and load associated images * @param area */ const handleChangeTab: (area: AREAS) => void = (area) => setCollection({ ...collection, selectedArea: area, }); // If the user is not authed redirect them to the home page useEffect(() => { if (!session.loading && !session.session) { navigate('/'); } }, [session, navigate]); return ( <div className="p-2 text-center mb-14"> {session.session && ( <> <div className="flex items-center justify-center m-auto translate-y-1/2 w-fit"> <div className="overflow-hidden border-2 rounded-lg tabs border-base-content"> {Object.keys(AREAS).map((area) => ( <button type="button" key={area} onClick={() => handleChangeTab(AREAS[area as AREAS])} className={`tab h-10 font-bold text-sm ease-in ${collection.selectedArea === AREAS[area as AREAS] ? 'tab-active bg-base-content text-base-100' : 'bg-base-100 text-base-content' } ease-in`} > {`${AREAS[area as AREAS].charAt(0).toUpperCase()}${AREAS[ area as AREAS ] .slice(1) .toLowerCase()}`} </button> ))} </div> </div> <Dropzone> <Collection /> </Dropzone> </> )} </div> ); }; export default PlaylistsRoute;