import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { api } from "./client.ts"; import type { CreatedProject, HubSettings, Project } from "./types.ts"; // запросы ядра: настройки и проекты; запросы модулей — в web/src/modules/<модуль>/api/queries.ts export const qk = { settings: ["settings"] as const, projects: ["projects"] as const, }; export const useSettings = () => useQuery({ queryKey: qk.settings, queryFn: () => api.get("/settings"), staleTime: Infinity }); export const useProjects = () => useQuery({ queryKey: qk.projects, queryFn: () => api.get<{ projects?: Project[] }>("/projects").then((r) => r.projects ?? []) }); // «Новый проект»: пакет обновления хаб ставит сам (batch_id), автор — viewer, чтобы доска подхватила его ход export function useCreateProject() { const qc = useQueryClient(); return useMutation({ mutationFn: (f: { label: string; name: string; board_id?: number }) => api.post("/projects", { ...f, author: "viewer" }), onSuccess: () => qc.invalidateQueries({ queryKey: qk.projects }), // ждём список: onCreated уже видит новый проект }); }