zform: Move zod schema to avoid dependency cycle.

We need to validate the events array in 'submessage.js' using
zod. One of the schema needed is 'zform_widget_extra_data_schema'
in zform. If we import it inside 'submessage', it creates a
dependency cycle ; zform.js=>transmit.js=>server_events.js=>server_events_dispatch.js.
server_events_dispatch.js=>submessage.js=>zform.js

Hence I have moved the schema inside 'submessage' and imported it
inside 'zform.js'.
This commit is contained in:
Varun Singh 2024-03-28 19:35:06 +05:30 committed by Tim Abbott
parent 3eb1a11725
commit 195bb4d13b
2 changed files with 16 additions and 14 deletions

View File

@ -1,8 +1,23 @@
import z from "zod";
import * as blueslip from "./blueslip"; import * as blueslip from "./blueslip";
import * as channel from "./channel"; import * as channel from "./channel";
import * as message_store from "./message_store"; import * as message_store from "./message_store";
import * as widgetize from "./widgetize"; import * as widgetize from "./widgetize";
export const zform_widget_extra_data_schema = z.object({
choices: z.array(
z.object({
type: z.string(),
long_name: z.string(),
reply: z.string(),
short_name: z.string(),
}),
),
heading: z.string(),
type: z.literal("choices"),
});
export function get_message_events(message) { export function get_message_events(message) {
if (message.locally_echoed) { if (message.locally_echoed) {
return undefined; return undefined;

View File

@ -1,24 +1,11 @@
import $ from "jquery"; import $ from "jquery";
import {z} from "zod";
import render_widgets_zform_choices from "../templates/widgets/zform_choices.hbs"; import render_widgets_zform_choices from "../templates/widgets/zform_choices.hbs";
import * as blueslip from "./blueslip"; import * as blueslip from "./blueslip";
import {zform_widget_extra_data_schema} from "./submessage";
import * as transmit from "./transmit"; import * as transmit from "./transmit";
const zform_widget_extra_data_schema = z.object({
choices: z.array(
z.object({
type: z.string(),
long_name: z.string(),
reply: z.string(),
short_name: z.string(),
}),
),
heading: z.string(),
type: z.literal("choices"),
});
export function activate(opts) { export function activate(opts) {
const self = {}; const self = {};