Skip to content

Commit

Permalink
fix(UI-1300): add required fields for entry function and file path in…
Browse files Browse the repository at this point in the history
… trigger form (#976)
  • Loading branch information
J1za authored Feb 11, 2025
1 parent 35fa2ab commit b09e1a2
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 37 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ export const TriggerSpecificFields = ({
<div className="relative">
<Input
aria-label={t("placeholders.functionName")}
isRequired
{...register("entryFunction")}
isError={!!errors.entryFunction}
label={t("placeholders.functionName")}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ export const NameAndConnectionFields = ({ isEdit }: { isEdit?: boolean }) => {
{...register("name")}
disabled={isEdit}
isError={!!errors.name}
isRequired
label={t("placeholders.name")}
value={watchedName}
/>
Expand Down
4 changes: 2 additions & 2 deletions src/locales/en/tabs/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -157,8 +157,8 @@
"nameRequired": "Name is required",
"connectionRequired": "Connection is required",
"invalidCron": "Cron expression is required and must be valid for schedule triggers",
"functionRequired": "Entry function is required when file path is specified",
"fileRequired": "File path is required when entry function is specified"
"functionRequired": "Entry function is required",
"fileRequired": "File path is required"
}
},
"table": {
Expand Down
49 changes: 14 additions & 35 deletions src/validations/trigger.schema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,41 +16,20 @@ const cronFormat =
")$";

i18n.on("initialized", () => {
triggerSchema = z
.object({
name: z.string().min(1, i18n.t("triggers.form.validations.nameRequired", { ns: "tabs" })),
connection: selectSchema.refine((value) => value.label, {
message: i18n.t("triggers.form.validations.connectionRequired", { ns: "tabs" }),
}),
filePath: z
.union([selectSchema, z.object({ label: z.string().optional(), value: z.string().optional() })])
.optional(),
entryFunction: z.string().optional(),
eventType: z.string().optional(),
eventTypeSelect: selectSchema.optional(),
filter: z.string().optional(),
cron: z.string().optional(),
})
.superRefine((data, ctx) => {
if (data.entryFunction?.trim() && !data.filePath?.value) {
ctx.addIssue({
code: z.ZodIssueCode.custom,
message: i18n.t("triggers.form.validations.fileRequired", { ns: "tabs" }),
path: ["filePath"],
});
}

if (!data.filePath?.value) {
return;
}
if (!data.entryFunction || data.entryFunction.trim() === "") {
ctx.addIssue({
code: z.ZodIssueCode.custom,
message: i18n.t("triggers.form.validations.functionRequired", { ns: "tabs" }),
path: ["entryFunction"],
});
}
});
triggerSchema = z.object({
name: z.string().min(1, i18n.t("triggers.form.validations.nameRequired", { ns: "tabs" })),
connection: selectSchema.refine((value) => value.label, {
message: i18n.t("triggers.form.validations.connectionRequired", { ns: "tabs" }),
}),
filePath: selectSchema.refine((value) => value.label, {
message: i18n.t("triggers.form.validations.fileRequired", { ns: "tabs" }),
}),
entryFunction: z.string().min(1, i18n.t("triggers.form.validations.functionRequired", { ns: "tabs" })),
eventType: z.string().optional(),
eventTypeSelect: selectSchema.optional(),
filter: z.string().optional(),
cron: z.string().optional(),
});
});

export type TriggerFormData = z.infer<typeof triggerSchema>;
Expand Down

0 comments on commit b09e1a2

Please sign in to comment.