/
edwardd
/
projfair-client
Обзор
Документация
Войти
/
edwardd
/
projfair-client
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/api/ProjectApi/hooks/useGetSingleProjectQuery.ts
61 строка
2 KB
Daniil Mikhaylov
refactor: Удален неиспользуемый импорт Participation и обновлен обработчик получения данных проекта
31 мар 2025, 15:11
31 мар 2025, 15:11
5498dc2
Код
Авторство
О чём код?
import { MaybeRef, get } from '@vueuse/core'; import { computed } from 'vue'; import { UseQueryOptions, useQuery } from 'vue-query'; import { projectApi } from '@/api/ProjectApi'; import { DEFAULT_QUERY_STALE_TIME } from '@/api/baseKy'; import { Project } from '@/models/Project'; import ProjectApiType from '../ProjectApiType'; type TQueryFnData = { project: Project; projectHistory: Project[] }; export type UseGetSingleProjectQueryOptions<T = TQueryFnData> = UseQueryOptions< TQueryFnData, unknown, T, UseGetSingleProjectQueryKey >; export type UseGetSingleProjectQueryKey = [ typeof USE_GET_SINGLE_PROJECT_QUERY_KEY, MaybeRef<number>, ]; export const USE_GET_SINGLE_PROJECT_QUERY_KEY = 'USE_GET_SINGLE_PROJECT_QUERY_KEY'; export const getSingleProjectQueryKey = ( projectId: MaybeRef<number>, ): UseGetSingleProjectQueryKey => [USE_GET_SINGLE_PROJECT_QUERY_KEY, projectId]; export const useGetSingleProjectQuery = <T = TQueryFnData>( projectIdRef: MaybeRef<number>, options?: UseGetSingleProjectQueryOptions<T>, ) => { const enabled = computed(() => { const projectId = get(projectIdRef); return typeof projectId === 'number' && !isNaN(projectId); }); return useQuery( getSingleProjectQueryKey(projectIdRef), async (data) => { let projectId = get(projectIdRef); if (isNaN(projectId)) { projectId = data.queryKey[1] as number; } const [project, projectHistory] = await Promise.all([ projectApi.getSingleProject(projectId), projectApi.getProjectHistory(projectId), ]); return { project, projectHistory }; }, { staleTime: DEFAULT_QUERY_STALE_TIME, enabled, ...options, }, ); };