Как исправить данную функцию handleRestartTask чтобы происходило обновление задачи

Имеется 3 файла httpservice.js c запросами, responseStatusChecker статусы выполнения, result компонент, где используется функция restart из httpservice.js, пожалуйста помогите исправить код чтобы функция const handleRestartTask = () => { httpService .restartTask(activeTaskId) .then((response) => responseStatusChecker(response?.status || 0, "singleReport")); }; перезапускала задачу, пока отображается 400 ошибка

  import React, { useState, useContext, useEffect } from "react";
import { MainContext } from "./context/mainContext";
import { Report, ReportDetails, Vectors, Task } from "../types";
import httpService from "../services/http.service";
import responseStatusChecker from "../services/catcher.service";

const ReportInfo = ({
  report,
  loadReportDetails,
  handleDownloadReport

}: {
  report: Report;
  loadReportDetails: (reportId: string) => void;
  handleDownloadReport: (reportId: string) => void;

}) => {
  const { progress, in_progress, started_at, finished_at, task } = report;

  return (
    <>
      <div className="fs-14 brd-bt pb-10 mb-20">Результаты</div>
      {!in_progress && (
        <div className="d-fl sp-btw ">
          <div className="fs-12">{task.host}</div>
          <div className="result-logosReport d-fl sp-btw gap-10 ">
            <div
              className="result-logo-loadReport"
              onClick={() => loadReportDetails(report.id)}
            ></div>
            <div
              className="result-logo-downloadReport"
              onClick={() => handleDownloadReport(report.id)}
            ></div>
            <div className="result-logo-deleteReport"></div>
          </div>
        </div>
      )}
    </>
  );
};
const Result = () => {
  const { activeTaskId, tasks, reports } = useContext(MainContext);
  const activeTask = tasks.find((task) => task.id === activeTaskId);
  const [reportDetails, setReportDetails] = useState<ReportDetails | null>(
    null
  );
  // console.log(activeTask)
  
  const loadReportDetails = (reportId: string) => {
    httpService.getCurrentReport(reportId).then((reportDetails) => {
      setReportDetails(reportDetails);
    });
  };

  const handleDownloadReport = (reportId: string) => {
    httpService
      .downloadCurrentReport(reportId)
      .then((response) => window.open(response?.config.url, "_blank"));
  };
  const handleRestartTask = () => {
    httpService
      .restartTask(activeTaskId)
      .then((response) => responseStatusChecker(response?.status || 0, "singleReport"));
  };
  useEffect(() => {
    setReportDetails(null);
  }, [activeTaskId]);
  return (
    <>
      <div className="result-info-top pl-10 pr-10 ">
        <div className="brd-bt pb-10 mt-20 d-fl sp-btw">
          <div className="result-name  fs-14">Результат выполнения задачи</div>
          <div className="result-logo d-fl  gap-10">
            <div
              onClick={() => handleRestartTask()}
              className="result-logo-update"
            ></div>
            <div className="result-logo-delete"></div>
          </div>
        </div>
        {!!activeTask && (
          <div>
            <div className="brd-bt fs-10 pb-10 mt-20">
              URL <span className="ml-100 fs-12">{activeTask.host}</span>
            </div>
            <div className="brd-bt fs-10 pb-10 mt-20">
              Тип задачи{" "}
              <span className="ml-47 fs-12">{activeTask.action.label_ru}</span>
            </div>
          </div>
        )}
        {!!reports.length && (
          <div>
            {reports.map((report) => (
              <div key={report.id} className="brd-bt fs-10 pb-10 mt-20">
                <ReportInfo
                  report={report}
                  loadReportDetails={loadReportDetails}
                  handleDownloadReport={handleDownloadReport}
            
                />
              </div>
            ))}
          </div>
        )}

        {reportDetails && (
          <div className="fs-14 brd-bt pb-10 mt-20">
            {reportDetails.task.host} | {reportDetails.data.message.reportDate}
          </div>
        )}
        {reports.length > 0 &&
          reportDetails &&
          reportDetails.data.message.vectors.map((vector: Vectors) => (
            <div key={vector.date}>
              {/* <div className="fs-12 mt-20">{vector.date}</div> */}
              <div className="fs-12 mt-20">{vector.description}</div>
              <div className="fs-12 mb-20">{vector.name}</div>
              {/* <div>{vector.status}</div> */}
            </div>
          ))}
      </div>
    </>
  );
};
export default Result;
import { toast } from "react-toastify";
//area is component name as string
export function responseStatusChecker(status:number, area:string = "default"):void {
    if (status === 200) {
        switch (area) {
            case "addTaskForm":
                toast.success("Задача добавлена успешно");
                break;
            case "singleReport":
                toast.success("Задача успешно перезапущена");
                break;
            default:
                break;
        }
    }
    if (status === 400) {
        switch (area) {
            case "addTaskForm":
                toast.error("Такая задача уже существует!");
                break;
            case "restartTask":
                toast.error("Перезапуск задачи уже выполняется");
                break;
            default:
                break;
        }
    }
    if (status === 401) {
        switch (area) {
            case "addTaskForm":
                toast.warning("Пользователь не авторизован!");
                break;
            default:
                break;
        }
    }
    if (status === 404) {
        switch (area) {
            case "addTaskForm":
                toast.error(
                    "Постановка задачи невозможна!Обратитесь в поддержку!"
                );
                break;
            case "downloadCurrentReport":
                toast.error(
                    "Ошибка скачивания отчета! Повторите попытку позднее или обратитесь в поддержку!"
                );
                break;
            default:
                break;
        }
    }
    if (status === 422) {
        switch (area) {
            case "addTaskForm":
                toast.error("Недопустимый веб-адрес!");
                break;
            default:
                break;
        }
    }
    if (status >= 500) {
        switch (area) {
            case "default":
                toast.error(
                    "Сервер временно недоступен.Попробуйте позднее или обратитесь в поддержку."
                );
                break;
            case "addTaskForm":
                toast.error(
                    "Сервер временно недоступен.Попробуйте позднее или обратитесь в поддержку."
                );
                break;
            default:
                break;
        }
    }
}
export default responseStatusChecker;
import axios from "axios";
import responseStatusChecker from "./catcher.service";
import Config from "./config.url.json";

