From a671b17b4f7982972243981b0cc7550cfd01d13c Mon Sep 17 00:00:00 2001 From: Nicolas Meienberger Date: Sun, 15 Mar 2026 12:08:26 +0100 Subject: [PATCH] refactor(schedule form): helper for multiline parsing --- .../components/create-schedule-form/index.tsx | 33 +++---------------- .../components/create-schedule-form/utils.ts | 8 +++++ 2 files changed, 13 insertions(+), 28 deletions(-) diff --git a/app/client/modules/backups/components/create-schedule-form/index.tsx b/app/client/modules/backups/components/create-schedule-form/index.tsx index d5089233..beb040b7 100644 --- a/app/client/modules/backups/components/create-schedule-form/index.tsx +++ b/app/client/modules/backups/components/create-schedule-form/index.tsx @@ -14,7 +14,7 @@ import { PathsSection } from "./paths-section"; import { RetentionSection } from "./retention-section"; import { SummarySection } from "./summary-section"; import { internalFormSchema, type BackupScheduleFormValues, type InternalFormValues } from "./types"; -import { backupScheduleToFormValues } from "./utils"; +import { backupScheduleToFormValues, parseMultilineEntries } from "./utils"; export type { BackupScheduleFormValues }; @@ -46,34 +46,11 @@ export const CreateScheduleForm = ({ initialValues, formId, onSubmit, volume }: cronExpression, ...rest } = data; - const excludePatterns = excludePatternsText - ? excludePatternsText - .split("\n") - .map((p) => p.trim()) - .filter(Boolean) - : []; - - const excludeIfPresent = excludeIfPresentText - ? excludeIfPresentText - .split("\n") - .map((p) => p.trim()) - .filter(Boolean) - : []; - - const textPatterns = includePatternsText - ? includePatternsText - .split("\n") - .map((p) => p.trim()) - .filter(Boolean) - : []; + const excludePatterns = parseMultilineEntries(excludePatternsText); + const excludeIfPresent = parseMultilineEntries(excludeIfPresentText); + const textPatterns = parseMultilineEntries(includePatternsText); const includePatterns = [...(fileBrowserPatterns || []), ...textPatterns]; - - const customResticParams = customResticParamsText - ? customResticParamsText - .split("\n") - .map((p) => p.trim()) - .filter(Boolean) - : []; + const customResticParams = parseMultilineEntries(customResticParamsText); onSubmit({ ...rest, diff --git a/app/client/modules/backups/components/create-schedule-form/utils.ts b/app/client/modules/backups/components/create-schedule-form/utils.ts index e3ecf675..a2d59ccc 100644 --- a/app/client/modules/backups/components/create-schedule-form/utils.ts +++ b/app/client/modules/backups/components/create-schedule-form/utils.ts @@ -2,6 +2,14 @@ import type { BackupSchedule } from "~/client/lib/types"; import { cronToFormValues } from "../../lib/cron-utils"; import type { InternalFormValues } from "./types"; +export const parseMultilineEntries = (value?: string) => + value + ? value + .split("\n") + .map((entry) => entry.trim()) + .filter(Boolean) + : []; + export const backupScheduleToFormValues = (schedule?: BackupSchedule): InternalFormValues | undefined => { if (!schedule) { return undefined;