{{={= =}=}} import { deserialize } from 'wasp/core/serialization' import { useQuery, buildAndRegisterQuery } from 'wasp/client/operations' import type { QueryFunction, Query } from 'wasp/client/operations/rpc' import { api, handleApiError } from 'wasp/client/api' import { HttpMethod } from 'wasp/client' import type { AuthUser, AuthUserData } from '../server/auth/user.js' import { makeAuthUserIfPossible } from '../auth/user.js' import { UseQueryResult } from '@tanstack/react-query' // PUBLIC API export const getMe: Query = createUserGetter() // PUBLIC API export default function useAuth(): UseQueryResult { return useQuery(getMe) } function createUserGetter(): Query { const getMeRelativePath = 'auth/me' const getMeRoute = { method: HttpMethod.Get, path: `/${getMeRelativePath}` } const getMe: QueryFunction = async () => { try { const json = await api.get(getMeRoute.path).json() const userData = deserialize(json as any) return makeAuthUserIfPossible(userData) } catch (error) { throw handleApiError(error) } } return buildAndRegisterQuery(getMe, { queryCacheKey: [getMeRelativePath], queryRoute: getMeRoute, entitiesUsed: {=& entitiesGetMeDependsOn =}, }) }