zulip/web/src/server_message.ts
Prakhar Pratyush 656c65c74c edit_history: Remove 'prev_rendered_content_version' field.
This commit removes the 'prev_rendered_content_version'
field from:

* the 'edit_history' object within message objects in the
API response of `GET /messages`, `GET /messages/{message_id}`
and `POST /zulip-outgoing-webhook`.
* the 'update_message' event type

as it is an internal server implementation detail not used
by any client.

Note: The field is still stored in the 'edit_history' column
of the 'Message' table as it will be helpful when making
major changes to the markup rendering process.
2024-08-29 15:37:12 -07:00

81 lines
2.3 KiB
TypeScript

import {z} from "zod";
const display_recipient_users_schema = z.object({
id: z.number(),
email: z.string(),
full_name: z.string(),
});
export const message_edit_history_schema = z.array(
z.object({
prev_content: z.optional(z.string()),
prev_rendered_content: z.optional(z.string()),
prev_stream: z.optional(z.number()),
prev_topic: z.optional(z.string()),
stream: z.optional(z.number()),
timestamp: z.number(),
topic: z.optional(z.string()),
user_id: z.number().nullable(),
}),
);
const message_reaction_schema = z.array(
z.object({
emoji_name: z.string(),
emoji_code: z.string(),
reaction_type: z.enum(["unicode_emoji", "realm_emoji", "zulip_extra_emoji"]),
user_id: z.number(),
}),
);
const submessage_schema = z.array(
z.object({
msg_type: z.string(),
content: z.string(),
message_id: z.number(),
sender_id: z.number(),
id: z.number(),
}),
);
export const server_message_schema = z
.object({
avatar_url: z.string().nullish(),
client: z.string(),
content: z.string(),
content_type: z.enum(["text/html", "text/x-markdown"]),
display_recipient: z.union([z.string(), z.array(display_recipient_users_schema)]),
edit_history: z.optional(message_edit_history_schema),
id: z.number(),
is_me_message: z.boolean(),
last_edit_timestamp: z.number().optional(),
reactions: message_reaction_schema,
recipient_id: z.number(),
sender_email: z.string(),
sender_full_name: z.string(),
sender_id: z.number(),
sender_realm_str: z.string(),
submessages: submessage_schema,
timestamp: z.number(),
})
.and(
z.discriminatedUnion("type", [
z.object({
type: z.literal("stream"),
subject: z.string(),
stream_id: z.number(),
topic_links: z.array(
z.object({
text: z.string(),
url: z.string(),
}),
),
}),
z.object({
type: z.literal("private"),
subject: z.literal(""),
topic_links: z.array(z.never()),
}),
]),
);