import { useStore } from '@nanostores/react'; import { useEffect, useState } from 'react'; import { cn } from '../../../editor/utils/classname'; import { useParams } from '../../hooks/use-params'; import { useToast } from '../../hooks/use-toast'; import { httpGet } from '../../lib/http'; import { getUser } from '../../lib/jwt'; import { $teamList } from '../../stores/team'; import type { TeamListResponse } from '../TeamDropdown/TeamDropdown'; import { DashboardTabButton } from './DashboardTabButton'; import { PersonalDashboard, type BuiltInRoadmap } from './PersonalDashboard'; import { TeamDashboard } from './TeamDashboard'; type DashboardPageProps = { builtInRoleRoadmaps?: BuiltInRoadmap[]; builtInSkillRoadmaps?: BuiltInRoadmap[]; builtInBestPractices?: BuiltInRoadmap[]; isTeamPage?: boolean; }; export function DashboardPage(props: DashboardPageProps) { const { builtInRoleRoadmaps, builtInBestPractices, builtInSkillRoadmaps, isTeamPage = false, } = props; const currentUser = getUser(); const toast = useToast(); const teamList = useStore($teamList); const { t: currTeamId } = useParams(); const [isLoading, setIsLoading] = useState(true); const [selectedTeamId, setSelectedTeamId] = useState(); async function getAllTeams() { if (teamList.length > 0) { return; } const { response, error } = await httpGet( `${import.meta.env.PUBLIC_API_URL}/v1-get-user-teams`, ); if (error || !response) { toast.error(error?.message || 'Something went wrong'); return; } $teamList.set(response); } useEffect(() => { getAllTeams().finally(() => { if (currTeamId) { setSelectedTeamId(currTeamId); } setIsLoading(false); }); }, [currTeamId]); const userAvatar = currentUser?.avatar && !isLoading ? `${import.meta.env.PUBLIC_AVATAR_BASE_URL}/${currentUser.avatar}` : '/images/default-avatar.png'; return ( <>
{!isLoading && ( <> {teamList.map((team) => { const { avatar } = team; const avatarUrl = avatar ? `${import.meta.env.PUBLIC_AVATAR_BASE_URL}/${avatar}` : '/images/default-avatar.png'; return ( ); })} )}
{!selectedTeamId && !isTeamPage && (
)} {(selectedTeamId || isTeamPage) && (
)}
); }