refactor(mattermost): define post schema once

This commit is contained in:
Ayaan Zaidi
2026-03-27 10:08:29 +05:30
parent ca9659ffb0
commit 06820b6daf
2 changed files with 18 additions and 18 deletions

View File

@@ -1,4 +1,5 @@
import { fetchWithSsrFGuard } from "openclaw/plugin-sdk/infra-runtime";
import { z } from "openclaw/plugin-sdk/zod";
export type MattermostClient = {
baseUrl: string;
@@ -25,17 +26,21 @@ export type MattermostChannel = {
team_id?: string | null;
};
export type MattermostPost = {
id: string;
user_id?: string | null;
channel_id?: string | null;
message?: string | null;
file_ids?: string[] | null;
type?: string | null;
root_id?: string | null;
create_at?: number | null;
props?: Record<string, unknown> | null;
};
export const MattermostPostSchema = z
.object({
id: z.string(),
user_id: z.string().nullable().optional(),
channel_id: z.string().nullable().optional(),
message: z.string().nullable().optional(),
file_ids: z.array(z.string()).nullable().optional(),
type: z.string().nullable().optional(),
root_id: z.string().nullable().optional(),
create_at: z.number().nullable().optional(),
props: z.record(z.string(), z.unknown()).nullable().optional(),
})
.passthrough();
export type MattermostPost = z.infer<typeof MattermostPostSchema>;
export type MattermostFileInfo = {
id: string;

View File

@@ -1,8 +1,8 @@
import { safeParseJsonWithSchema, safeParseWithSchema } from "openclaw/plugin-sdk/extension-shared";
import { z } from "openclaw/plugin-sdk/zod";
import WebSocket from "ws";
import { z } from "zod";
import type { ChannelAccountSnapshot, RuntimeEnv } from "../runtime-api.js";
import type { MattermostPost } from "./client.js";
import { MattermostPostSchema, type MattermostPost } from "./client.js";
import { rawDataToString } from "./monitor-helpers.js";
export type MattermostEventPayload = {
@@ -36,11 +36,6 @@ export type MattermostWebSocketLike = {
export type MattermostWebSocketFactory = (url: string) => MattermostWebSocketLike;
const MattermostPostSchema = z.record(
z.string(),
z.unknown(),
) as unknown as z.ZodType<MattermostPost>;
const MattermostEventPayloadSchema = z.object({
event: z.string().optional(),
data: z