refactor: moved dnd part from Funnel into FunnelDnd

This commit is contained in:
2025-08-06 18:21:07 +04:00
parent 96c53380e0
commit 4b843d8e5d
23 changed files with 410 additions and 287 deletions

View File

@ -1,17 +1,43 @@
"use client";
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 { DealSchema, StatusSchema } from "@/lib/client";
import useDealsList from "@/hooks/useDealsList";
import useStatusesList from "@/hooks/useStatusesList";
import {
DealSchema,
HttpValidationError,
Options,
StatusSchema,
UpdateDealData,
UpdateDealResponse,
UpdateStatusData,
UpdateStatusResponse,
} from "@/lib/client";
import {
updateDealMutation,
updateStatusMutation,
} from "@/lib/client/@tanstack/react-query.gen";
import { notifications } from "@/lib/notifications";
type StatusesContextState = {
statuses: StatusSchema[];
setStatuses: React.Dispatch<React.SetStateAction<StatusSchema[]>>;
updateStatus: UseMutationResult<
UpdateStatusResponse,
AxiosError<HttpValidationError>,
Options<UpdateStatusData>
>;
refetchStatuses: () => void;
deals: DealSchema[];
setDeals: React.Dispatch<React.SetStateAction<DealSchema[]>>;
refetchStatuses: () => void;
updateDeal: UseMutationResult<
UpdateDealResponse,
AxiosError<HttpValidationError>,
Options<UpdateDealData>
>;
refetchDeals: () => void;
};
@ -39,12 +65,36 @@ const useStatusesContextState = () => {
refetchStatuses();
}, [selectedBoard]);
const updateStatus = useMutation({
...updateStatusMutation(),
onError: error => {
console.error(error);
notifications.error({
message: error.response?.data?.detail as string | undefined,
});
refetchStatuses();
},
});
const updateDeal = useMutation({
...updateDealMutation(),
onError: error => {
console.error(error);
notifications.error({
message: error.response?.data?.detail as string | undefined,
});
refetchDeals();
},
});
return {
statuses,
setStatuses,
updateStatus,
refetchStatuses,
deals,
setDeals,
refetchStatuses,
updateDeal,
refetchDeals,
};
};