From ccdd13d17da03259453e58b08da2720eba2c65b1 Mon Sep 17 00:00:00 2001 From: Akshita Goyal <36129505+gakshita@users.noreply.github.com> Date: Thu, 2 Apr 2026 18:33:55 +0530 Subject: [PATCH] [SILO-1130] fix: automation bugs (#6518) * fix: improvements * fix: scroll * fix: refactor --- .../details/sidebar/trigger/root.tsx | 3 +- .../form/create-update-runner-script.tsx | 88 ++++++++++++------- .../runners/form/select-script-type.tsx | 4 +- .../components/runners/script-modal/root.tsx | 40 ++++----- 4 files changed, 78 insertions(+), 57 deletions(-) diff --git a/apps/web/core/components/automations/details/sidebar/trigger/root.tsx b/apps/web/core/components/automations/details/sidebar/trigger/root.tsx index a6a768b261..98387784cd 100644 --- a/apps/web/core/components/automations/details/sidebar/trigger/root.tsx +++ b/apps/web/core/components/automations/details/sidebar/trigger/root.tsx @@ -277,8 +277,9 @@ export const AutomationDetailsSidebarTriggerRoot = observer(function AutomationD /> ) : ( )} diff --git a/apps/web/core/components/runners/form/create-update-runner-script.tsx b/apps/web/core/components/runners/form/create-update-runner-script.tsx index c50fa01978..8319a4e986 100644 --- a/apps/web/core/components/runners/form/create-update-runner-script.tsx +++ b/apps/web/core/components/runners/form/create-update-runner-script.tsx @@ -18,7 +18,7 @@ import { Controller, FormProvider, useForm } from "react-hook-form"; import { Button } from "@plane/propel/button"; import { setToast, TOAST_TYPE } from "@plane/propel/toast"; import type { RunnerScript, RunnerScriptFormData } from "@plane/types"; -import { cn, Input, Loader } from "@plane/ui"; +import { Input, Loader } from "@plane/ui"; import { useRunners } from "@/hooks/store/runners/use-runners"; import { LazyPlaneSDKCodeEditor } from "@/components/plane-sdk-editor/root"; import { formDataToScriptPayload, scriptToFormData } from "./env-variables-field"; @@ -27,10 +27,12 @@ import { TestScript } from "./test-script"; import { DEFAULT_SCRIPT_FORM_DATA } from "@plane/constants"; import { ERunnerScriptType } from "@plane/types"; import { SelectScriptType } from "./select-script-type"; +import { IconButton } from "@plane/propel/icon-button"; +import { X } from "lucide-react"; type Props = { scriptData?: RunnerScript; - headerAction?: React.ReactNode; + headerAction?: boolean; isLoading?: boolean; scriptType?: ERunnerScriptType; handleCancel: () => void; @@ -38,7 +40,7 @@ type Props = { }; export const CreateUpdateRunnerScript = observer(function CreateUpdateRunnerScript(props: Props) { - const { scriptData, headerAction, callBack, handleCancel, scriptType, isLoading = false } = props; + const { scriptData, headerAction = false, callBack, handleCancel, scriptType, isLoading = false } = props; const { workspaceSlug } = useParams(); const { createScript, updateScript } = useRunners(); const [isSubmitting, setIsSubmitting] = useState(false); @@ -60,27 +62,28 @@ export const CreateUpdateRunnerScript = observer(function CreateUpdateRunnerScri const formValues = watch(); const onSubmit = async (formData: RunnerScriptFormData) => { - if (!workspaceSlug || isReadOnly) return; setIsSubmitting(true); + let result; try { - const payload = formDataToScriptPayload(formData); - let result; - if (scriptData?.id) { - result = await updateScript(workspaceSlug, scriptData.id, payload); - setToast({ - type: TOAST_TYPE.SUCCESS, - title: "Success", - message: "Runner script updated successfully", - }); - } else { - result = await createScript(workspaceSlug, payload); - setToast({ - type: TOAST_TYPE.SUCCESS, - title: "Success", - message: "Runner script created successfully", - }); + if (workspaceSlug && !isReadOnly) { + const payload = formDataToScriptPayload(formData); + if (scriptData?.id) { + result = await updateScript(workspaceSlug, scriptData.id, payload); + setToast({ + type: TOAST_TYPE.SUCCESS, + title: "Success", + message: "Runner script updated successfully", + }); + } else { + result = await createScript(workspaceSlug, payload); + setToast({ + type: TOAST_TYPE.SUCCESS, + title: "Success", + message: "Runner script created successfully", + }); + } } - callBack?.(result?.id); + callBack?.(scriptData?.id || result?.id || null); } catch (error) { console.error("Error saving runner script:", error); setToast({ @@ -88,6 +91,7 @@ export const CreateUpdateRunnerScript = observer(function CreateUpdateRunnerScri title: "Error", message: scriptData?.id ? "Failed to update runner script" : "Failed to create runner script", }); + setIsSubmitting(false); } finally { setIsSubmitting(false); } @@ -108,14 +112,29 @@ export const CreateUpdateRunnerScript = observer(function CreateUpdateRunnerScri return ( -
void handleSubmit(onSubmit)(e)} className="space-y-6 w-full" key={scriptData?.id}> +
+ {headerAction && ( +
+
{scriptData?.name || "New Script"}
+
+ + +
+
+ )} {/* Name */} -
+
{isLoading ? ( @@ -139,7 +158,6 @@ export const CreateUpdateRunnerScript = observer(function CreateUpdateRunnerScri )} /> )} - {headerAction}
{/* Script Type */} @@ -186,17 +204,25 @@ export const CreateUpdateRunnerScript = observer(function CreateUpdateRunnerScri
{/* Form Actions */} - {!isReadOnly && ( + {!isReadOnly && !headerAction && (
-
)} - +
); }); diff --git a/apps/web/core/components/runners/form/select-script-type.tsx b/apps/web/core/components/runners/form/select-script-type.tsx index d7af8f8d1e..2a2a29cc3f 100644 --- a/apps/web/core/components/runners/form/select-script-type.tsx +++ b/apps/web/core/components/runners/form/select-script-type.tsx @@ -40,9 +40,9 @@ export function SelectScriptType({ onScriptTypeChange, scriptType }: Props) { value: type.toString(), }))} disableSearch - buttonContainerClassName="bg-surface-1 border border-subtle-1 rounded-md px-2 py-1 w-full h-[30px]" + buttonContainerClassName="bg-surface-1 border border-subtle-1 rounded-md px-2 py-1 h-[30px] min-w-[250px]" buttonContent={(isOpen, val) => ( - + {val ? RUNNER_SCRIPT_TYPE_MAP[val as ERunnerScriptType] : t("common.select")} diff --git a/apps/web/core/components/runners/script-modal/root.tsx b/apps/web/core/components/runners/script-modal/root.tsx index bc18ab9ce3..a06808ad47 100644 --- a/apps/web/core/components/runners/script-modal/root.tsx +++ b/apps/web/core/components/runners/script-modal/root.tsx @@ -16,7 +16,6 @@ import useSWR from "swr"; import { useParams } from "react-router"; import { ScriptModalSidebar } from "./sidebar"; import { CreateUpdateRunnerScript } from "../form/create-update-runner-script"; -import { Button } from "@plane/propel/button"; import type { ERunnerScriptType, RunnerScript } from "@plane/types"; import { observer } from "mobx-react"; import { useState } from "react"; @@ -50,33 +49,28 @@ export const ScriptModal = observer(function ScriptModal(props: { handleClose={handleClose} position={EModalPosition.CENTER} width={EModalWidth.VIXL} - className="max-h-[650px] overflow-scroll" + className="overflow-hidden" > -
- setScriptId(scriptId)} - /> -
+
+
+ setScriptId(scriptId)} + /> +
+
{ - handleUseSelectedScript(scriptId); - handleClose(); - }} - disabled={!scriptId} - > - Use script - - } - callBack={(scriptId) => setScriptId(scriptId)} + headerAction + callBack={(scriptId) => { + setScriptId(scriptId); + handleUseSelectedScript(scriptId); + handleClose(); + }} handleCancel={() => handleClose()} scriptType={scriptType} />