feat: displaying and sorting groups of deals
This commit is contained in:
69
src/hooks/cruds/useDealGroupCrud.tsx
Normal file
69
src/hooks/cruds/useDealGroupCrud.tsx
Normal file
@ -0,0 +1,69 @@
|
||||
import { useMutation } from "@tanstack/react-query";
|
||||
import { UpdateDealGroupSchema } from "@/lib/client";
|
||||
import {
|
||||
addDealMutation,
|
||||
createDealGroupMutation,
|
||||
removeDealMutation,
|
||||
updateDealGroupMutation,
|
||||
} from "@/lib/client/@tanstack/react-query.gen";
|
||||
|
||||
export type GroupsCrud = {
|
||||
onUpdate: (groupId: number, group: UpdateDealGroupSchema) => void;
|
||||
// onDelete: (group: DealGroupSchema, onSuccess?: () => void) => void;
|
||||
};
|
||||
|
||||
const useDealGroupCrud = (): GroupsCrud => {
|
||||
const updateMutation = useMutation(updateDealGroupMutation());
|
||||
|
||||
const onUpdate = (groupId: number, entity: UpdateDealGroupSchema) => {
|
||||
updateMutation.mutate({
|
||||
path: {
|
||||
pk: groupId,
|
||||
},
|
||||
body: {
|
||||
entity,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
const createMutation = useMutation(createDealGroupMutation());
|
||||
|
||||
const onCreate = (draggingDealId: number, hoveredDealId: number) => {
|
||||
createMutation.mutate({
|
||||
body: {
|
||||
draggingDealId,
|
||||
hoveredDealId,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
const addDealToGroupMutation = useMutation(addDealMutation());
|
||||
|
||||
const onAddDeal = (dealId: number, groupId: number) => {
|
||||
addDealToGroupMutation.mutate({
|
||||
body: {
|
||||
dealId,
|
||||
groupId,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
const removeDealFromGroupMutation = useMutation(removeDealMutation());
|
||||
|
||||
const onRemoveDeal = (dealId: number) => {
|
||||
removeDealFromGroupMutation.mutate({
|
||||
body: {
|
||||
dealId,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
return {
|
||||
onUpdate,
|
||||
// onCreate,
|
||||
// onAddDeal,
|
||||
// onRemoveDeal,
|
||||
};
|
||||
};
|
||||
|
||||
export default useDealGroupCrud;
|
||||
Reference in New Issue
Block a user