57 lines
1.1 KiB
TypeScript
57 lines
1.1 KiB
TypeScript
import { gql } from 'graphql-request'
|
|
import useSWR from 'swr'
|
|
import { publicGqlFetcher } from '../networkHelpers'
|
|
import {
|
|
SavedSearch,
|
|
savedSearchFragment,
|
|
} from '../fragments/savedSearchFragment'
|
|
|
|
type SavedSearchResponse = {
|
|
error: any
|
|
savedSearches?: SavedSearch[]
|
|
savedSearchErrors?: unknown
|
|
isLoading: boolean
|
|
}
|
|
|
|
type SavedSearchResponseData = {
|
|
filters: { filters: SavedSearch[] }
|
|
}
|
|
|
|
export function useGetSavedSearchQuery(): SavedSearchResponse {
|
|
const query = gql`
|
|
query SavedSearches {
|
|
filters {
|
|
... on FiltersSuccess {
|
|
filters {
|
|
...FiltersFragment
|
|
}
|
|
}
|
|
... on FiltersError {
|
|
errorCodes
|
|
}
|
|
}
|
|
}
|
|
${savedSearchFragment}
|
|
`
|
|
|
|
const { data, error } = useSWR(query, publicGqlFetcher)
|
|
|
|
if (data) {
|
|
const { filters } = data as SavedSearchResponseData
|
|
|
|
return {
|
|
error,
|
|
savedSearches: filters?.filters ?? [],
|
|
savedSearchErrors: error ?? {},
|
|
isLoading: false,
|
|
}
|
|
}
|
|
|
|
return {
|
|
error,
|
|
savedSearches: [],
|
|
savedSearchErrors: null,
|
|
isLoading: !error && !data,
|
|
}
|
|
}
|