const endpoint = process.env.REACT_APP_API_BASE_URL;
const base = Config.dev;

async function getActionsList() {
    try {
        const response = await axios({
            method: base.getActionsList.method,
            url: endpoint + base.getActionsList.request
        });
        return response.data.items;
    } catch (error) {}
}
async function addNewTask({ url, actionType }) {
    const response = await axios({
        method: base.addTask.method,
        url: `${endpoint}${base.addTask.request}`,
        headers: {
            "content-type": "application/json"
        },
        data: {
            action: actionType,
            target: url
        }
    });
    return response;
}
async function getAllTasks() {
    try {
        const response = await axios({
            method: base.getTasks.method,
            url: endpoint + base.getTasks.request,
            params: {
                page: 1,
                offset: 0,
                limit: 100,
                order: "-id"
            }
        });
        return response.data.items;
    } catch (error) {}
}
async function getAllTasksOfHost(host) {
    try {
        const response = await axios({
            method: base.getTasks.method,
            url: endpoint + base.getTasks.request,
            params: {
                host: host,
                page: 1,
                offset: 0,
                limit: 100,
                order: "-id"
            }
        });
        return response.data.items;
    } catch (error) {}
}
async function getAllReports() {
    try {
        const response = await axios({
            method: base.getAllReports.method,
            url: endpoint + base.getAllReports.request,
            params: {
                page: 1,
                offset: 0,
                limit: 100,
                order: "-id"
            }
        });
        return response.data.items;
    } catch (error) {}
}
async function getAllReportsOfTask(taskId) {
    try {
        const response = await axios({
            method: base.getAllReportsOfTask.method,
            url: endpoint + base.getAllReportsOfTask.request,
            params: {
                task_id: taskId,
                page: 1,
                offset: 0,
                limit: 100,
                order: "-id"
            }
        });
        return response.data.items;
    } catch (error) {
        console.log("error in getReportsById", error);
    }
}
async function getCurrentReport(reportId) {
    try {
        const response = await axios({
            method: base.getCurrentReport.method,
            url: `${endpoint}${base.getCurrentReport.request}${reportId}/`
        });
        return response.data;
    } catch (error) {}
}
async function getAvaliableScanTypes() {
    try {
        const response = await axios({
            method: base.getAvaliableScanTypes.method,
            url: endpoint + base.getAvaliableScanTypes.request
        });
        return response.data.items;
    } catch (error) {}
}
async function getActionsOfTargets() {
    try {
        const response = await axios({
            method: base.getActionsOfTargets.method,
            url: endpoint + base.getActionsOfTargets.request
        });
        return response.data.items;
    } catch (error) {}
}
async function getActionsOfHosts() {
    try {
        const response = await axios({
            method: base.getActionsOfHosts.method,
            url: endpoint + base.getActionsOfHosts.request
        });
        return response.data.items;
    } catch (error) {}
}
async function restartTask(taskId) {
    try {
        const response = await axios({
            method: base.restartTask.method,
            url: `${endpoint}${base.restartTask.request}${taskId}/run/`
        });
        return response;
    } catch (error) {
        responseStatusChecker(error.response.status, "restartTask");
    }
}
async function deleteTask(taskId) {
    try {
        const response = await axios({
            method: base.deleteTask.method,
            url: `${endpoint}${base.deleteTask.request}${taskId}/`
        });
        return response;
    } catch (error) {
        console.log("error in deleteTask in httpservice", error);
        responseStatusChecker(error.response.status);
    }
}
async function deleteAnyTasks(tasksIds) {
    try {
        const response = await axios({
            method: base.deleteAnyTasks.method,
            url: `${endpoint}${base.deleteAnyTasks.request}${tasksIds}/`
        });
        return response;
    } catch (error) {
        console.log("error deleteAnyTasks in http", error);
        responseStatusChecker(error.response.status);
    }
}
async function deleteCurrentReport(reportId) {
    try {
        const response = await axios({
            method: base.deleteCurrentReport.method,
            url: `${endpoint}${base.deleteCurrentReport.request}${reportId}/`
        });
        return response;
    } catch (error) {
        console.log("error in http", error);
        responseStatusChecker(error.response.status);
    }
}
async function deleteAllReports(reportsIds) {
    try {
        const response = await axios({
            method: base.deleteAllReports.method,
            url: `${endpoint}${base.deleteAllReports.request}${reportsIds}/`
        });
        return response;
    } catch (error) {
        console.log("error deleteAllReports in http", error);
        responseStatusChecker(error.response.status);
    }
}
async function downloadCurrentReport(reportId) {
    try {
        const response = await axios({
            method: base.downloadCurrentReport.method,
            url: `${endpoint}${base.downloadCurrentReport.request}${reportId}/file/`
        });
        return response;
    } catch (error) {
        responseStatusChecker(error.response.status, "downloadCurrentReport");
    }
}

const httpService = {
    getActionsList: getActionsList,
    addTask: addNewTask,
    getAllTasks: getAllTasks,
    getAllReports: getAllReports,
    getAllReportsOfTask: getAllReportsOfTask,
    getCurrentReport: getCurrentReport,
    getAvaliableScanTypes: getAvaliableScanTypes,
    getActionsOfTargets: getActionsOfTargets,
    getActionsOfHosts: getActionsOfHosts,
    restartTask: restartTask,
    deleteTask: deleteTask,
    deleteAnyTasks: deleteAnyTasks,
    deleteCurrentReport: deleteCurrentReport,
    deleteAllReports: deleteAllReports,
    downloadCurrentReport: downloadCurrentReport,
    getAllTasksOfHost: getAllTasksOfHost
};
export default httpService;

Имеется 3 файла httpservice.js c запросами, responseStatusChecker статусы выполнения, result компонент, где используется функция restart из httpservice.js, пожалуйста помогите исправить код чтобы функция const handleRestartTask = () => { httpService .restartTask(activeTaskId) .then((response) => responseStatusChecker(response?.status || 0, "singleReport")); }; перезапускала задачу, пока отображается 400 ошибка


Ответы (0 шт):