fix(updateInstanceController): stop using screenshot_ids and thumbnail_id

This commit is contained in:
P. Reis 2024-11-07 18:18:33 -03:00
parent 115641b3c2
commit 715908082f

View file

@ -294,14 +294,15 @@ export const statusZapSplitsController: AppController = async (c) => {
}; };
const updateInstanceSchema = z.object({ const updateInstanceSchema = z.object({
title: z.string().optional(), title: z.string(),
description: z.string().optional(), description: z.string(),
short_description: z.string(),
/** Mastodon doesn't have this field. */ /** Mastodon doesn't have this field. */
short_description: z.string().optional(), screenshots: screenshotsSchema,
/** Mastodon doesn't have this field. */ /** https://docs.joinmastodon.org/entities/Instance/#thumbnail-url */
screenshot_ids: z.string().array().nullish(), thumbnail: z.object({
/** Mastodon doesn't have this field. */ url: z.string().url(),
thumbnail_id: z.string().optional(), }),
}).strict(); }).strict();
export const updateInstanceController: AppController = async (c) => { export const updateInstanceController: AppController = async (c) => {
@ -321,51 +322,15 @@ export const updateInstanceController: AppController = async (c) => {
title, title,
description, description,
short_description, short_description,
screenshot_ids, screenshots,
thumbnail_id, thumbnail,
} = result.data; } = result.data;
const thumbnailUrl: string | undefined = (() => { meta.name = title;
if (!thumbnail_id) { meta.about = description;
return undefined; meta.tagline = short_description;
} meta.screenshots = screenshots;
meta.picture = thumbnail.url;
const upload = dittoUploads.get(thumbnail_id);
if (!upload) {
throw new HTTPException(422, { message: 'Uploaded attachment is no longer available.' });
}
return upload.url;
})();
const screenshots: z.infer<typeof screenshotsSchema> = (screenshot_ids ?? []).map((id) => {
const upload = dittoUploads.get(id);
if (!upload) {
throw new HTTPException(422, { message: 'Uploaded attachment is no longer available.' });
}
const data = renderAttachment(upload);
if (!data?.url || !data.meta?.original) {
throw new HTTPException(422, { message: 'Image must have an URL and size dimensions.' });
}
const screenshot = {
src: data.url,
label: data.description,
sizes: `${data?.meta?.original?.width}x${data?.meta?.original?.height}`,
type: data?.type, // FIX-ME, I BEG YOU: Returns just `image` instead of a valid MIME type
};
return screenshot;
});
meta.name = title ?? meta.name;
meta.about = description ?? meta.about;
meta.tagline = short_description ?? meta.tagline;
meta.screenshots = screenshot_ids ? screenshots : meta.screenshots;
meta.picture = thumbnailUrl ?? meta.picture;
delete meta.event; delete meta.event;
return { return {