Files
omnivore/packages/web/lib/networking/viewer/useGetViewer.tsx

47 lines
925 B
TypeScript

import { useQuery } from '@tanstack/react-query'
import { gqlFetcher } from '../networkHelpers'
import { featureFragment } from '../fragments/featureFragment'
import { gql } from 'graphql-request'
import { UserBasicData } from '../queries/useGetViewerQuery'
export function useGetViewer() {
return useQuery({
queryKey: ['viewer'],
staleTime: Infinity,
queryFn: async () => {
const response = (await gqlFetcher(GQL_GET_VIEWER)) as ViewerData
if (!response.me) {
throw new Error('no user found')
}
return response.me
},
})
}
type ViewerData = {
me?: UserBasicData
}
const GQL_GET_VIEWER = gql`
query Viewer {
me {
id
name
isFullUser
profile {
id
username
pictureUrl
bio
}
email
source
intercomHash
featureList {
...FeatureFields
}
}
}
${featureFragment}
`