diff --git a/client/pages/UserPage.tsx b/client/pages/UserPage.tsx index f6cd327..3f3513d 100644 --- a/client/pages/UserPage.tsx +++ b/client/pages/UserPage.tsx @@ -18,7 +18,7 @@ export const UserPage = ({ uid }: RouteProps) => { if(stats) { const userStats = stats[uid] - const [solutions, refreshSolutions] = useResource(`/api/solutions?user=${uid}`, []) + const [solutions, refreshSolutions] = useResource(`/api/solutions?user=${uid}&public`, []) const sortedSolutions = sortByStringKey(solutions, s => s.createdAt, false) return ( diff --git a/server/routes.ts b/server/routes.ts index b4a686f..98452d5 100644 --- a/server/routes.ts +++ b/server/routes.ts @@ -242,11 +242,12 @@ export async function createApiRouter() { r.get('/api/solutions', async (req, res) => { let queryUser = (req.query.user ?? null) as UserId | null let queryProblem = (req.query.problem ?? null) as ProblemId | null - + let isPublic = (req.query.public === '') + const requestUser = await getRequestUser(req) let solutions = await getSolutions(db) - // se l'utente non è loggato o se non è un amministratore allora mostra solo le soluzioni "visibili" + // se l'utente non è loggato o se non è un amministratore, mostra solo le soluzioni "visibili" if (!requestUser || !isAdministrator(requestUser.role)) { solutions = solutions.filter(s => s.visible || (requestUser && s.sentBy === requestUser.id)) } @@ -254,6 +255,11 @@ export async function createApiRouter() { if (queryUser !== null) { solutions = solutions.filter(s => s.sentBy === queryUser) } + + if(isPublic) { + solutions = solutions.filter(s => s.visible) + } + // filtra rispetto ai problemi if (queryProblem !== null) { solutions = solutions.filter(s => s.forProblem === queryProblem)