// imports import { useEffect } from 'react'; import { useParams, useRouter } from 'next/navigation'; // locals import UserSignal from '../signals/User'; import { useSignal } from '../signal'; import TeamsSignal, { current } from '../signals/Teams'; /** * use team * * @param teamId */ const useTeam = () => { // params const params = useParams(); const router = useRouter(); // use signal const [sUser] = useSignal(UserSignal); const [sTeams] = useSignal(TeamsSignal); const [sTeam, setTeam] = useSignal(current); // use effect useEffect(() => { // check team if ((!params.team && !sTeam?.id) || (['app', 'team'].includes(params.team))) { // set value setTeam(sTeams?.[0]); // check user if (!sUser && (['app', 'team'].includes(params.team))) { // redirect return router.push('/login'); } // return return; } console.log({ sUser, sTeams, params }); // return found team const actualTeam = sTeams?.find((t) => t.id === params.team); // set team signal if (actualTeam && (actualTeam?.id !== sTeam?.id)) { // set value setTeam(actualTeam); } }, [sUser, params.team, sTeams.map((t) => t.id).join(':')]); // return return sTeam; }; /** * export */ export default useTeam;