feat(cabinet): дать пользователю самому удалять задачи из кабинета
Раньше удалить задачу мог только админ через свою панель — обычный пользователь с зависшей (например, навечно застрявшей в processing) задачей не мог убрать её из кабинета вообще. Кнопка удаления на карточке + снято искусственное ограничение "нельзя удалить, пока processing" (все воркеры уже корректно проверяют task is None перед записью, удаление во время реальной обработки безопасно).
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { Navigate, useNavigate, Link } from 'react-router-dom';
|
||||
import { useQuery } from '@tanstack/react-query';
|
||||
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
|
||||
import { Crown, Search, Shield, BookOpen, ShieldAlert, Settings as SettingsIcon } from 'lucide-react';
|
||||
import toast from 'react-hot-toast';
|
||||
import { TaskCard } from '../components/TaskCard';
|
||||
@@ -17,6 +17,16 @@ const PLAN_BADGE_STYLES = {
|
||||
export function Cabinet() {
|
||||
const { isAuthenticated, user } = useAuthStore();
|
||||
const navigate = useNavigate();
|
||||
const qc = useQueryClient();
|
||||
|
||||
const deleteTask = useMutation({
|
||||
mutationFn: (publicId: string) => tasksApi.delete(publicId),
|
||||
onSuccess: () => {
|
||||
qc.invalidateQueries({ queryKey: ['tasks'] });
|
||||
toast.success('Задача удалена');
|
||||
},
|
||||
onError: () => toast.error('Не удалось удалить задачу'),
|
||||
});
|
||||
|
||||
const openAdmin = async () => {
|
||||
try {
|
||||
@@ -144,7 +154,7 @@ export function Cabinet() {
|
||||
{tasks && tasks.length > 0 && (
|
||||
<div className="space-y-2">
|
||||
{tasks.map((task) => (
|
||||
<TaskCard key={task.public_id} task={task} />
|
||||
<TaskCard key={task.public_id} task={task} onDelete={(id) => deleteTask.mutate(id)} />
|
||||
))}
|
||||
</div>
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user