import { route } from 'preact-router' import { isAdministrator, Solution as SolutionModel, SolutionStat, SolutionStatMap, User } from '../../shared/model' import { sortByStringKey } from '../../shared/utils' import { prependBaseUrl } from '../../shared/utils' import { Header } from '../components/Header' import { Solution } from '../components/Solution' import { useResource } from '../hooks' import { useLoggedInUser } from '../hooks/useCurrentUser' type RouteProps = { uid: string } export const UserPage = ({ uid }: RouteProps) => { // ottengo l'utente loggato, se è un admin le soluzioni devono mostrare i controlli speciali per admin const [currentUser] = useLoggedInUser() // ottengo le info sull'utente di questa pagina const [user] = useResource(`/api/user/${uid}`, null, user => { if (!user) { route(prependBaseUrl(`/error?message=${encodeURIComponent(`Non c'è ancora nessun utente con username "${uid}"`)}`), true) } }) // ottengo gli stat per l'utente di questa pagina const [stats] = useResource(`/api/stats`, null) if (!stats) { return <> } const userStats = stats[uid] // ottengo le soluzioni pubbliche dell'utente di questa pagina const [solutions, refreshSolutions] = useResource(`/api/solutions?user=${uid}&public`, []) const sortedSolutions = sortByStringKey(solutions, s => s.createdAt, false) return ( <>
Profilo di {user?.fullName}

Statistiche
Soluzioni inviate
Soluzioni corrette
{userStats?.sentSolutionsCount ?? 0}
{userStats?.correctSolutionsCount ?? 0}

Soluzioni notevoli
{sortedSolutions.map(solution => ( ))}
) }