refactor: crud objects in contexts

This commit is contained in:
2025-08-23 11:20:32 +04:00
parent f2084ae3d4
commit 6ad813ea1d
25 changed files with 120 additions and 128 deletions

View File

@ -13,7 +13,7 @@ type Props = {
};
const Board: FC<Props> = ({ board }) => {
const { selectedBoard, onUpdateBoard, onDeleteBoard } = useBoardsContext();
const { selectedBoard, boardsCrud } = useBoardsContext();
const isMobile = useIsMobile();
const [isHovered, setIsHovered] = useState(false);
@ -30,7 +30,9 @@ const Board: FC<Props> = ({ board }) => {
onMouseLeave={() => setIsHovered(false)}>
<InPlaceInput
defaultValue={board.name}
onComplete={value => onUpdateBoard(board.id, { name: value })}
onComplete={value =>
boardsCrud.onUpdate(board.id, { name: value })
}
inputStyles={{
input: {
height: 24,
@ -49,7 +51,7 @@ const Board: FC<Props> = ({ board }) => {
isHovered={
selectedBoard?.id === board.id || isHovered
}
onDeleteBoard={onDeleteBoard}
onDeleteBoard={boardsCrud.onDelete}
board={board}
startEditing={startEditing}
/>

View File

@ -11,13 +11,13 @@ import { BoardSchema } from "@/lib/client";
import styles from "./Boards.module.css";
const Boards = () => {
const { boards, setSelectedBoardId, onUpdateBoard } = useBoardsContext();
const { boards, setSelectedBoardId, boardsCrud } = useBoardsContext();
const isMobile = useIsMobile();
const renderBoard = (board: BoardSchema) => <Board board={board} />;
const onDragEnd = (itemId: number, newLexorank: string) => {
onUpdateBoard(itemId, { lexorank: newLexorank });
boardsCrud.onUpdate(itemId, { lexorank: newLexorank });
};
const selectBoard = (board: BoardSchema) => {

View File

@ -5,13 +5,13 @@ import InPlaceInput from "@/components/ui/InPlaceInput/InPlaceInput";
import styles from "./CreateBoardButton.module.css";
const CreateBoardButton = () => {
const { onCreateBoard } = useBoardsContext();
const { boardsCrud } = useBoardsContext();
return (
<Flex style={{ borderBottom: "2px solid gray" }}>
<InPlaceInput
placeholder={"Название доски"}
onComplete={onCreateBoard}
onComplete={boardsCrud.onCreate}
getChildren={startEditing => (
<Box
onClick={startEditing}

View File

@ -7,7 +7,7 @@ import useIsMobile from "@/hooks/useIsMobile";
import styles from "./CreateStatusButton.module.css";
const CreateStatusButton = () => {
const { onCreateStatus } = useStatusesContext();
const { statusesCrud } = useStatusesContext();
const isMobile = useIsMobile();
return (
@ -15,7 +15,7 @@ const CreateStatusButton = () => {
<Box className={styles["inner-container"]}>
<InPlaceInput
placeholder={"Название колонки"}
onComplete={onCreateStatus}
onComplete={statusesCrud.onCreate}
getChildren={startEditing => (
<Center
p={"sm"}

View File

@ -13,14 +13,13 @@ type Props = {
};
const StatusColumnHeader: FC<Props> = ({ status, isDragging }) => {
const { onUpdateStatus, onDeleteStatus, refetchStatuses } =
useStatusesContext();
const { statusesCrud, refetchStatuses } = useStatusesContext();
const { selectedBoard } = useBoardsContext();
const handleSave = (value: string) => {
const newValue = value.trim();
if (newValue && newValue !== status.name) {
onUpdateStatus(status.id, { name: newValue });
statusesCrud.onUpdate(status.id, { name: newValue });
}
};
@ -55,7 +54,7 @@ const StatusColumnHeader: FC<Props> = ({ status, isDragging }) => {
status={status}
handleEdit={startEditing}
refetchStatuses={refetchStatuses}
onDeleteStatus={onDeleteStatus}
onDeleteStatus={statusesCrud.onDelete}
/>
</>
)}