refactor(schedule form): helper for multiline parsing

This commit is contained in:
Nicolas Meienberger 2026-03-15 12:08:26 +01:00
parent 2d10da72f6
commit a671b17b4f
2 changed files with 13 additions and 28 deletions

View file

@ -14,7 +14,7 @@ import { PathsSection } from "./paths-section";
import { RetentionSection } from "./retention-section"; import { RetentionSection } from "./retention-section";
import { SummarySection } from "./summary-section"; import { SummarySection } from "./summary-section";
import { internalFormSchema, type BackupScheduleFormValues, type InternalFormValues } from "./types"; import { internalFormSchema, type BackupScheduleFormValues, type InternalFormValues } from "./types";
import { backupScheduleToFormValues } from "./utils"; import { backupScheduleToFormValues, parseMultilineEntries } from "./utils";
export type { BackupScheduleFormValues }; export type { BackupScheduleFormValues };
@ -46,34 +46,11 @@ export const CreateScheduleForm = ({ initialValues, formId, onSubmit, volume }:
cronExpression, cronExpression,
...rest ...rest
} = data; } = data;
const excludePatterns = excludePatternsText const excludePatterns = parseMultilineEntries(excludePatternsText);
? excludePatternsText const excludeIfPresent = parseMultilineEntries(excludeIfPresentText);
.split("\n") const textPatterns = parseMultilineEntries(includePatternsText);
.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 includePatterns = [...(fileBrowserPatterns || []), ...textPatterns]; const includePatterns = [...(fileBrowserPatterns || []), ...textPatterns];
const customResticParams = parseMultilineEntries(customResticParamsText);
const customResticParams = customResticParamsText
? customResticParamsText
.split("\n")
.map((p) => p.trim())
.filter(Boolean)
: [];
onSubmit({ onSubmit({
...rest, ...rest,

View file

@ -2,6 +2,14 @@ import type { BackupSchedule } from "~/client/lib/types";
import { cronToFormValues } from "../../lib/cron-utils"; import { cronToFormValues } from "../../lib/cron-utils";
import type { InternalFormValues } from "./types"; 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 => { export const backupScheduleToFormValues = (schedule?: BackupSchedule): InternalFormValues | undefined => {
if (!schedule) { if (!schedule) {
return undefined; return undefined;