@@ -8,10 +8,8 @@ import {
88import ConfigPageTabs from "@flanksource-ui/components/Configs/ConfigPageTabs" ;
99import { AuthorizationAccessCheck } from "@flanksource-ui/components/Permissions/AuthorizationAccessCheck" ;
1010import PluginsFormModal from "@flanksource-ui/components/Plugins/PluginsFormModal" ;
11- import {
12- toastError ,
13- toastSuccess
14- } from "@flanksource-ui/components/Toast/toast" ;
11+ import { toastSuccess } from "@flanksource-ui/components/Toast/toast" ;
12+ import { getErrorMessage } from "@flanksource-ui/api/types/error" ;
1513import { useUser } from "@flanksource-ui/context" ;
1614import { tables } from "@flanksource-ui/context/UserAccessContext/permissions" ;
1715import {
@@ -28,7 +26,7 @@ import { Head } from "@flanksource-ui/ui/Head";
2826import { SearchLayout } from "@flanksource-ui/ui/Layout/SearchLayout" ;
2927import { useMutation , useQuery } from "@tanstack/react-query" ;
3028import { MRT_ColumnDef } from "mantine-react-table" ;
31- import { useEffect , useMemo , useState } from "react" ;
29+ import { useCallback , useEffect , useMemo , useState } from "react" ;
3230import { AiFillPlusCircle } from "react-icons/ai" ;
3331import CRDSource from "@flanksource-ui/components/Settings/CRDSource" ;
3432
@@ -141,6 +139,9 @@ export default function ConfigPluginsPage() {
141139 const user = useUser ( ) ;
142140 const [ isOpen , setIsOpen ] = useState ( false ) ;
143141 const [ editedRow , setEditedRow ] = useState < ScrapePlugin > ( ) ;
142+ const [ formError , setFormError ] = useState < string > ( ) ;
143+
144+ const clearFormError = useCallback ( ( ) => setFormError ( undefined ) , [ ] ) ;
144145 const [ sortState ] = useReactTableSortState ( ) ;
145146 const { pageIndex, pageSize } = useReactTablePaginationState ( ) ;
146147
@@ -161,7 +162,7 @@ export default function ConfigPluginsPage() {
161162 const payload = buildPluginPayload ( values . name , values . spec ) ;
162163 const response = await createScrapePlugin ( {
163164 ...payload ,
164- created_by : user . user ,
165+ created_by : user . user ?. id ,
165166 source : payload . source || "UI"
166167 } ) ;
167168 return response ?. data ;
@@ -172,7 +173,7 @@ export default function ConfigPluginsPage() {
172173 toastSuccess ( "Plugin added successfully" ) ;
173174 } ,
174175 onError : ( ex ) => {
175- toastError ( ( ex as Error ) . message ) ;
176+ setFormError ( getErrorMessage ( ex ) ) ;
176177 }
177178 } ) ;
178179
@@ -194,7 +195,7 @@ export default function ConfigPluginsPage() {
194195 toastSuccess ( "Plugin updated successfully" ) ;
195196 } ,
196197 onError : ( ex ) => {
197- toastError ( ( ex as Error ) . message ) ;
198+ setFormError ( getErrorMessage ( ex ) ) ;
198199 }
199200 } ) ;
200201
@@ -209,7 +210,7 @@ export default function ConfigPluginsPage() {
209210 toastSuccess ( "Plugin deleted successfully" ) ;
210211 } ,
211212 onError : ( ex ) => {
212- toastError ( ( ex as Error ) . message ) ;
213+ setFormError ( getErrorMessage ( ex ) ) ;
213214 }
214215 } ) ;
215216
@@ -283,6 +284,7 @@ export default function ConfigPluginsPage() {
283284 isOpen = { isOpen }
284285 setIsOpen = { setIsOpen }
285286 onSubmit = { ( values : { name : string ; spec : Record < string , any > } ) => {
287+ clearFormError ( ) ;
286288 if ( editedRow ?. id ) {
287289 updatePlugin ( values ) ;
288290 } else {
@@ -293,6 +295,7 @@ export default function ConfigPluginsPage() {
293295 isSubmitting = { isSubmitting }
294296 isDeleting = { isDeleting }
295297 formValue = { editedRow }
298+ errorMessage = { formError }
296299 key = { editedRow ?. id || "plugin-form" }
297300 />
298301 </ SearchLayout >
0 commit comments