diff --git a/changes/issue-7997-better-agent-options-error b/changes/issue-7997-better-agent-options-error new file mode 100644 index 0000000000..8078104769 --- /dev/null +++ b/changes/issue-7997-better-agent-options-error @@ -0,0 +1 @@ +* Global agent options renders backend errors in UI \ No newline at end of file diff --git a/frontend/pages/admin/TeamManagementPage/TeamDetailsWrapper/AgentOptionsPage/AgentOptionsPage.tsx b/frontend/pages/admin/TeamManagementPage/TeamDetailsWrapper/AgentOptionsPage/AgentOptionsPage.tsx index 257e3d54dc..2707d4a25b 100644 --- a/frontend/pages/admin/TeamManagementPage/TeamDetailsWrapper/AgentOptionsPage/AgentOptionsPage.tsx +++ b/frontend/pages/admin/TeamManagementPage/TeamDetailsWrapper/AgentOptionsPage/AgentOptionsPage.tsx @@ -4,6 +4,7 @@ import { useErrorHandler } from "react-error-boundary"; import yaml from "js-yaml"; import { NotificationContext } from "context/notification"; +import { IApiError } from "interfaces/errors"; import { ITeam } from "interfaces/team"; import endpoints from "utilities/endpoints"; import teamsAPI, { ILoadTeamsResponse } from "services/entities/teams"; @@ -30,6 +31,7 @@ const AgentOptionsPage = ({ const teamIdFromURL = parseInt(team_id, 10); const { renderFlash } = useContext(NotificationContext); + const [teamName, setTeamName] = useState(""); const [formData, setFormData] = useState<{ osquery_options?: string }>({}); const handlePageError = useErrorHandler(); @@ -45,6 +47,7 @@ const AgentOptionsPage = ({ setFormData({ osquery_options: yaml.dump(selected.agent_options), }); + setTeamName(selected.name); } else { handlePageError({ status: 404 }); } @@ -62,16 +65,18 @@ const AgentOptionsPage = ({ return renderFlash("error", error.reason); } - try { - await osqueryOptionsAPI.update( - updatedForm, - TEAMS_AGENT_OPTIONS(teamIdFromURL) - ); - return renderFlash("success", "Successfully saved agent options"); - } catch (response) { - console.error(response); - return renderFlash("error", "Could not save agent options"); - } + osqueryOptionsAPI + .update(updatedForm, TEAMS_AGENT_OPTIONS(teamIdFromURL)) + .then(() => { + renderFlash("success", "Successfully saved agent options"); + }) + .catch((response: { data: IApiError }) => { + console.error(response); + return renderFlash( + "error", + `Could not update ${teamName} team agent options. ${response.data.errors[0].reason}` + ); + }); }; return (