diff --git a/src/app/deals/components/desktop/DealsTable/DealsTable.tsx b/src/app/deals/components/desktop/DealsTable/DealsTable.tsx index 3083477..05f7386 100644 --- a/src/app/deals/components/desktop/DealsTable/DealsTable.tsx +++ b/src/app/deals/components/desktop/DealsTable/DealsTable.tsx @@ -59,7 +59,7 @@ const DealsTable = () => { } as MRT_TableOptions } /> - {paginationInfo.totalPages > 1 && ( + {paginationInfo && paginationInfo.totalPages > 1 && ( >; + setBoards: (boards: BoardSchema[]) => void; selectedBoard: BoardSchema | null; setSelectedBoardId: React.Dispatch>; refetchBoards: () => void; @@ -22,6 +22,7 @@ const useBoardsContextState = (): BoardsContextState => { boards, setBoards, refetch: refetchBoards, + queryKey, } = useBoardsList({ projectId: project?.id }); const [selectedBoardId, setSelectedBoardId] = useState(null); @@ -34,8 +35,7 @@ const useBoardsContextState = (): BoardsContextState => { const boardsCrud = useBoardsCrud({ boards, - setBoards, - refetchBoards, + queryKey, projectId: project?.id, }); diff --git a/src/app/deals/contexts/DealsContext.tsx b/src/app/deals/contexts/DealsContext.tsx index 5aa29ee..c6b606a 100644 --- a/src/app/deals/contexts/DealsContext.tsx +++ b/src/app/deals/contexts/DealsContext.tsx @@ -9,10 +9,10 @@ import makeContext from "@/lib/contextFactory/contextFactory"; type DealsContextState = { deals: DealSchema[]; - setDeals: React.Dispatch>; + setDeals: (deals: DealSchema[]) => void; refetchDeals: () => void; dealsCrud: DealsCrud; - paginationInfo: PaginationInfoSchema; + paginationInfo?: PaginationInfoSchema; page: number; setPage: React.Dispatch>; }; diff --git a/src/app/deals/contexts/ProjectsContext.tsx b/src/app/deals/contexts/ProjectsContext.tsx index c58391b..9f35e0e 100644 --- a/src/app/deals/contexts/ProjectsContext.tsx +++ b/src/app/deals/contexts/ProjectsContext.tsx @@ -9,17 +9,13 @@ import makeContext from "@/lib/contextFactory/contextFactory"; type ProjectsContextState = { selectedProject: ProjectSchema | null; setSelectedProjectId: React.Dispatch>; - refetchProjects: () => Promise; + refetchProjects: () => void; projects: ProjectSchema[]; projectsCrud: ProjectsCrud; }; const useProjectsContextState = (): ProjectsContextState => { - const { - projects, - setProjects, - refetch: refetchProjects, - } = useProjectsList(); + const { projects, refetch: refetchProjects, queryKey } = useProjectsList(); const [selectedProjectId, setSelectedProjectId] = useState( null @@ -31,11 +27,7 @@ const useProjectsContextState = (): ProjectsContextState => { setSelectedProjectId(projects[0].id); } - const projectsCrud = useProjectsCrud({ - projects, - setProjects, - refetchProjects, - }); + const projectsCrud = useProjectsCrud({ queryKey }); return { projects, diff --git a/src/app/deals/contexts/StatusesContext.tsx b/src/app/deals/contexts/StatusesContext.tsx index 8c52928..ec28ef6 100644 --- a/src/app/deals/contexts/StatusesContext.tsx +++ b/src/app/deals/contexts/StatusesContext.tsx @@ -1,6 +1,5 @@ "use client"; -import React from "react"; import { useBoardsContext } from "@/app/deals/contexts/BoardsContext"; import { StatusesCrud, useStatusesCrud } from "@/hooks/cruds/useStatusesCrud"; import useStatusesList from "@/hooks/lists/useStatusesList"; @@ -9,7 +8,7 @@ import makeContext from "@/lib/contextFactory/contextFactory"; type StatusesContextState = { statuses: StatusSchema[]; - setStatuses: React.Dispatch>; + setStatuses: (statuses: StatusSchema[]) => void; refetchStatuses: () => void; statusesCrud: StatusesCrud; }; @@ -20,14 +19,14 @@ const useStatusesContextState = (): StatusesContextState => { statuses, setStatuses, refetch: refetchStatuses, + queryKey, } = useStatusesList({ boardId: selectedBoard?.id, }); const statusesCrud = useStatusesCrud({ statuses, - setStatuses, - refetchStatuses, + queryKey, boardId: selectedBoard?.id, }); diff --git a/src/app/deals/drawers/BoardStatusesEditorDrawer/contexts/BoardStatusesContext.tsx b/src/app/deals/drawers/BoardStatusesEditorDrawer/contexts/BoardStatusesContext.tsx index 221bd1d..d3edd0a 100644 --- a/src/app/deals/drawers/BoardStatusesEditorDrawer/contexts/BoardStatusesContext.tsx +++ b/src/app/deals/drawers/BoardStatusesEditorDrawer/contexts/BoardStatusesContext.tsx @@ -1,6 +1,5 @@ "use client"; -import React from "react"; import { StatusesCrud, useStatusesCrud } from "@/hooks/cruds/useStatusesCrud"; import useStatusesList from "@/hooks/lists/useStatusesList"; import { BoardSchema, StatusSchema } from "@/lib/client"; @@ -9,7 +8,7 @@ import makeContext from "@/lib/contextFactory/contextFactory"; type BoardStatusesContextState = { board: BoardSchema; statuses: StatusSchema[]; - setStatuses: React.Dispatch>; + setStatuses: (statuses: StatusSchema[]) => void; refetchStatuses: () => void; statusesCrud: StatusesCrud; }; @@ -25,15 +24,15 @@ const useBoardStatusesContextState = ({ statuses, setStatuses, refetch: refetchStatuses, + queryKey, } = useStatusesList({ boardId: board.id, }); const statusesCrud = useStatusesCrud({ statuses, - setStatuses, - refetchStatuses, boardId: board.id, + queryKey, }); return { diff --git a/src/app/deals/drawers/ProjectBoardsEditorDrawer/contexts/ProjectBoardsContext.tsx b/src/app/deals/drawers/ProjectBoardsEditorDrawer/contexts/ProjectBoardsContext.tsx index 788834b..797ae6e 100644 --- a/src/app/deals/drawers/ProjectBoardsEditorDrawer/contexts/ProjectBoardsContext.tsx +++ b/src/app/deals/drawers/ProjectBoardsEditorDrawer/contexts/ProjectBoardsContext.tsx @@ -1,6 +1,5 @@ "use client"; -import React from "react"; import { BoardsCrud, useBoardsCrud } from "@/hooks/cruds/useBoardsCrud"; import useBoardsList from "@/hooks/lists/useBoardsList"; import { BoardSchema, ProjectSchema } from "@/lib/client"; @@ -8,7 +7,7 @@ import makeContext from "@/lib/contextFactory/contextFactory"; type ProjectBoardsContextState = { boards: BoardSchema[]; - setBoards: React.Dispatch>; + setBoards: (boards: BoardSchema[]) => void; project: ProjectSchema; refetchBoards: () => void; boardsCrud: BoardsCrud; @@ -23,12 +22,12 @@ const useProjectBoardsContextState = ({ project }: Props) => { boards, setBoards, refetch: refetchBoards, + queryKey, } = useBoardsList({ projectId: project?.id }); const boardsCrud = useBoardsCrud({ boards, - setBoards, - refetchBoards, + queryKey, projectId: project?.id, }); diff --git a/src/app/deals/hooks/useDealsAndStatusesDnd.ts b/src/app/deals/hooks/useDealsAndStatusesDnd.ts index 5c01c82..5fef23f 100644 --- a/src/app/deals/hooks/useDealsAndStatusesDnd.ts +++ b/src/app/deals/hooks/useDealsAndStatusesDnd.ts @@ -112,7 +112,7 @@ const useDealsAndStatusesDnd = (): ReturnType => { ); if (!overStatusId) return; - debouncedSetDeals(deals => + debouncedSetDeals( deals.map(deal => deal.id === activeDealId ? { @@ -142,7 +142,7 @@ const useDealsAndStatusesDnd = (): ReturnType => { const newRank = getNewStatusRank(activeStatusId, overStatusId); if (!newRank) return; - debouncedSetStatuses(statuses => + debouncedSetStatuses( statuses.map(status => status.id === activeStatusId ? { ...status, lexorank: newRank } diff --git a/src/hooks/cruds/baseCrud/useCrudOperations.tsx b/src/hooks/cruds/baseCrud/useCrudOperations.tsx index 6429833..3f37911 100644 --- a/src/hooks/cruds/baseCrud/useCrudOperations.tsx +++ b/src/hooks/cruds/baseCrud/useCrudOperations.tsx @@ -1,5 +1,9 @@ import React from "react"; -import { useMutation, UseMutationOptions } from "@tanstack/react-query"; +import { + useMutation, + UseMutationOptions, + useQueryClient, +} from "@tanstack/react-query"; import { AxiosError } from "axios"; import { Text } from "@mantine/core"; import { modals } from "@mantine/modals"; @@ -20,9 +24,8 @@ type CrudOperations = { }; type UseEntityOperationsProps = { - entities: TEntity[]; - setEntities: React.Dispatch>; - refetch: () => void; + key: string; + queryKey: any[]; mutations: { create: UseMutationOptions< any, @@ -50,9 +53,8 @@ const useCrudOperations = < TUpdate extends object, TCreate extends object, >({ - entities, - setEntities, - refetch, + key, + queryKey, mutations, getCreateEntity, getUpdateEntity, @@ -61,30 +63,81 @@ const useCrudOperations = < TEntity, TUpdate > => { - const onError = (error: AxiosError) => { + const queryClient = useQueryClient(); + + const onError = ( + error: AxiosError, + _: any, + context: any + ) => { console.error(error); notifications.error({ message: error.response?.data?.detail as string | undefined, }); - refetch(); + if (context?.previous) { + queryClient.setQueryData(queryKey, context.previous); + } }; + const onSettled = () => queryClient.invalidateQueries({ queryKey }); + const createMutation = useMutation({ ...mutations.create, onError, - onSuccess: (res: { entity: TEntity }) => { - setEntities([...entities, res.entity]); - }, + onSettled, }); const updateMutation = useMutation({ ...mutations.update, onError, + onSettled, + onMutate: async ({ body: { entity: update } }) => { + await queryClient.cancelQueries({ queryKey: [key] }); + + const previous = queryClient.getQueryData(queryKey); + + queryClient.setQueryData(queryKey, (old: { items: TEntity[] }) => { + let updated = old.items.map((entity: TEntity) => + entity.id === update.id + ? getUpdateEntity(entity, update) + : entity + ); + + if ("lexorank" in update) { + updated = sortByLexorank( + updated as (TEntity & { lexorank: string })[] + ); + } + + return { + ...old, + items: updated, + }; + }); + + return { previous }; + }, }); const deleteMutation = useMutation({ ...mutations.delete, onError, + onSettled, + onMutate: async ({ path: { pk } }) => { + await queryClient.cancelQueries({ queryKey: [key] }); + + const previous = queryClient.getQueryData(queryKey); + + queryClient.setQueryData(queryKey, (old: { items: TEntity[] }) => { + const filtered = old.items.filter(e => e.id !== pk); + return { + ...old, + items: filtered, + }; + }); + + return { previous }; + }, }); const onCreate = (name: string) => { @@ -99,7 +152,7 @@ const useCrudOperations = < }); }; - const onUpdate = (id: number, update: TUpdate) => { + const onUpdate = async (id: number, update: TUpdate) => { updateMutation.mutate({ body: { entity: update, @@ -107,17 +160,6 @@ const useCrudOperations = < path: { pk: id }, query: undefined, }); - setEntities(prev => { - const updated = prev.map(entity => - entity.id === id ? getUpdateEntity(entity, update) : entity - ); - if ("lexorank" in update) { - return sortByLexorank( - updated as (TEntity & { lexorank: string })[] - ); - } - return updated; - }); }; const onDelete = (entity: TEntity, onSuccess?: () => void) => { @@ -131,7 +173,6 @@ const useCrudOperations = < onConfirm: () => { deleteMutation.mutate({ path: { pk: entity.id } } as any); onSuccess && onSuccess(); - setEntities(prev => prev.filter(e => e.id !== entity.id)); }, }); }; diff --git a/src/hooks/cruds/useBoardsCrud.tsx b/src/hooks/cruds/useBoardsCrud.tsx index 0f0d793..18e1153 100644 --- a/src/hooks/cruds/useBoardsCrud.tsx +++ b/src/hooks/cruds/useBoardsCrud.tsx @@ -1,4 +1,3 @@ -import React from "react"; import { LexoRank } from "lexorank"; import { useCrudOperations } from "@/hooks/cruds/baseCrud"; import { @@ -15,9 +14,8 @@ import { getMaxByLexorank, getNewLexorank } from "@/utils/lexorank"; type UseBoardsOperationsProps = { boards: BoardSchema[]; - setBoards: React.Dispatch>; - refetchBoards: () => void; projectId?: number; + queryKey: any[]; }; export type BoardsCrud = { @@ -28,15 +26,13 @@ export type BoardsCrud = { export const useBoardsCrud = ({ boards, - setBoards, - refetchBoards, projectId, + queryKey, }: UseBoardsOperationsProps): BoardsCrud => { return useCrudOperations( { - entities: boards, - setEntities: setBoards, - refetch: refetchBoards, + key: "getBoards", + queryKey, mutations: { create: createBoardMutation(), update: updateBoardMutation(), diff --git a/src/hooks/cruds/useDealsCrud.tsx b/src/hooks/cruds/useDealsCrud.tsx index 6eefe57..f915829 100644 --- a/src/hooks/cruds/useDealsCrud.tsx +++ b/src/hooks/cruds/useDealsCrud.tsx @@ -1,4 +1,3 @@ -import React from "react"; import { LexoRank } from "lexorank"; import { useCrudOperations } from "@/hooks/cruds/baseCrud"; import { @@ -16,10 +15,9 @@ import { getNewLexorank } from "@/utils/lexorank"; type UseDealsOperationsProps = { deals: DealSchema[]; - setDeals: React.Dispatch>; - refetchDeals: () => void; boardId?: number; statuses: StatusSchema[]; + queryKey: any[]; }; export type DealsCrud = { @@ -30,15 +28,13 @@ export type DealsCrud = { export const useDealsCrud = ({ deals, - setDeals, - refetchDeals, boardId, statuses, + queryKey, }: UseDealsOperationsProps): DealsCrud => { return useCrudOperations({ - entities: deals, - setEntities: setDeals, - refetch: refetchDeals, + key: "getDeals", + queryKey, mutations: { create: createDealMutation(), update: updateDealMutation(), diff --git a/src/hooks/cruds/useProjectsCrud.tsx b/src/hooks/cruds/useProjectsCrud.tsx index f48c97f..cc9140e 100644 --- a/src/hooks/cruds/useProjectsCrud.tsx +++ b/src/hooks/cruds/useProjectsCrud.tsx @@ -1,4 +1,3 @@ -import React from "react"; import { useCrudOperations } from "@/hooks/cruds/baseCrud"; import { CreateProjectSchema, @@ -12,9 +11,7 @@ import { } from "@/lib/client/@tanstack/react-query.gen"; type Props = { - projects: ProjectSchema[]; - setProjects: React.Dispatch>; - refetchProjects: () => void; + queryKey: any[]; }; export type ProjectsCrud = { @@ -23,19 +20,14 @@ export type ProjectsCrud = { onDelete: (project: ProjectSchema) => void; }; -export const useProjectsCrud = ({ - projects, - setProjects, - refetchProjects, -}: Props): ProjectsCrud => { +export const useProjectsCrud = ({ queryKey }: Props): ProjectsCrud => { return useCrudOperations< ProjectSchema, UpdateProjectSchema, CreateProjectSchema >({ - entities: projects, - setEntities: setProjects, - refetch: refetchProjects, + key: "getProjects", + queryKey, mutations: { create: createProjectMutation(), update: updateProjectMutation(), diff --git a/src/hooks/cruds/useStatusesCrud.tsx b/src/hooks/cruds/useStatusesCrud.tsx index 48511fe..dd111cf 100644 --- a/src/hooks/cruds/useStatusesCrud.tsx +++ b/src/hooks/cruds/useStatusesCrud.tsx @@ -1,4 +1,3 @@ -import React from "react"; import { LexoRank } from "lexorank"; import { useCrudOperations } from "@/hooks/cruds/baseCrud"; import { @@ -15,9 +14,8 @@ import { getMaxByLexorank, getNewLexorank } from "@/utils/lexorank"; type Props = { statuses: StatusSchema[]; - setStatuses: React.Dispatch>; - refetchStatuses: () => void; boardId?: number; + queryKey: any[]; }; export type StatusesCrud = { @@ -28,18 +26,16 @@ export type StatusesCrud = { export const useStatusesCrud = ({ statuses, - setStatuses, - refetchStatuses, boardId, + queryKey, }: Props): StatusesCrud => { return useCrudOperations< StatusSchema, UpdateStatusSchema, CreateStatusSchema >({ - entities: statuses, - setEntities: setStatuses, - refetch: refetchStatuses, + key: "getStatuses", + queryKey, mutations: { create: createStatusMutation(), update: updateStatusMutation(), diff --git a/src/hooks/lists/useBoardsList.ts b/src/hooks/lists/useBoardsList.ts index 31ea0e9..41b99a6 100644 --- a/src/hooks/lists/useBoardsList.ts +++ b/src/hooks/lists/useBoardsList.ts @@ -1,7 +1,9 @@ -import { useEffect, useState } from "react"; -import { useQueryClient } from "@tanstack/react-query"; +import { useQuery, useQueryClient } from "@tanstack/react-query"; import { BoardSchema } from "@/lib/client"; -import { getBoardsOptions } from "@/lib/client/@tanstack/react-query.gen"; +import { + getBoardsOptions, + getBoardsQueryKey, +} from "@/lib/client/@tanstack/react-query.gen"; type Props = { projectId?: number; @@ -9,26 +11,29 @@ type Props = { const useBoardsList = ({ projectId }: Props) => { const queryClient = useQueryClient(); + const options = { + path: { projectId: projectId ?? 0 }, + }; + const { data, refetch } = useQuery({ + ...getBoardsOptions(options), + enabled: !!projectId, + }); - const [boards, setBoards] = useState([]); + const queryKey = getBoardsQueryKey(options); - const fetchBoards = () => { - if (!projectId) return; - queryClient - .fetchQuery({ - ...getBoardsOptions({ path: { projectId } }), - }) - .then(data => { - setBoards(data.boards); - }) - .catch(err => console.error(err)); + const setBoards = (boards: BoardSchema[]) => { + queryClient.setQueryData(queryKey, (old: { items: BoardSchema[] }) => ({ + ...old, + items: boards, + })); }; - useEffect(() => { - fetchBoards(); - }, [projectId]); - - return { boards, setBoards, refetch: fetchBoards }; + return { + boards: data?.items ?? [], + setBoards, + refetch, + queryKey, + }; }; export default useBoardsList; diff --git a/src/hooks/lists/useDealsList.ts b/src/hooks/lists/useDealsList.ts index f6df120..a8519ec 100644 --- a/src/hooks/lists/useDealsList.ts +++ b/src/hooks/lists/useDealsList.ts @@ -1,7 +1,10 @@ -import { useEffect, useState } from "react"; -import { useQueryClient } from "@tanstack/react-query"; -import { DealSchema, PaginationInfoSchema } from "@/lib/client"; -import { getDealsOptions } from "@/lib/client/@tanstack/react-query.gen"; +import { useState } from "react"; +import { useQuery, useQueryClient } from "@tanstack/react-query"; +import { DealSchema } from "@/lib/client"; +import { + getDealsOptions, + getDealsQueryKey, +} from "@/lib/client/@tanstack/react-query.gen"; type Props = { boardId?: number | null; @@ -14,47 +17,40 @@ const useDealsList = ({ projectId = null, boardId = null, }: Props) => { - const [deals, setDeals] = useState([]); - const [page, setPage] = useState(1); - const [paginationInfo, setPaginationInfo] = useState({ - totalPages: 1, - totalItems: 1, - }); - const itemsPerPage = 10; const queryClient = useQueryClient(); + const [page, setPage] = useState(1); + const itemsPerPage = 10; - const refetchDeals = () => { - if (!boardId && !projectId) return; + const options = { + query: { + boardId: boardId ?? null, + projectId: projectId ?? null, + page: withPagination ? page : null, + itemsPerPage: withPagination ? itemsPerPage : null, + }, + }; + const { data, refetch } = useQuery({ + ...getDealsOptions(options), + enabled: !!boardId || !!projectId, + }); - queryClient - .fetchQuery({ - ...getDealsOptions({ - query: { - boardId: boardId ?? null, - projectId: projectId ?? null, - page: withPagination ? page : null, - itemsPerPage: withPagination ? itemsPerPage : null, - }, - }), - }) - .then(data => { - setDeals(data.deals); - setPaginationInfo(data.paginationInfo); - }) - .catch(err => console.error(err)); + const queryKey = getDealsQueryKey(options); + + const setDeals = (deals: DealSchema[]) => { + queryClient.setQueryData(queryKey, (old: { items: DealSchema[] }) => ({ + ...old, + items: deals, + })); }; - useEffect(() => { - refetchDeals(); - }, [boardId, withPagination, projectId, page]); - return { - deals, + deals: data?.items ?? [], setDeals, - refetchDeals, + refetchDeals: refetch, page, setPage, - paginationInfo, + paginationInfo: data?.paginationInfo, + queryKey, }; }; diff --git a/src/hooks/lists/useProjectsList.ts b/src/hooks/lists/useProjectsList.ts index fa9916d..2d4a62d 100644 --- a/src/hooks/lists/useProjectsList.ts +++ b/src/hooks/lists/useProjectsList.ts @@ -1,29 +1,34 @@ -import { useEffect, useState } from "react"; -import { useQueryClient } from "@tanstack/react-query"; +import { useQuery, useQueryClient } from "@tanstack/react-query"; import { ProjectSchema } from "@/lib/client"; -import { getProjectsOptions } from "@/lib/client/@tanstack/react-query.gen"; +import { + getProjectsOptions, + getProjectsQueryKey, +} from "@/lib/client/@tanstack/react-query.gen"; const useProjectsList = () => { const queryClient = useQueryClient(); + const { data, refetch } = useQuery({ + ...getProjectsOptions(), + }); - const [projects, setProjects] = useState([]); + const queryKey = getProjectsQueryKey(); - const fetchProjects = async () => { - return queryClient - .fetchQuery({ - ...getProjectsOptions(), + const setProjects = (statuses: ProjectSchema[]) => { + queryClient.setQueryData( + queryKey, + (old: { items: ProjectSchema[] }) => ({ + ...old, + items: statuses, }) - .then(data => { - setProjects(data.projects); - }) - .catch(err => console.error(err)); + ); }; - useEffect(() => { - fetchProjects(); - }, []); - - return { projects, setProjects, refetch: fetchProjects }; + return { + projects: data?.items ?? [], + setProjects, + refetch, + queryKey, + }; }; export default useProjectsList; diff --git a/src/hooks/lists/useStatusesList.ts b/src/hooks/lists/useStatusesList.ts index 4879cab..f4cc63f 100644 --- a/src/hooks/lists/useStatusesList.ts +++ b/src/hooks/lists/useStatusesList.ts @@ -1,7 +1,9 @@ -import { useEffect, useState } from "react"; -import { useQueryClient } from "@tanstack/react-query"; +import { useQuery, useQueryClient } from "@tanstack/react-query"; import { StatusSchema } from "@/lib/client"; -import { getStatusesOptions } from "@/lib/client/@tanstack/react-query.gen"; +import { + getStatusesOptions, + getStatusesQueryKey, +} from "@/lib/client/@tanstack/react-query.gen"; type Props = { boardId?: number; @@ -9,30 +11,32 @@ type Props = { const useStatusesList = ({ boardId }: Props) => { const queryClient = useQueryClient(); + const options = { + path: { boardId: boardId ?? 0 }, + }; + const { data, refetch } = useQuery({ + ...getStatusesOptions(options), + enabled: !!boardId, + }); - const [statuses, setStatuses] = useState([]); + const queryKey = getStatusesQueryKey(options); - const fetchStatuses = () => { - if (!boardId) { - setStatuses([]); - return; - } - - queryClient - .fetchQuery({ - ...getStatusesOptions({ path: { boardId } }), + const setStatuses = (statuses: StatusSchema[]) => { + queryClient.setQueryData( + queryKey, + (old: { items: StatusSchema[] }) => ({ + ...old, + items: statuses, }) - .then(data => { - setStatuses(data.statuses); - }) - .catch(err => console.error(err)); + ); }; - useEffect(() => { - fetchStatuses(); - }, [boardId]); - - return { statuses, setStatuses, refetch: fetchStatuses }; + return { + statuses: data?.items ?? [], + setStatuses, + refetch, + queryKey, + }; }; export default useStatusesList; diff --git a/src/lib/client/types.gen.ts b/src/lib/client/types.gen.ts index e1179ae..30c1e60 100644 --- a/src/lib/client/types.gen.ts +++ b/src/lib/client/types.gen.ts @@ -229,9 +229,9 @@ export type DeleteStatusResponse = { */ export type GetBoardsResponse = { /** - * Boards + * Items */ - boards: Array; + items: Array; }; /** @@ -239,9 +239,9 @@ export type GetBoardsResponse = { */ export type GetDealsResponse = { /** - * Deals + * Items */ - deals: Array; + items: Array; paginationInfo: PaginationInfoSchema; }; @@ -250,9 +250,9 @@ export type GetDealsResponse = { */ export type GetProjectsResponse = { /** - * Projects + * Items */ - projects: Array; + items: Array; }; /** @@ -260,9 +260,9 @@ export type GetProjectsResponse = { */ export type GetStatusesResponse = { /** - * Statuses + * Items */ - statuses: Array; + items: Array; }; /** diff --git a/src/lib/client/zod.gen.ts b/src/lib/client/zod.gen.ts index 2420cc2..716514c 100644 --- a/src/lib/client/zod.gen.ts +++ b/src/lib/client/zod.gen.ts @@ -168,7 +168,7 @@ export const zDeleteStatusResponse = z.object({ * GetBoardsResponse */ export const zGetBoardsResponse = z.object({ - boards: z.array(zBoardSchema), + items: z.array(zBoardSchema), }); /** @@ -183,7 +183,7 @@ export const zPaginationInfoSchema = z.object({ * GetDealsResponse */ export const zGetDealsResponse = z.object({ - deals: z.array(zDealSchema), + items: z.array(zDealSchema), paginationInfo: zPaginationInfoSchema, }); @@ -191,14 +191,14 @@ export const zGetDealsResponse = z.object({ * GetProjectsResponse */ export const zGetProjectsResponse = z.object({ - projects: z.array(zProjectSchema), + items: z.array(zProjectSchema), }); /** * GetStatusesResponse */ export const zGetStatusesResponse = z.object({ - statuses: z.array(zStatusSchema), + items: z.array(zStatusSchema), }); /**