fix: only tanstack usage in optimistic updates

This commit is contained in:
2025-08-29 23:39:51 +04:00
parent 8b06d08664
commit 568bd4ad36
19 changed files with 218 additions and 198 deletions

View File

@ -59,7 +59,7 @@ const DealsTable = () => {
} as MRT_TableOptions<DealSchema>
}
/>
{paginationInfo.totalPages > 1 && (
{paginationInfo && paginationInfo.totalPages > 1 && (
<Group justify={"flex-end"}>
<Pagination
withEdges

View File

@ -9,7 +9,7 @@ import makeContext from "@/lib/contextFactory/contextFactory";
type BoardsContextState = {
boards: BoardSchema[];
setBoards: React.Dispatch<React.SetStateAction<BoardSchema[]>>;
setBoards: (boards: BoardSchema[]) => void;
selectedBoard: BoardSchema | null;
setSelectedBoardId: React.Dispatch<React.SetStateAction<number | null>>;
refetchBoards: () => void;
@ -22,6 +22,7 @@ const useBoardsContextState = (): BoardsContextState => {
boards,
setBoards,
refetch: refetchBoards,
queryKey,
} = useBoardsList({ projectId: project?.id });
const [selectedBoardId, setSelectedBoardId] = useState<number | null>(null);
@ -34,8 +35,7 @@ const useBoardsContextState = (): BoardsContextState => {
const boardsCrud = useBoardsCrud({
boards,
setBoards,
refetchBoards,
queryKey,
projectId: project?.id,
});

View File

@ -9,10 +9,10 @@ import makeContext from "@/lib/contextFactory/contextFactory";
type DealsContextState = {
deals: DealSchema[];
setDeals: React.Dispatch<React.SetStateAction<DealSchema[]>>;
setDeals: (deals: DealSchema[]) => void;
refetchDeals: () => void;
dealsCrud: DealsCrud;
paginationInfo: PaginationInfoSchema;
paginationInfo?: PaginationInfoSchema;
page: number;
setPage: React.Dispatch<React.SetStateAction<number>>;
};

View File

@ -9,17 +9,13 @@ import makeContext from "@/lib/contextFactory/contextFactory";
type ProjectsContextState = {
selectedProject: ProjectSchema | null;
setSelectedProjectId: React.Dispatch<React.SetStateAction<number | null>>;
refetchProjects: () => Promise<void>;
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<number | null>(
null
@ -31,11 +27,7 @@ const useProjectsContextState = (): ProjectsContextState => {
setSelectedProjectId(projects[0].id);
}
const projectsCrud = useProjectsCrud({
projects,
setProjects,
refetchProjects,
});
const projectsCrud = useProjectsCrud({ queryKey });
return {
projects,

View File

@ -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<React.SetStateAction<StatusSchema[]>>;
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,
});

View File

@ -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<React.SetStateAction<StatusSchema[]>>;
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 {

View File

@ -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<React.SetStateAction<BoardSchema[]>>;
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,
});

View File

@ -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 }