feat: добавлена возможность выгнать участника канбан доски, а также добавлен список участников(не развёрнутый)

This commit is contained in:
Vladiysss
2026-03-07 23:04:30 +03:00
parent 11f2349f7d
commit 6329031d13
2 changed files with 69 additions and 12 deletions

View File

@@ -186,7 +186,7 @@ export const useBoardLogic = (id, setError, setInfo, setCategories, setLoading)
await unassignMemberAPI( editedTaskId, memberId ); await unassignMemberAPI( editedTaskId, memberId );
} }
await loadBoardData(); await loadBoardData();
modalAssignMember(); modalAssignMember(false)();
} catch { } catch {
setError('Ошибка'); setError('Ошибка');
} finally{ } finally{
@@ -209,10 +209,27 @@ export const useBoardLogic = (id, setError, setInfo, setCategories, setLoading)
} }
}, [loadBoardData, setLoading, setError, navigate]); }, [loadBoardData, setLoading, setError, navigate]);
const deleteMember = useCallback(async (boardId, username, modalDelitMember ) => {
setLoading(true);
try {
setLoading(true);
await deleteMemberAPI( boardId, username );
await loadBoardData();
modalDelitMember();
} 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, quitMember, addMember, assignMember, quitMember, deleteMember
}; };
}; };

View File

@@ -24,6 +24,7 @@ const KBBoard = () => {
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 [qtMember, setQtMember] = useState(false);
const [delMember, setDelMember] = useState(false);
const [boardTitle, setBoardTitle] = useState(''); const [boardTitle, setBoardTitle] = useState('');
const [boardDescription, setBoardDescription] = useState(''); const [boardDescription, setBoardDescription] = useState('');
@@ -38,6 +39,7 @@ const KBBoard = () => {
const [categoryPosition, setCategoryPosition] = useState(null); const [categoryPosition, setCategoryPosition] = useState(null);
const [assignedMember, setAssignedMember] = useState(0); const [assignedMember, setAssignedMember] = useState(0);
const [addedUsername, setAddedUsername] = useState(''); const [addedUsername, setAddedUsername] = useState('');
const [deletedMember, setDeletedMember] = useState('');
const { const {
loadBoardData, loadBoardData,
@@ -52,7 +54,8 @@ const KBBoard = () => {
assignMember, assignMember,
addMember, addMember,
deleteBoards, deleteBoards,
quitMember quitMember,
deleteMember
} = useBoardLogic(id, setError, setInfo, setCategories, setLoading); } = useBoardLogic(id, setError, setInfo, setCategories, setLoading);
useEffect(() => { useEffect(() => {
@@ -86,7 +89,6 @@ const KBBoard = () => {
setTaskDescription(task.description); setTaskDescription(task.description);
setTaskPosition(task.position); setTaskPosition(task.position);
setTaskCategory(task.category_id); setTaskCategory(task.category_id);
//setAssignedMember(task.assigned_users.id)
} }
const modalEditCateg = (categ) => () => { const modalEditCateg = (categ) => () => {
setEdCateg(!edCateg); setEdCateg(!edCateg);
@@ -110,7 +112,9 @@ const KBBoard = () => {
const modalDeleteBoards = () => { const modalDeleteBoards = () => {
setDelBoards(!delBoards); setDelBoards(!delBoards);
} }
const modalDeleteMember = () => {
setDelMember(!delMember);
}
const modalQuitMember = () => { const modalQuitMember = () => {
setQtMember(!qtMember); setQtMember(!qtMember);
} }
@@ -161,6 +165,10 @@ const KBBoard = () => {
e.preventDefault(); e.preventDefault();
await quitMember(id, modalQuitMember); await quitMember(id, modalQuitMember);
}; };
const handleDeleteMember = async (e) => {
e.preventDefault();
await deleteMember(assignedMember, deletedMember, modalDeleteMember);
};
return ( return (
@@ -174,7 +182,10 @@ const KBBoard = () => {
<div className="row"> <div className="row">
<h3>{info.title}</h3> <h3>{info.title}</h3>
<p> <p>
<strong>Участники: </strong> В разработке <strong>Участники: </strong>
{info.members.map((member) => (
<img key={member.id} className='members-avatar' src={member.avatar_url}></img>
))}
</p> </p>
<p> <p>
<strong>Владелец: </strong> {" "+info.owner?.display_name} <strong>Владелец: </strong> {" "+info.owner?.display_name}
@@ -195,7 +206,7 @@ const KBBoard = () => {
<button onClick={modalAddMember}> <button onClick={modalAddMember}>
Добавить участника Добавить участника
</button> </button>
<button onClick={null}> <button onClick={modalDeleteMember}>
Выгнать участника Выгнать участника
</button> </button>
<button onClick={modalEditBoard}> <button onClick={modalEditBoard}>
@@ -463,7 +474,7 @@ const KBBoard = () => {
{addMemb && ( {addMemb && (
<div className="confirm-modal"> <div className="confirm-modal">
<div className="modal-content"> <div className="modal-content">
<div><h3>Добавление участников</h3></div> <div><h3>Добавление участникf</h3></div>
<form onSubmit={handleAddMember}> <form onSubmit={handleAddMember}>
<label >Введите логин человека которого хотитепригласить</label> <label >Введите логин человека которого хотитепригласить</label>
<input <input
@@ -472,7 +483,7 @@ const KBBoard = () => {
value={addedUsername} value={addedUsername}
onChange={(e) => setAddedUsername(e.target.value)} onChange={(e) => setAddedUsername(e.target.value)}
/> />
<button onClick={modalAddMember}>Отменить</button> <button onClick={modalAddMember} type='reset'>Отменить</button>
<button type="submit" disabled={loading}> <button type="submit" disabled={loading}>
{loading ? 'Добавление...' : 'Добавить'} {loading ? 'Добавление...' : 'Добавить'}
</button> </button>
@@ -542,7 +553,7 @@ const KBBoard = () => {
<div className="modal-content"> <div className="modal-content">
<div><h3>Покинуть доску</h3></div> <div><h3>Покинуть доску</h3></div>
<form onSubmit={handleQuitMember}> <form onSubmit={handleQuitMember}>
<label >Вы точно хотите удалить эту Канбан доску</label> <label >Вы точно хотите покинуть эту Канбан доску?</label>
<button onClick={modalQuitMember} type='reset'>Отменить</button> <button onClick={modalQuitMember} type='reset'>Отменить</button>
<button className="Important-button" type="submit" disabled={loading}> <button className="Important-button" type="submit" disabled={loading}>
{loading ? 'Удаление...' : 'Удалить'} {loading ? 'Удаление...' : 'Удалить'}
@@ -552,10 +563,39 @@ const KBBoard = () => {
</div> </div>
)} )}
{delMember && (
<div className="confirm-modal">
<div className="modal-content">
<div><h3>Выгнать участника</h3></div>
<form onSubmit={handleDeleteMember}>
<label >Выберите кого вы хотите выгнать?</label>
<div>
<label >Участник:</label>
<select value={deletedMember} onChange={(e) => setDeletedMember(e.target.value)}>
<option value={''}>
Выберите пользователя
</option>
{info.members.map((member) => (
(member.id !== info.owner.id) ? (
<option key={member.display_name} value={member.username}>
{member.display_name}
</option> ) : (
<></>
)
))}
</select>
</div>
<button onClick={modalDeleteMember} type='reset'>Отменить</button>
<button className="Important-button" type="submit" disabled={loading}>
{loading ? 'Удаление...' : 'Удалить'}
</button>
</form>
</div>
</div>
)}
</div> </div>
</div> </div>