'use client'; import { useState, useEffect, useContext } from 'react'; import { Link, NextUiLinkClasses } from '@/src/i18n/routing'; import { Button, Card, CardHeader, CardFooter } from '@heroui/react'; import { TokenContext } from '@/utils/TokenProvider'; import Avatar from 'boring-avatars'; import { fetchMyProjects } from '@/utils/projectsControl'; import { ProjectType } from '@/types/project'; import PublicityChip from '@/components/PublicityChip'; import { LocaleCodeType } from '@/types/locale'; import { ArrowRight } from 'lucide-react'; type AccountPageMessages = { yourProjects: string; public: string; private: string; notOwnAnyProjects: string; findProjects: string; }; type Props = { messages: AccountPageMessages; locale: LocaleCodeType; }; export default function AccountPage({ messages, locale }: Props) { const context = useContext(TokenContext); const [myProjects, setMyProjects] = useState([]); useEffect(() => { async function fetchDataEffect() { if (!context.isSignedIn()) { return; } try { const data = await fetchMyProjects(context.token.access_token); setMyProjects(data); } catch (error: any) { console.error('Error in effect:', error.message); } } fetchDataEffect(); }, [context]); return ( <> {context.isSignedIn() && (

{context.token!.user!.username}

{context.token!.user!.email}

{messages.yourProjects}

{myProjects.length > 0 ? ( myProjects.map((myProject, myProjectsIndex) => { return ( {myProject.name}

{myProject.detail}

); }) ) : ( <> {messages.notOwnAnyProjects} )}
)} ); }