/
edwardd
/
projfair-client
Обзор
Документация
Войти
/
edwardd
/
projfair-client
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/api/ProjectApi/hooks/useGetProjectListQuery.ts
52 строки
2 KB
Alexandr Bulgatov
🚧 результат работы @trivago/prettier-plugin-sort-imports
01 июн 2023, 12:25
01 июн 2023, 12:25
84cca5e
Код
Авторство
О чём код?
import { MaybeRef, get } from '@vueuse/core'; import { UseQueryOptions, useQuery } from 'vue-query'; import { projectApi } from '@/api/ProjectApi'; import { DEFAULT_QUERY_STALE_TIME } from '@/api/baseKy'; import { ProjectFilters } from '@/models/Project'; import ProjectApiType, { OnDownloadProgress } from '../ProjectApiType'; type TQueryFnData = Awaited<ReturnType<ProjectApiType['filterProjectList']>>; export type UseGetSingleProjectQueryOptions<T = TQueryFnData> = UseQueryOptions< TQueryFnData, unknown, T, UseGetSingleProjectQueryKey >; export type UseGetProjectListQueryData = { projectFiltersRef: MaybeRef<ProjectFilters>; onDownloadProgressRef?: MaybeRef<OnDownloadProgress>; }; export type UseGetSingleProjectQueryKey = [ typeof USE_GET_PROJECT_LIST_QUERY_KEY, MaybeRef<ProjectFilters>, ]; export const USE_GET_PROJECT_LIST_QUERY_KEY = 'USE_GET_PROJECT_LIST_QUERY_KEY'; export const useProjectListQueryKey = ( projectFilters: MaybeRef<ProjectFilters>, ): UseGetSingleProjectQueryKey => [ USE_GET_PROJECT_LIST_QUERY_KEY, projectFilters, ]; export const useGetProjectListQuery = <T = TQueryFnData>( { projectFiltersRef, onDownloadProgressRef }: UseGetProjectListQueryData, options?: UseGetSingleProjectQueryOptions<T>, ) => { return useQuery( useProjectListQueryKey(projectFiltersRef), () => { const projectFilters = get(projectFiltersRef); const onDownloadProgress = get(onDownloadProgressRef); return projectApi.filterProjectList(projectFilters, onDownloadProgress); }, { staleTime: DEFAULT_QUERY_STALE_TIME, ...options, }, ); };