enhancing error handling
This commit is contained in:
@@ -16,7 +16,14 @@ export function runMission(id) {
|
||||
include: { crew: true },
|
||||
});
|
||||
if (mission) {
|
||||
const result = await py.call(pymodule, "run_mission", mission);
|
||||
const { result, error, message } = await py.call(
|
||||
pymodule,
|
||||
"run_mission",
|
||||
mission
|
||||
);
|
||||
if (error) {
|
||||
throw new Error(message);
|
||||
}
|
||||
const missionWithResult = prisma.mission.update({
|
||||
where: { id },
|
||||
data: { result },
|
||||
|
||||
@@ -74,6 +74,12 @@ def run_mission(mission):
|
||||
)
|
||||
|
||||
result = crew.kickoff()
|
||||
return result
|
||||
return {
|
||||
"result": result
|
||||
}
|
||||
except Exception as e:
|
||||
print(e)
|
||||
return ({
|
||||
"error": True,
|
||||
"message": str(e)
|
||||
})
|
||||
|
||||
@@ -6,7 +6,7 @@ import { Mission } from "@/types/mission";
|
||||
import { GET_MISSIONS } from "@/utils/graphql_queries";
|
||||
import { useQuery } from "@apollo/client";
|
||||
import { Icon } from "@iconify/react/dist/iconify.js";
|
||||
import { Button, IconButton } from "@material-tailwind/react";
|
||||
import { Alert, Button, IconButton } from "@material-tailwind/react";
|
||||
import { useState } from "react";
|
||||
|
||||
const MissionsPage = () => {
|
||||
@@ -30,6 +30,20 @@ const MissionsPage = () => {
|
||||
);
|
||||
}
|
||||
|
||||
if (error) {
|
||||
return (
|
||||
<div className="w-full">
|
||||
<Alert
|
||||
color="yellow"
|
||||
icon={<Icon icon="material-symbols:warning-outline" fontSize={26} />}
|
||||
className="w-fit"
|
||||
>
|
||||
{error?.message ?? "An error occurred."}
|
||||
</Alert>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<div>
|
||||
<div>
|
||||
|
||||
@@ -292,7 +292,7 @@ export default function MissionModal(props: {
|
||||
</div>
|
||||
) : (
|
||||
<div>
|
||||
{mission?.tasks ? (
|
||||
{mission?.tasks.length > 0 ? (
|
||||
<div>
|
||||
<TasksAccordion tasks={mission.tasks} />
|
||||
</div>
|
||||
@@ -309,7 +309,9 @@ export default function MissionModal(props: {
|
||||
<div className="my-3">
|
||||
<Button
|
||||
color="blue"
|
||||
disabled={runMissionLoading}
|
||||
disabled={
|
||||
runMissionLoading || mission?.tasks.length === 0
|
||||
}
|
||||
onClick={() => {
|
||||
handleRunMission()
|
||||
.then((missionData) => {
|
||||
|
||||
@@ -196,18 +196,6 @@ function NewMissionModal(props: {
|
||||
theme={selectTheme}
|
||||
/>
|
||||
</div>
|
||||
<div className="mb-4">
|
||||
<label className="font-bold text-lg">Tasks:</label>
|
||||
<div>
|
||||
<MissionTaskEditor
|
||||
mission={tempMission!}
|
||||
agents={agentsData?.agents}
|
||||
onMissionChange={(mission: Mission) => {
|
||||
setTempMission(mission);
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</TEModalBody>
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ export function makeApolloClient() {
|
||||
|
||||
return new NextSSRApolloClient({
|
||||
cache: new NextSSRInMemoryCache(),
|
||||
queryDeduplication: false,
|
||||
link:
|
||||
typeof window === "undefined"
|
||||
? ApolloLink.from([
|
||||
|
||||
Reference in New Issue
Block a user