From 144e13e674af16480a87d399dfe9784c23839e13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marcin=20miko=C5=82ajczak?= Date: Sat, 28 Oct 2023 16:36:44 +0200 Subject: [PATCH] Remove params not being part of instancev2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: marcin mikołajczak --- src/schemas/instance.ts | 86 +++++++++++++++++++++++------------------ 1 file changed, 49 insertions(+), 37 deletions(-) diff --git a/src/schemas/instance.ts b/src/schemas/instance.ts index 12faca627..9e51feaea 100644 --- a/src/schemas/instance.ts +++ b/src/schemas/instance.ts @@ -154,8 +154,6 @@ const instanceSchema = coerceObject({ feature_quote: z.boolean().catch(false), fedibird_capabilities: z.array(z.string()).catch([]), languages: z.string().array().catch([]), - max_media_attachments: z.number().optional().catch(undefined), - max_toot_chars: z.number().optional().catch(undefined), nostr: nostrSchema.optional().catch(undefined), pleroma: pleromaSchema, registrations: registrations, @@ -165,21 +163,28 @@ const instanceSchema = coerceObject({ title: z.string().catch(''), usage: usageSchema, version: z.string().catch(''), -}).transform(({ max_media_attachments, max_toot_chars, ...instance }) => { - const { configuration } = instance; - +}).transform(({ configuration, ...instance }) => { const version = fixVersion(instance.version); + const polls = { + ...configuration.polls, + max_characters_per_option: configuration.polls.max_characters_per_option ?? 25, + max_expiration: configuration.polls.max_expiration ?? 2629746, + max_options: configuration.polls.max_options ?? 4, + min_expiration: configuration.polls.min_expiration ?? 300, + }; + const statuses = { ...configuration.statuses, - max_characters: configuration.statuses.max_characters ?? max_toot_chars ?? 500, - max_media_attachments: configuration.statuses.max_media_attachments ?? max_media_attachments ?? 4, + max_characters: configuration.statuses.max_characters ?? 500, + max_media_attachments: configuration.statuses.max_media_attachments ?? 4, }; return { ...instance, configuration: { ...configuration, + polls, statuses, }, version, @@ -219,6 +224,8 @@ const instanceV1ToV2 = coerceObject({ description, description_limit, email, + max_media_attachments, + max_toot_chars, poll_limits, pleroma, registrations, @@ -226,40 +233,45 @@ const instanceV1ToV2 = coerceObject({ thumbnail, urls, ...instance -}) => { - return instanceSchema.parse({ - ...instance, - configuration: { - ...configuration, - polls: { - max_characters_per_option: configuration.polls.max_characters_per_option ?? poll_limits.max_option_chars ?? 25, - max_expiration: configuration.polls.max_expiration ?? poll_limits.max_expiration ?? 2629746, - max_options: configuration.polls.max_options ?? poll_limits.max_options ?? 4, - min_expiration: configuration.polls.min_expiration ?? poll_limits.min_expiration ?? 300, - }, - urls: { - streaming: urls.streaming_api, - }, +}) => instanceSchema.parse({ + ...instance, + configuration: { + ...configuration, + polls: { + ...configuration.polls, + max_characters_per_option: configuration.polls.max_characters_per_option ?? poll_limits.max_option_chars ?? 25, + max_expiration: configuration.polls.max_expiration ?? poll_limits.max_expiration ?? 2629746, + max_options: configuration.polls.max_options ?? poll_limits.max_options ?? 4, + min_expiration: configuration.polls.min_expiration ?? poll_limits.min_expiration ?? 300, }, - contact: { - account: contact_account, - email: email, + statuses: { + ...configuration.statuses, + max_characters: configuration.statuses.max_characters ?? max_toot_chars ?? 500, + max_media_attachments: configuration.statuses.max_media_attachments ?? max_media_attachments ?? 4, }, - description: short_description || description, - pleroma: { - ...pleroma, - metadata: { - ...pleroma.metadata, - description_limit, - }, + urls: { + streaming: urls.streaming_api, }, - registrations: { - approval_required: approval_required, - enabled: registrations, + }, + contact: { + account: contact_account, + email: email, + }, + description: short_description || description, + pleroma: { + ...pleroma, + metadata: { + ...pleroma.metadata, + description_limit, }, - thumbnail: { url: thumbnail }, - }); -}); + }, + registrations: { + approval_required: approval_required, + enabled: registrations, + }, + thumbnail: { url: thumbnail }, +}), +); type Instance = z.infer;