diff --git a/backend/src/plugins/Cases/types.ts b/backend/src/plugins/Cases/types.ts index 24ba6bf7..46519ac4 100644 --- a/backend/src/plugins/Cases/types.ts +++ b/backend/src/plugins/Cases/types.ts @@ -10,13 +10,23 @@ import { zColor } from "../../utils/zColor.js"; const caseKeys = keys(CaseNameToType) as U.ListOf; +const caseColorsTypeMap = caseKeys.reduce((map, key) => { + map[key] = zColor; + return map; +}, {} as Record); + +const caseIconsTypeMap = caseKeys.reduce((map, key) => { + map[key] = zBoundedCharacters(0, 100); + return map; +}, {} as Record); + export const zCasesConfig = z.strictObject({ log_automatic_actions: z.boolean().default(true), case_log_channel: zSnowflake.nullable().default(null), show_relative_times: z.boolean().default(true), relative_time_cutoff: zDelayString.default("1w"), - case_colors: z.record(z.enum(caseKeys), zColor).nullable().default(null), - case_icons: z.record(z.enum(caseKeys), zBoundedCharacters(0, 100)).nullable().default(null), + case_colors: z.strictObject(caseColorsTypeMap).partial().nullable().default(null), + case_icons: z.strictObject(caseIconsTypeMap).partial().nullable().default(null), }); export interface CasesPluginType extends BasePluginType { diff --git a/backend/src/plugins/TimeAndDate/types.ts b/backend/src/plugins/TimeAndDate/types.ts index dd1b48ee..24e1eb3d 100644 --- a/backend/src/plugins/TimeAndDate/types.ts +++ b/backend/src/plugins/TimeAndDate/types.ts @@ -9,9 +9,14 @@ import { defaultDateFormats } from "./defaultDateFormats.js"; const zDateFormatKeys = z.enum(keys(defaultDateFormats) as U.ListOf); +const dateFormatTypeMap = keys(defaultDateFormats).reduce((map, key) => { + map[key] = z.string().default(defaultDateFormats[key]); + return map; +}, {} as Record>); + export const zTimeAndDateConfig = z.strictObject({ timezone: zValidTimezone(z.string()).default("Etc/UTC"), - date_formats: z.record(zDateFormatKeys, z.string()).nullable().default(defaultDateFormats), + date_formats: z.strictObject(dateFormatTypeMap).default(defaultDateFormats), can_set_timezone: z.boolean().default(false), });