fix: изменение структуры кода страницы канбан доски

разделение на 3 файла:
- UI
- Бизнес логика
- Обращение к бэку
This commit is contained in:
Vladiysss
2026-03-01 17:08:52 +03:00
parent aaca62a555
commit 76115361c9
4 changed files with 242 additions and 113 deletions

159
src/KBBoard/BoardLogic.js Normal file
View File

@@ -0,0 +1,159 @@
import { useCallback } from 'react';
import { useNavigate } from 'react-router-dom';
import {
loadBoardDataAPI,
createTaskAPI,
createCategoryAPI,
updateTaskAPI,
updateCategoryAPI,
deleteCategoryAPI,
deleteTaskAPI
} from './BoardAPI';
export const useBoardLogic = (id, setError, setInfo, setCategories, setLoading) => {
const navigate = useNavigate();
const loadBoardData = useCallback(async () => {
setLoading(true);
try {
setError('');
const response = await loadBoardDataAPI(id);
setInfo(response.data);
setCategories(response.data.categories || []);
} catch (err) {
if (err.response?.data?.message === 'Token Error' ||
err.response?.data?.message === 'Invalid Token') {
setError('Вы не авторизованы');
setTimeout(() => navigate('/login'), 1000);
} else {
setError('Ошибка загрузки доски');
}
} finally {
setLoading(false);
}
}, [id, setError, setInfo, setCategories, setLoading, navigate]);
const createTask = useCallback(async (taskCategori, taskTitle, taskDescription, modalCrTask) => {
setLoading(true);
try {
const newTask = {
category_id: taskCategori,
title: taskTitle,
description: taskDescription
};
await createTaskAPI(newTask);
await loadBoardData();
modalCrTask(null)();
} catch (err) {
console.error('Ошибка создания задачи:', err);
setError('Ошибка создания задачи');
} finally {
setLoading(false);
}
}, [loadBoardData, setLoading, setError]);
const createCategory = useCallback(async (categoryTitle, modalCrCateg) => {
setLoading(true);
try {
const newCategory = {
board_id: id,
title: categoryTitle
};
await createCategoryAPI(newCategory);
await loadBoardData();
} catch (err) {
console.error('Ошибка создания категории:', err);
setError(err.response?.data?.message || 'Ошибка создания категории');
} finally {
modalCrCateg();
setLoading(false);
}
}, [id, loadBoardData, setLoading, setError]);
const editTask = useCallback(async (editedTaskId, taskTitle, taskDescription, taskCategory, modalEditTask) => {
setLoading(true);
try {
await updateTaskAPI({
id: editedTaskId,
update_method: 'title',
value: taskTitle
});
await updateTaskAPI({
id: editedTaskId,
update_method: 'description',
value: taskDescription
});
await updateTaskAPI({
id: editedTaskId,
update_method: 'category',
value: Number(taskCategory)
});
await loadBoardData();
modalEditTask({}, null)();
} catch (err) {
console.error('Ошибка редактирования задачи:', err);
setError('Ошибка редактирования задачи');
} finally {
setLoading(false);
}
}, [loadBoardData, setLoading, setError]);
const editCategory = useCallback(async (editedCategId, categoryTitle, modalEditCateg) => {
setLoading(true);
try {
const updateData = {
id: editedCategId,
update_method: 'title',
value: categoryTitle
};
await updateCategoryAPI(updateData);
await loadBoardData();
} catch (err) {
console.error('Ошибка редактирования категории:', err);
setError(err.response?.data?.message || 'Ошибка редактирования категории');
} finally {
modalEditCateg({})();
setLoading(false);
}
}, [loadBoardData, setLoading, setError]);
const deleteCategory = useCallback(async (categoryId, modalDelCateg, modalEditCateg) => {
setLoading(true);
try {
await deleteCategoryAPI(categoryId);
await loadBoardData();
modalDelCateg();
modalEditCateg({})();
} catch (err) {
console.error('Ошибка удаления категории:', err);
setError('Ошибка удаления категории');
} finally {
setLoading(false);
}
}, [loadBoardData, setLoading, setError]);
const deleteTask = useCallback(async (taskId, modalDelTask, modalEditTask) => {
setLoading(true);
try {
await deleteTaskAPI(taskId);
await loadBoardData();
modalDelTask();
modalEditTask({}, null)();
} catch (err) {
console.error('Ошибка удаления задачи:', err);
setError('Ошибка удаления задачи');
} finally {
setLoading(false);
}
}, [loadBoardData, setLoading, setError]);
return {
loadBoardData,
createTask,
createCategory,
editTask,
editCategory,
deleteCategory,
deleteTask
};
};