refactor: crud objects in contexts
This commit is contained in:
@ -5,7 +5,7 @@ import { modals } from "@mantine/modals";
|
||||
import { useBoardStatusesContext } from "@/app/deals/drawers/BoardStatusesEditorDrawer/contexts/BoardStatusesContext";
|
||||
|
||||
const CreateStatusButton: FC = () => {
|
||||
const { onCreateStatus } = useBoardStatusesContext();
|
||||
const { statusesCrud } = useBoardStatusesContext();
|
||||
|
||||
const onStartCreating = () => {
|
||||
modals.openContextModal({
|
||||
@ -13,7 +13,7 @@ const CreateStatusButton: FC = () => {
|
||||
title: "Создание колонки",
|
||||
withCloseButton: true,
|
||||
innerProps: {
|
||||
onComplete: onCreateStatus,
|
||||
onComplete: statusesCrud.onCreate,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
@ -11,7 +11,7 @@ type Props = {
|
||||
};
|
||||
|
||||
const StatusMobile: FC<Props> = ({ status, board }) => {
|
||||
const { onUpdateStatus, onDeleteStatus } = useBoardStatusesContext();
|
||||
const { statusesCrud } = useBoardStatusesContext();
|
||||
|
||||
const startEditing = () => {
|
||||
modals.openContextModal({
|
||||
@ -19,7 +19,7 @@ const StatusMobile: FC<Props> = ({ status, board }) => {
|
||||
title: "Редактирование статуса",
|
||||
withCloseButton: true,
|
||||
innerProps: {
|
||||
onComplete: name => onUpdateStatus(status.id, { name }),
|
||||
onComplete: name => statusesCrud.onUpdate(status.id, { name }),
|
||||
defaultValue: status.name,
|
||||
},
|
||||
});
|
||||
@ -38,7 +38,7 @@ const StatusMobile: FC<Props> = ({ status, board }) => {
|
||||
<StatusMenu
|
||||
status={status}
|
||||
board={board}
|
||||
onDeleteStatus={onDeleteStatus}
|
||||
onDeleteStatus={statusesCrud.onDelete}
|
||||
handleEdit={startEditing}
|
||||
withChangeOrderButton={false}
|
||||
/>
|
||||
|
||||
@ -12,7 +12,7 @@ type Props = {
|
||||
};
|
||||
|
||||
const StatusesDrawerBody: FC<Props> = ({ onClose }) => {
|
||||
const { onUpdateStatus, board, statuses } = useBoardStatusesContext();
|
||||
const { statusesCrud, board, statuses } = useBoardStatusesContext();
|
||||
|
||||
const renderDraggable = () => (
|
||||
<Box p={"xs"}>
|
||||
@ -36,7 +36,7 @@ const StatusesDrawerBody: FC<Props> = ({ onClose }) => {
|
||||
};
|
||||
|
||||
const onDragEnd = (itemId: number, newLexorank: string) =>
|
||||
onUpdateStatus(itemId, { lexorank: newLexorank });
|
||||
statusesCrud.onUpdate(itemId, { lexorank: newLexorank });
|
||||
|
||||
return (
|
||||
<>
|
||||
|
||||
@ -1,18 +1,16 @@
|
||||
"use client";
|
||||
|
||||
import React, { createContext, FC, useContext } from "react";
|
||||
import { StatusesCrud, useStatusesCrud } from "@/hooks/useStatusesCrud";
|
||||
import useStatusesList from "@/hooks/useStatusesList";
|
||||
import { useStatusesOperations } from "@/hooks/useStatusesOperations";
|
||||
import { BoardSchema, StatusSchema, UpdateStatusSchema } from "@/lib/client";
|
||||
import { BoardSchema, StatusSchema } from "@/lib/client";
|
||||
|
||||
type BoardStatusesContextState = {
|
||||
board: BoardSchema;
|
||||
statuses: StatusSchema[];
|
||||
setStatuses: React.Dispatch<React.SetStateAction<StatusSchema[]>>;
|
||||
refetchStatuses: () => void;
|
||||
onCreateStatus: (name: string) => void;
|
||||
onUpdateStatus: (statusId: number, status: UpdateStatusSchema) => void;
|
||||
onDeleteStatus: (status: StatusSchema) => void;
|
||||
statusesCrud: StatusesCrud;
|
||||
};
|
||||
|
||||
const BoardStatusesContext = createContext<
|
||||
@ -32,7 +30,7 @@ const useBoardStatusesContextState = ({ board }: Props) => {
|
||||
boardId: board.id,
|
||||
});
|
||||
|
||||
const { onCreate, onUpdate, onDelete } = useStatusesOperations({
|
||||
const statusesCrud = useStatusesCrud({
|
||||
statuses,
|
||||
setStatuses,
|
||||
refetchStatuses,
|
||||
@ -44,9 +42,7 @@ const useBoardStatusesContextState = ({ board }: Props) => {
|
||||
statuses,
|
||||
setStatuses,
|
||||
refetchStatuses,
|
||||
onCreateStatus: onCreate,
|
||||
onUpdateStatus: onUpdate,
|
||||
onDeleteStatus: onDelete,
|
||||
statusesCrud,
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@ -10,7 +10,7 @@ type Props = {
|
||||
};
|
||||
|
||||
const BoardMobile: FC<Props> = ({ board }) => {
|
||||
const { onUpdateBoard, onDeleteBoard } = useProjectBoardsContext();
|
||||
const { boardsCrud } = useProjectBoardsContext();
|
||||
|
||||
const startEditing = () => {
|
||||
modals.openContextModal({
|
||||
@ -18,7 +18,7 @@ const BoardMobile: FC<Props> = ({ board }) => {
|
||||
title: "Редактирование доски",
|
||||
withCloseButton: true,
|
||||
innerProps: {
|
||||
onComplete: name => onUpdateBoard(board.id, { name }),
|
||||
onComplete: name => boardsCrud.onUpdate(board.id, { name }),
|
||||
defaultValue: board.name,
|
||||
},
|
||||
});
|
||||
@ -37,7 +37,7 @@ const BoardMobile: FC<Props> = ({ board }) => {
|
||||
<BoardMenu
|
||||
board={board}
|
||||
startEditing={startEditing}
|
||||
onDeleteBoard={onDeleteBoard}
|
||||
onDeleteBoard={boardsCrud.onDelete}
|
||||
/>
|
||||
</Group>
|
||||
);
|
||||
|
||||
@ -12,8 +12,7 @@ type Props = {
|
||||
};
|
||||
|
||||
const BoardsDrawerBody: FC<Props> = ({ onClose }) => {
|
||||
const { boards, onUpdateBoard, project, onCreateBoard } =
|
||||
useProjectBoardsContext();
|
||||
const { boards, boardsCrud, project } = useProjectBoardsContext();
|
||||
|
||||
const renderDraggable = () => (
|
||||
<Box p={"xs"}>
|
||||
@ -34,7 +33,7 @@ const BoardsDrawerBody: FC<Props> = ({ onClose }) => {
|
||||
};
|
||||
|
||||
const onDragEnd = (itemId: number, newLexorank: string) => {
|
||||
onUpdateBoard(itemId, { lexorank: newLexorank });
|
||||
boardsCrud.onUpdate(itemId, { lexorank: newLexorank });
|
||||
};
|
||||
|
||||
return (
|
||||
@ -59,7 +58,7 @@ const BoardsDrawerBody: FC<Props> = ({ onClose }) => {
|
||||
dragHandleStyle={{ width: "auto" }}
|
||||
vertical
|
||||
/>
|
||||
<CreateBoardButton onCreateBoard={onCreateBoard} />
|
||||
<CreateBoardButton onCreateBoard={boardsCrud.onCreate} />
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
@ -1,18 +1,16 @@
|
||||
"use client";
|
||||
|
||||
import React, { createContext, FC, useContext } from "react";
|
||||
import { BoardsCrud, useBoardsCrud } from "@/hooks/useBoardsCrud";
|
||||
import useBoardsList from "@/hooks/useBoardsList";
|
||||
import { useBoardsOperations } from "@/hooks/useBoardsOperations";
|
||||
import { BoardSchema, ProjectSchema, UpdateBoardSchema } from "@/lib/client";
|
||||
import { BoardSchema, ProjectSchema } from "@/lib/client";
|
||||
|
||||
type ProjectBoardsContextState = {
|
||||
boards: BoardSchema[];
|
||||
setBoards: React.Dispatch<React.SetStateAction<BoardSchema[]>>;
|
||||
project: ProjectSchema;
|
||||
refetchBoards: () => void;
|
||||
onCreateBoard: (name: string) => void;
|
||||
onUpdateBoard: (boardId: number, board: UpdateBoardSchema) => void;
|
||||
onDeleteBoard: (board: BoardSchema) => void;
|
||||
boardsCrud: BoardsCrud;
|
||||
};
|
||||
|
||||
const ProjectBoardsContext = createContext<
|
||||
@ -30,7 +28,7 @@ const useProjectBoardsContextState = ({ project }: Props) => {
|
||||
refetch: refetchBoards,
|
||||
} = useBoardsList({ projectId: project?.id });
|
||||
|
||||
const { onCreate, onUpdate, onDelete } = useBoardsOperations({
|
||||
const boardsCrud = useBoardsCrud({
|
||||
boards,
|
||||
setBoards,
|
||||
refetchBoards,
|
||||
@ -42,9 +40,7 @@ const useProjectBoardsContextState = ({ project }: Props) => {
|
||||
setBoards,
|
||||
project,
|
||||
refetchBoards,
|
||||
onCreateBoard: onCreate,
|
||||
onUpdateBoard: onUpdate,
|
||||
onDeleteBoard: onDelete,
|
||||
boardsCrud,
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@ import { modals } from "@mantine/modals";
|
||||
import { useProjectsContext } from "@/app/deals/contexts/ProjectsContext";
|
||||
|
||||
const CreateProjectButton: FC = () => {
|
||||
const { onCreateProject } = useProjectsContext();
|
||||
const { projectsCrud } = useProjectsContext();
|
||||
|
||||
const onStartCreating = () => {
|
||||
modals.openContextModal({
|
||||
@ -13,7 +13,7 @@ const CreateProjectButton: FC = () => {
|
||||
title: "Создание проекта",
|
||||
withCloseButton: true,
|
||||
innerProps: {
|
||||
onComplete: onCreateProject,
|
||||
onComplete: projectsCrud.onCreate,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
@ -11,7 +11,7 @@ type Props = {
|
||||
};
|
||||
|
||||
const ProjectMenu: FC<Props> = ({ project, startEditing }) => {
|
||||
const { onDeleteProject } = useProjectsContext();
|
||||
const { projectsCrud } = useProjectsContext();
|
||||
|
||||
return (
|
||||
<Menu>
|
||||
@ -36,7 +36,7 @@ const ProjectMenu: FC<Props> = ({ project, startEditing }) => {
|
||||
<Menu.Item
|
||||
onClick={e => {
|
||||
e.stopPropagation();
|
||||
onDeleteProject(project);
|
||||
projectsCrud.onDelete(project);
|
||||
}}>
|
||||
<Group wrap={"nowrap"}>
|
||||
<IconTrash />
|
||||
|
||||
@ -17,7 +17,7 @@ const ProjectMobile: FC<Props> = ({
|
||||
setSelectedProjectId,
|
||||
closeDrawer,
|
||||
}) => {
|
||||
const { onUpdateProject } = useProjectsContext();
|
||||
const { projectsCrud } = useProjectsContext();
|
||||
|
||||
const startEditing = () => {
|
||||
modals.openContextModal({
|
||||
@ -25,7 +25,7 @@ const ProjectMobile: FC<Props> = ({
|
||||
title: "Редактирование проекта",
|
||||
withCloseButton: true,
|
||||
innerProps: {
|
||||
onComplete: name => onUpdateProject(project.id, { name }),
|
||||
onComplete: name => projectsCrud.onUpdate(project.id, { name }),
|
||||
defaultValue: project.name,
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user