From 4b52f2077695aeba2c32c4f596de709fe82fdeb9 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 26 Sep 2023 12:16:53 -0500 Subject: [PATCH] instanceSchema: support max_toot_chars again --- src/schemas/instance.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/schemas/instance.ts b/src/schemas/instance.ts index 807d0c657..485feb429 100644 --- a/src/schemas/instance.ts +++ b/src/schemas/instance.ts @@ -30,7 +30,7 @@ const configurationSchema = coerceObject({ min_expiration: z.number().catch(300), }), statuses: coerceObject({ - max_characters: z.number().catch(500), + max_characters: z.number().optional().catch(undefined), max_media_attachments: z.number().catch(4), }), }); @@ -107,6 +107,7 @@ const instanceSchema = coerceObject({ feature_quote: z.boolean().catch(false), fedibird_capabilities: z.array(z.string()).catch([]), languages: z.string().array().catch([]), + max_toot_chars: z.number().optional().catch(undefined), nostr: nostrSchema.optional().catch(undefined), pleroma: pleromaSchema, registrations: z.boolean().catch(false), @@ -118,6 +119,21 @@ const instanceSchema = coerceObject({ urls: urlsSchema, usage: usageSchema, version: z.string().catch(''), +}).transform(({ max_toot_chars, ...instance }) => { + const { configuration } = instance; + + const statuses = { + ...configuration.statuses, + max_characters: configuration.statuses.max_characters ?? max_toot_chars ?? 500, + }; + + return { + ...instance, + configuration: { + ...instance.configuration, + statuses, + }, + }; }); type Instance = z.infer;