omnivore/packages/web/lib/networking/queries/useGetSavedSearchQuery.tsx

57 lines
1.1 KiB
TypeScript
Raw Normal View History

2023-08-30 17:37:24 +00:00
import { gql } from 'graphql-request'
import useSWR from 'swr'
import { publicGqlFetcher } from '../networkHelpers'
2023-09-25 05:36:32 +00:00
import {
SavedSearch,
savedSearchFragment,
} from '../fragments/savedSearchFragment'
2023-08-30 17:37:24 +00:00
type SavedSearchResponse = {
error: any
2023-08-30 17:37:24 +00:00
savedSearches?: SavedSearch[]
savedSearchErrors?: unknown
isLoading: boolean
}
type SavedSearchResponseData = {
filters: { filters: SavedSearch[] }
}
export function useGetSavedSearchQuery(): SavedSearchResponse {
const query = gql`
query SavedSearches {
2023-09-25 05:36:32 +00:00
filters {
... on FiltersSuccess {
filters {
2023-08-30 17:37:24 +00:00
...FiltersFragment
}
}
... on FiltersError {
errorCodes
}
}
}
${savedSearchFragment}
`
2023-09-25 05:36:32 +00:00
const { data, error } = useSWR(query, publicGqlFetcher)
2023-08-30 17:37:24 +00:00
2023-09-25 05:36:32 +00:00
if (data) {
2023-08-30 17:37:24 +00:00
const { filters } = data as SavedSearchResponseData
return {
error,
2023-08-30 17:37:24 +00:00
savedSearches: filters?.filters ?? [],
savedSearchErrors: error ?? {},
isLoading: false,
}
}
return {
error,
2023-08-30 17:37:24 +00:00
savedSearches: [],
savedSearchErrors: null,
2023-09-25 05:36:32 +00:00
isLoading: !error && !data,
2023-08-30 17:37:24 +00:00
}
}