feat: board updating on the server

This commit is contained in:
2025-08-04 16:57:54 +04:00
parent f13417e73a
commit 24de9f5446
8 changed files with 172 additions and 15 deletions

View File

@ -1,21 +1,46 @@
"use client";
import React from "react";
import { useMutation } from "@tanstack/react-query";
import { AxiosError } from "axios";
import { ScrollArea } from "@mantine/core";
import Board from "@/app/deals/components/Board/Board";
import { useBoardsContext } from "@/app/deals/contexts/BoardsContext";
import { BoardSchema } from "@/client";
import { updateBoardMutation } from "@/client/@tanstack/react-query.gen";
import SortableDnd from "@/components/SortableDnd";
import { notifications } from "@/lib/notifications";
import { ErrorBody } from "@/types/ErrorBody";
const Boards = () => {
const { boards, setSelectedBoard } = useBoardsContext();
const { boards, setSelectedBoard, refetchBoards } = useBoardsContext();
const updateBoard = useMutation({
...updateBoardMutation(),
onError: (error: AxiosError<ErrorBody>) => {
console.error(error);
notifications.error({
message: error.response?.data?.detail,
});
refetchBoards();
},
});
const renderBoard = (board: BoardSchema) => {
return <Board board={board} />;
};
const onDragEnd = (itemId: number, newLexorank: string) => {
console.log("onDragEnd:", itemId, newLexorank);
updateBoard.mutate({
path: {
boardId: itemId,
},
body: {
board: {
lexorank: newLexorank,
},
},
});
};
const selectBoard = (board: BoardSchema) => {

View File

@ -16,13 +16,14 @@ type BoardsContextState = {
setBoards: React.Dispatch<React.SetStateAction<BoardSchema[]>>;
selectedBoard: BoardSchema | null;
setSelectedBoard: React.Dispatch<React.SetStateAction<BoardSchema | null>>;
refetchBoards: () => void;
};
const BoardsContext = createContext<BoardsContextState | undefined>(undefined);
const useBoardsContextState = () => {
const { selectedProject: project } = useProjectsContext();
const { boards, setBoards } = useBoardsList({ projectId: project?.id });
const { boards, setBoards, refetch: refetchBoards } = useBoardsList({ projectId: project?.id });
const [selectedBoard, setSelectedBoard] = useState<BoardSchema | null>(
null
);
@ -48,6 +49,7 @@ const useBoardsContextState = () => {
setBoards,
selectedBoard,
setSelectedBoard,
refetchBoards,
};
};