feat: status editing and deleting

This commit is contained in:
2025-08-07 15:46:11 +04:00
parent 7e2dd9763b
commit e29664ecc5
12 changed files with 616 additions and 69 deletions

View File

@ -4,22 +4,17 @@ import React, { createContext, FC, useContext, useEffect } from "react";
import { useMutation, UseMutationResult } from "@tanstack/react-query";
import { AxiosError } from "axios";
import { useBoardsContext } from "@/app/deals/contexts/BoardsContext";
import useDealsList from "@/hooks/useDealsList";
import useStatusesList from "@/hooks/useStatusesList";
import { useStatusesOperations } from "@/hooks/useStatusesOperations";
import {
DealSchema,
HttpValidationError,
Options,
StatusSchema,
UpdateDealData,
UpdateDealResponse,
UpdateStatusData,
UpdateStatusResponse,
UpdateStatusSchema,
} from "@/lib/client";
import {
updateDealMutation,
updateStatusMutation,
} from "@/lib/client/@tanstack/react-query.gen";
import { updateStatusMutation } from "@/lib/client/@tanstack/react-query.gen";
import { notifications } from "@/lib/notifications";
type StatusesContextState = {
@ -31,14 +26,9 @@ type StatusesContextState = {
Options<UpdateStatusData>
>;
refetchStatuses: () => void;
deals: DealSchema[];
setDeals: React.Dispatch<React.SetStateAction<DealSchema[]>>;
updateDeal: UseMutationResult<
UpdateDealResponse,
AxiosError<HttpValidationError>,
Options<UpdateDealData>
>;
refetchDeals: () => void;
onCreateStatus: (name: string) => void;
onUpdateStatus: (statusId: number, status: UpdateStatusSchema) => void;
onDeleteStatus: (statusId: number) => void;
};
const StatusesContext = createContext<StatusesContextState | undefined>(
@ -55,12 +45,6 @@ const useStatusesContextState = () => {
boardId: selectedBoard?.id,
});
const {
deals,
setDeals,
refetch: refetchDeals,
} = useDealsList({ boardId: selectedBoard?.id });
useEffect(() => {
refetchStatuses();
}, [selectedBoard]);
@ -76,26 +60,22 @@ const useStatusesContextState = () => {
},
});
const updateDeal = useMutation({
...updateDealMutation(),
onError: error => {
console.error(error);
notifications.error({
message: error.response?.data?.detail as string | undefined,
});
refetchDeals();
},
});
const { onCreateStatus, onUpdateStatus, onDeleteStatus } =
useStatusesOperations({
statuses,
setStatuses,
refetchStatuses,
boardId: selectedBoard?.id,
});
return {
statuses,
setStatuses,
updateStatus,
refetchStatuses,
deals,
setDeals,
updateDeal,
refetchDeals,
onCreateStatus,
onUpdateStatus,
onDeleteStatus,
};
};