From 8d52e09f18b3e1cae40bee2fe81b71a0970a2e76 Mon Sep 17 00:00:00 2001 From: Anders Kaseorg Date: Thu, 19 Dec 2024 15:56:54 -0800 Subject: [PATCH] linkifiers: Extract realm_linkifier_schema. Signed-off-by: Anders Kaseorg --- web/src/linkifiers.ts | 8 +++----- web/src/state_data.ts | 14 +++++++------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/web/src/linkifiers.ts b/web/src/linkifiers.ts index 7e14bbdc0a..76ce74a969 100644 --- a/web/src/linkifiers.ts +++ b/web/src/linkifiers.ts @@ -1,6 +1,8 @@ import * as url_template_lib from "url-template"; +import type {z} from "zod"; import * as blueslip from "./blueslip.ts"; +import type {realm_linkifier_schema} from "./state_data.ts"; type LinkifierMap = Map< RegExp, @@ -8,11 +10,7 @@ type LinkifierMap = Map< >; const linkifier_map: LinkifierMap = new Map(); -type Linkifier = { - pattern: string; - url_template: string; - id: number; -}; +type Linkifier = z.output; export function get_linkifier_map(): LinkifierMap { return linkifier_map; diff --git a/web/src/state_data.ts b/web/src/state_data.ts index f46a361f24..6732f94fed 100644 --- a/web/src/state_data.ts +++ b/web/src/state_data.ts @@ -238,6 +238,12 @@ const custom_profile_field_types_schema = z.object({ export type CustomProfileFieldTypes = z.infer; +export const realm_linkifier_schema = z.object({ + pattern: z.string(), + url_template: z.string(), + id: z.number(), +}); + // Sync this with zerver.lib.events.do_events_register. export const realm_schema = z.object({ custom_profile_fields: z.array(custom_profile_field_schema), @@ -349,13 +355,7 @@ export const realm_schema = z.object({ realm_invite_to_stream_policy: z.number(), realm_is_zephyr_mirror_realm: z.boolean(), realm_jitsi_server_url: z.nullable(z.string()), - realm_linkifiers: z.array( - z.object({ - pattern: z.string(), - url_template: z.string(), - id: z.number(), - }), - ), + realm_linkifiers: z.array(realm_linkifier_schema), realm_logo_source: z.string(), realm_logo_url: z.string(), realm_mandatory_topics: z.boolean(),