diff --git a/packages/backend/src/controllers/api/v1/apps/get-apps.js b/packages/backend/src/controllers/api/v1/apps/get-apps.js index 4cedc706..be6e112e 100644 --- a/packages/backend/src/controllers/api/v1/apps/get-apps.js +++ b/packages/backend/src/controllers/api/v1/apps/get-apps.js @@ -4,11 +4,11 @@ import { renderObject } from '../../../../helpers/renderer.js'; export default async (request, response) => { let apps = await App.findAll(request.query.name); - if (request.query.onlyWithTriggers === 'true') { + if (request.query.onlyWithTriggers) { apps = apps.filter((app) => app.triggers?.length); } - if (request.query.onlyWithActions === 'true') { + if (request.query.onlyWithActions) { apps = apps.filter((app) => app.actions?.length); } diff --git a/packages/web/src/components/AddNewAppConnection/index.jsx b/packages/web/src/components/AddNewAppConnection/index.jsx index ea26e1ab..0ba62b66 100644 --- a/packages/web/src/components/AddNewAppConnection/index.jsx +++ b/packages/web/src/components/AddNewAppConnection/index.jsx @@ -39,14 +39,12 @@ function AddNewAppConnection(props) { const formatMessage = useFormatMessage(); const [appName, setAppName] = React.useState(''); const [isLoading, setIsLoading] = React.useState(false); - const abortControllerRef = React.useRef(null); const { data: apps, mutate } = useLazyApps({ appName, onSuccess: () => { setIsLoading(false); }, - abortControllerRef, }); const fetchData = React.useMemo(() => debounce(mutate, 300), [mutate]); @@ -54,18 +52,10 @@ function AddNewAppConnection(props) { React.useEffect(() => { setIsLoading(true); - if (abortControllerRef.current) { - abortControllerRef.current.abort(); - } - abortControllerRef.current = new AbortController(); - fetchData(appName); return () => { fetchData.cancel(); - if (abortControllerRef.current) { - abortControllerRef.current.abort(); - } }; }, [fetchData, appName]); diff --git a/packages/web/src/components/ChooseAppAndEventSubstep/index.jsx b/packages/web/src/components/ChooseAppAndEventSubstep/index.jsx index b8b116fe..de37fcde 100644 --- a/packages/web/src/components/ChooseAppAndEventSubstep/index.jsx +++ b/packages/web/src/components/ChooseAppAndEventSubstep/index.jsx @@ -45,11 +45,17 @@ function ChooseAppAndEventSubstep(props) { const editorContext = React.useContext(EditorContext); const isTrigger = step.type === 'trigger'; const isAction = step.type === 'action'; + const useAppsOptions = {}; - const { data: apps } = useApps({ - onlyWithTriggers: isTrigger, - onlyWithActions: isAction, - }); + if (isTrigger) { + useAppsOptions.onlyWithTriggers = true; + } + + if (isAction) { + useAppsOptions.onlyWithActions = true; + } + + const { data: apps } = useApps(useAppsOptions); const app = apps?.data?.find( (currentApp) => currentApp?.key === step?.appKey, @@ -68,7 +74,7 @@ function ChooseAppAndEventSubstep(props) { const actionOrTriggerOptions = React.useMemo( () => actionsOrTriggers.map((trigger) => eventOptionGenerator(trigger)), - [app?.key, actionsOrTriggers], + [actionsOrTriggers], ); const selectedActionOrTrigger = actionsOrTriggers.find( diff --git a/packages/web/src/components/ExecutionStep/index.jsx b/packages/web/src/components/ExecutionStep/index.jsx index f1051c3e..04cdc826 100644 --- a/packages/web/src/components/ExecutionStep/index.jsx +++ b/packages/web/src/components/ExecutionStep/index.jsx @@ -79,11 +79,17 @@ function ExecutionStep(props) { const isTrigger = step.type === 'trigger'; const isAction = step.type === 'action'; const formatMessage = useFormatMessage(); + const useAppsOptions = {}; - const { data: apps } = useApps({ - onlyWithTriggers: isTrigger, - onlyWithActions: isAction, - }); + if (isTrigger) { + useAppsOptions.onlyWithTriggers = true; + } + + if (isAction) { + useAppsOptions.onlyWithActions = true; + } + + const { data: apps } = useApps(useAppsOptions); const app = apps?.data?.find((currentApp) => currentApp.key === step.appKey); diff --git a/packages/web/src/components/FlowStep/index.jsx b/packages/web/src/components/FlowStep/index.jsx index 1d78f73a..b999ec4f 100644 --- a/packages/web/src/components/FlowStep/index.jsx +++ b/packages/web/src/components/FlowStep/index.jsx @@ -39,7 +39,7 @@ import { StepPropType } from 'propTypes/propTypes'; import useTriggers from 'hooks/useTriggers'; import useActions from 'hooks/useActions'; import useTriggerSubsteps from 'hooks/useTriggerSubsteps'; -import useActionSubsteps from 'hooks/useActionsSubsteps'; +import useActionSubsteps from 'hooks/useActionSubsteps'; const validIcon = ; const errorIcon = ; @@ -114,11 +114,17 @@ function FlowStep(props) { const isAction = step.type === 'action'; const formatMessage = useFormatMessage(); const [currentSubstep, setCurrentSubstep] = React.useState(0); + const useAppsOptions = {}; - const { data: apps } = useApps({ - onlyWithTriggers: isTrigger, - onlyWithActions: isAction, - }); + if (isTrigger) { + useAppsOptions.onlyWithTriggers = true; + } + + if (isAction) { + useAppsOptions.onlyWithActions = true; + } + + const { data: apps } = useApps(useAppsOptions); const [ getStepWithTestExecutions, diff --git a/packages/web/src/hooks/useActionsSubsteps.js b/packages/web/src/hooks/useActionSubsteps.js similarity index 100% rename from packages/web/src/hooks/useActionsSubsteps.js rename to packages/web/src/hooks/useActionSubsteps.js diff --git a/packages/web/src/hooks/useLazyApps.js b/packages/web/src/hooks/useLazyApps.js index 327692c6..291ffcc2 100644 --- a/packages/web/src/hooks/useLazyApps.js +++ b/packages/web/src/hooks/useLazyApps.js @@ -1,25 +1,26 @@ import { useMutation } from '@tanstack/react-query'; import api from 'helpers/api'; +import React from 'react'; + +export default function useLazyApps({ appName, onSuccess }) { + const abortControllerRef = React.useRef(new AbortController()); + + React.useEffect(() => { + abortControllerRef.current = new AbortController(); + + return () => { + abortControllerRef.current?.abort(); + }; + }, [appName]); -export default function useLazyApps({ - appName, - onSuccess, - abortControllerRef, -}) { const query = useMutation({ - mutationFn: async ({ payload, signal }) => { - abortControllerRef.current = new AbortController(); - + mutationFn: async ({ payload }) => { const { data } = await api.get('/v1/apps', { params: { name: appName }, signal: abortControllerRef.current.signal, }); - if (abortControllerRef.current.signal.aborted) { - return; - } - return data; }, onSuccess,