Files
omnivore/packages/web/lib/networking/queries/useGetViewerQuery.tsx
2022-02-11 09:24:33 -08:00

54 lines
1000 B
TypeScript

import { gql } from 'graphql-request'
import useSWR from 'swr'
import { publicGqlFetcher } from '../networkHelpers'
type ViewerQueryResponse = {
viewerData?: ViewerQueryResponseData
viewerDataError?: unknown
isLoading: boolean
}
export type ViewerQueryResponseData = {
me?: UserBasicData
}
export type UserBasicData = {
id: string
name: string
isFullUser?: boolean
profile: UserProfile
}
export type UserProfile = {
id: string
username: string
pictureUrl?: string
bio?: string
}
export function useGetViewerQuery(): ViewerQueryResponse {
const query = gql`
query Viewer {
me {
id
name
isFullUser
profile {
id
username
pictureUrl
bio
}
}
}
`
const { data, error } = useSWR(query, publicGqlFetcher)
return {
viewerData: data as ViewerQueryResponseData,
viewerDataError: error, // TODO: figure out error possibilities
isLoading: !error && !data,
}
}