feat: добавлена возможность покинуть доску

fix: исправлена ошибка при добавлении участника в доску
This commit is contained in:
Vladiysss
2026-03-07 19:12:56 +03:00
parent c52e46a5e9
commit 5ac938b9ef
2 changed files with 49 additions and 6 deletions

View File

@@ -5,7 +5,7 @@ import {
loadBoardDataAPI, updateBoardsAPI, deleteBoardsAPI, loadBoardDataAPI, updateBoardsAPI, deleteBoardsAPI,
createTaskAPI, updateTaskAPI, deleteTaskAPI, createTaskAPI, updateTaskAPI, deleteTaskAPI,
createCategoryAPI, updateCategoryAPI, deleteCategoryAPI, createCategoryAPI, updateCategoryAPI, deleteCategoryAPI,
addMemberAPI, assignMemberAPI, unassignMemberAPI, addMemberAPI, assignMemberAPI, unassignMemberAPI, deleteMemberAPI, quitMemberAPI
} from './BoardAPI'; } from './BoardAPI';
export const useBoardLogic = (id, setError, setInfo, setCategories, setLoading) => { export const useBoardLogic = (id, setError, setInfo, setCategories, setLoading) => {
@@ -167,7 +167,7 @@ export const useBoardLogic = (id, setError, setInfo, setCategories, setLoading)
const addMember = useCallback(async (username, boardId, modalAddMember) => { const addMember = useCallback(async (username, boardId, modalAddMember) => {
setLoading(true); setLoading(true);
try { try {
await addMemberAPI( username, boardId ); await addMemberAPI( boardId, username );
await loadBoardData(); await loadBoardData();
modalAddMember(); modalAddMember();
} catch { } catch {
@@ -195,11 +195,24 @@ export const useBoardLogic = (id, setError, setInfo, setCategories, setLoading)
}, [loadBoardData, setLoading, setError]); }, [loadBoardData, setLoading, setError]);
const quitMember = useCallback(async (boardId, modalQuitMember ) => {
setLoading(true);
try {
setLoading(true);
await quitMemberAPI( boardId );
await loadBoardData();
modalQuitMember();
} catch {
setError('Ошибка');
} finally{
setLoading(false);
}
}, [loadBoardData, setLoading, setError, navigate]);
return { return {
loadBoardData, checkOwner, editBoard, deleteBoards, loadBoardData, checkOwner, editBoard, deleteBoards,
createTask, editTask, deleteTask, createTask, editTask, deleteTask,
createCategory, editCategory, deleteCategory, createCategory, editCategory, deleteCategory,
addMember, assignMember, addMember, assignMember, quitMember,
}; };
}; };

View File

@@ -23,6 +23,7 @@ const KBBoard = () => {
const [assignAction, setAssignAction] = useState(false); const [assignAction, setAssignAction] = useState(false);
const [addMemb, setAddMemb] = useState(false); const [addMemb, setAddMemb] = useState(false);
const [delBoards, setDelBoards] = useState(false); const [delBoards, setDelBoards] = useState(false);
const [qtMember, setQtMember] = useState(false);
const [boardTitle, setBoardTitle] = useState(''); const [boardTitle, setBoardTitle] = useState('');
const [boardDescription, setBoardDescription] = useState(''); const [boardDescription, setBoardDescription] = useState('');
@@ -50,7 +51,8 @@ const KBBoard = () => {
deleteTask, deleteTask,
assignMember, assignMember,
addMember, addMember,
deleteBoards deleteBoards,
quitMember
} = useBoardLogic(id, setError, setInfo, setCategories, setLoading); } = useBoardLogic(id, setError, setInfo, setCategories, setLoading);
useEffect(() => { useEffect(() => {
@@ -109,6 +111,9 @@ const KBBoard = () => {
setDelBoards(!delBoards); setDelBoards(!delBoards);
} }
const modalQuitMember = () => {
setQtMember(!qtMember);
}
const handleCreateCategory = async (e) => { const handleCreateCategory = async (e) => {
@@ -152,7 +157,10 @@ const KBBoard = () => {
e.preventDefault(); e.preventDefault();
await deleteBoards(id, modalDeleteBoards); await deleteBoards(id, modalDeleteBoards);
}; };
const handleQuitMember = async (e) => {
e.preventDefault();
await quitMember(id, modalQuitMember);
};
return ( return (
@@ -199,7 +207,7 @@ const KBBoard = () => {
</> </>
) : ( ) : (
<> <>
<button onClick={null}> <button onClick={modalQuitMember}>
Покинуть доску Покинуть доску
</button> </button>
</> </>
@@ -238,6 +246,7 @@ const KBBoard = () => {
</div> </div>
</div> </div>
))} ))}
{categories.length < 10 ? ( {categories.length < 10 ? (
<div className="categori create"> <div className="categori create">
<div className="bib"> <div className="bib">
@@ -527,6 +536,27 @@ const KBBoard = () => {
)} )}
</div> </div>
)} )}
{qtMember && (
<div className="confirm-modal">
<div className="modal-content">
<div><h3>Покинуть доску</h3></div>
<form onSubmit={handleQuitMember}>
<label >Вы точно хотите удалить эту Канбан доску</label>
<button onClick={modalQuitMember} type='reset'>Отменить</button>
<button className="Important-button" type="submit" disabled={loading}>
{loading ? 'Удаление...' : 'Удалить'}
</button>
</form>
</div>
</div>
)}
</div> </div>
</div> </div>
); );