From 7a92946bed3d7d1ec6c488d86093b91527905b25 Mon Sep 17 00:00:00 2001 From: Oh64 Date: Wed, 11 Mar 2026 03:23:51 +0100 Subject: make spacebar compile again --- src/api/routes/channels/#channel_id/greet.ts | 5 +++-- .../#channel_id/messages/#message_id/index.ts | 26 ++++++++++------------ .../routes/channels/#channel_id/messages/index.ts | 23 ++++++++++++------- .../channels/#channel_id/messages/pins/index.ts | 13 ++++++----- src/api/routes/channels/#channel_id/pins.ts | 13 ++++++----- src/api/routes/channels/#channel_id/post-data.ts | 4 ++-- src/api/routes/channels/#channel_id/threads.ts | 13 +++++++++-- src/api/routes/channels/preload-messages.ts | 4 +--- 8 files changed, 60 insertions(+), 41 deletions(-) (limited to 'src/api/routes') diff --git a/src/api/routes/channels/#channel_id/greet.ts b/src/api/routes/channels/#channel_id/greet.ts index 8dbaacdcc..37fd55896 100644 --- a/src/api/routes/channels/#channel_id/greet.ts +++ b/src/api/routes/channels/#channel_id/greet.ts @@ -90,11 +90,12 @@ router.post( channel.last_message_id = message.id; + await message.save(); + const publicMsg = message.toJSON(); await Promise.all([ - message.save(), emitEvent({ event: "MESSAGE_CREATE", - data: message, + data: publicMsg, channel_id, } satisfies MessageCreateEvent), channel.save(), diff --git a/src/api/routes/channels/#channel_id/messages/#message_id/index.ts b/src/api/routes/channels/#channel_id/messages/#message_id/index.ts index e69818b12..32f51bea0 100644 --- a/src/api/routes/channels/#channel_id/messages/#message_id/index.ts +++ b/src/api/routes/channels/#channel_id/messages/#message_id/index.ts @@ -100,18 +100,15 @@ router.patch( edited_timestamp: new Date(), }); - await Promise.all([ - new_message.save(), - await emitEvent({ - event: "MESSAGE_UPDATE", - channel_id, - data: { - ...new_message.toJSON(), - nonce: undefined, - member: new_message.member?.toPublicMember(), - }, - } satisfies MessageUpdateEvent), - ]); + await new_message.save(); + await emitEvent({ + event: "MESSAGE_UPDATE", + channel_id, + data: { + ...new_message.toJSON(), + nonce: undefined, + }, + } satisfies MessageUpdateEvent); postHandleMessage(new_message).catch((e) => console.error("[Message] post-message handler failed", e)); @@ -221,12 +218,13 @@ router.put( //Fix for the client bug delete message.member; + await message.save(); + const publicMsg = message.toJSON(); await Promise.all([ - message.save(), emitEvent({ event: "MESSAGE_CREATE", channel_id: channel_id, - data: message, + data: publicMsg, } satisfies MessageCreateEvent), channel.save(), ]); diff --git a/src/api/routes/channels/#channel_id/messages/index.ts b/src/api/routes/channels/#channel_id/messages/index.ts index c96715bca..ca3db0134 100644 --- a/src/api/routes/channels/#channel_id/messages/index.ts +++ b/src/api/routes/channels/#channel_id/messages/index.ts @@ -54,6 +54,8 @@ import { MessageCreateAttachment, MessageCreateCloudAttachment, MessageCreateSchema, + PartialUser, + PublicMessage, Reaction, ReadStateType, RelationshipType, @@ -178,8 +180,8 @@ router.get( await Message.fillReplies(messages); const endpoint = Config.get().cdn.endpointPublic; - const ret = messages.map((x: Message) => { - x = x.toJSON(); + const ret = messages.map((msg) => { + const x = msg.toJSON(); (x.reactions || []).forEach((y: Partial) => { // eslint-disable-next-line @typescript-eslint/ban-ts-comment @@ -188,12 +190,13 @@ router.get( delete y.user_ids; }); if (!x.author) - x.author = User.create({ + x.author = { id: "4", discriminator: "0000", username: "Spacebar Ghost", public_flags: 0, - }); + avatar: null, + } as PartialUser; x.attachments?.forEach((y: Attachment) => { // dynamically set attachment proxy_url in case the endpoint changed const uri = y.proxy_url.startsWith("http") ? y.proxy_url : `https://example.org${y.proxy_url}`; @@ -243,11 +246,15 @@ router.get( }); //console.log(ret); + type MessageWithInteraction = PublicMessage & { + interaction_metadata?: { user?: User; user_id: string }; + interaction?: { user?: User }; + }; await Promise.all( - ret - .filter((x: MessageCreateSchema) => x.interaction_metadata && !x.interaction_metadata.user) - .map(async (x: MessageCreateSchema) => { - x.interaction_metadata!.user = x.interaction!.user = await User.findOneOrFail({ where: { id: (x as Message).interaction_metadata!.user_id } }); + (ret as MessageWithInteraction[]) + .filter((x) => x.interaction_metadata && !x.interaction_metadata.user) + .map(async (x) => { + x.interaction_metadata!.user = x.interaction!.user = await User.findOneOrFail({ where: { id: x.interaction_metadata!.user_id } }); }), ); diff --git a/src/api/routes/channels/#channel_id/messages/pins/index.ts b/src/api/routes/channels/#channel_id/messages/pins/index.ts index f9e4b6971..e72352cbd 100644 --- a/src/api/routes/channels/#channel_id/messages/pins/index.ts +++ b/src/api/routes/channels/#channel_id/messages/pins/index.ts @@ -80,12 +80,14 @@ router.put( mention_everyone: false, }); + await message.save(); + const publicMsg = message.toJSON(); + const publicSystem = systemPinMessage.toJSON(); await Promise.all([ - message.save(), emitEvent({ event: "MESSAGE_UPDATE", channel_id, - data: message, + data: publicMsg, } satisfies MessageUpdateEvent), emitEvent({ event: "CHANNEL_PINS_UPDATE", @@ -100,7 +102,7 @@ router.put( emitEvent({ event: "MESSAGE_CREATE", channel_id: message.channel_id, - data: systemPinMessage, + data: publicSystem, } satisfies MessageCreateEvent), ]); @@ -133,12 +135,13 @@ router.delete( message.pinned_at = null; + await message.save(); + const publicMsg2 = message.toJSON(); await Promise.all([ - message.save(), emitEvent({ event: "MESSAGE_UPDATE", channel_id, - data: message, + data: publicMsg2, } satisfies MessageUpdateEvent), emitEvent({ event: "CHANNEL_PINS_UPDATE", diff --git a/src/api/routes/channels/#channel_id/pins.ts b/src/api/routes/channels/#channel_id/pins.ts index 9b515591a..5105421d3 100644 --- a/src/api/routes/channels/#channel_id/pins.ts +++ b/src/api/routes/channels/#channel_id/pins.ts @@ -81,12 +81,14 @@ router.put( mention_everyone: false, }); + await message.save(); + const publicMsg = message.toJSON(); + const publicSystem = systemPinMessage.toJSON(); await Promise.all([ - message.save(), emitEvent({ event: "MESSAGE_UPDATE", channel_id, - data: message, + data: publicMsg, } satisfies MessageUpdateEvent), emitEvent({ event: "CHANNEL_PINS_UPDATE", @@ -101,7 +103,7 @@ router.put( emitEvent({ event: "MESSAGE_CREATE", channel_id: message.channel_id, - data: systemPinMessage, + data: publicSystem, } satisfies MessageCreateEvent), ]); @@ -134,12 +136,13 @@ router.delete( message.pinned_at = null; + await message.save(); + const publicMsg2 = message.toJSON(); await Promise.all([ - message.save(), emitEvent({ event: "MESSAGE_UPDATE", channel_id, - data: message, + data: publicMsg2, } satisfies MessageUpdateEvent), emitEvent({ event: "CHANNEL_PINS_UPDATE", diff --git a/src/api/routes/channels/#channel_id/post-data.ts b/src/api/routes/channels/#channel_id/post-data.ts index d37344a97..79d02863b 100644 --- a/src/api/routes/channels/#channel_id/post-data.ts +++ b/src/api/routes/channels/#channel_id/post-data.ts @@ -18,7 +18,7 @@ import { route } from "@spacebar/api"; import { Channel, Member, Message } from "@spacebar/util"; -import { PostDataSchema } from "@spacebar/schemas"; +import { PostDataSchema, PublicMessage } from "@spacebar/schemas"; import { Request, Response, Router } from "express"; import { messageUpload } from "./messages"; @@ -83,7 +83,7 @@ router.post( }), ]); await Message.fillReplies(messages); - const objRet: { threads: Record } = { threads: {} }; + const objRet: { threads: Record } = { threads: {} }; for (const thread of threads) { const owner = members.find(({ id }) => id === thread.owner_id)?.toJSON() || null; const first_message = messages.find(({ channel_id }) => channel_id === thread.id)?.toJSON() || null; diff --git a/src/api/routes/channels/#channel_id/threads.ts b/src/api/routes/channels/#channel_id/threads.ts index 26a19030b..2af92f53a 100644 --- a/src/api/routes/channels/#channel_id/threads.ts +++ b/src/api/routes/channels/#channel_id/threads.ts @@ -147,8 +147,17 @@ router.post( } } const embeds = body.message.embeds || []; - const message = await handleMessage({ + const bodyMsg = { ...body.message, + allowed_mentions: body.message.allowed_mentions + ? { + ...body.message.allowed_mentions, + parse: body.message.allowed_mentions.parse as ("users" | "roles" | "everyone")[], + } + : undefined, + } as Parameters[0]; + const message = await handleMessage({ + ...bodyMsg, id: thread.id, type: 0, pinned: false, @@ -189,7 +198,7 @@ router.post( emitEvent({ event: "MESSAGE_CREATE", channel_id: channel_id, - data: message, + data: message.toJSON(), } satisfies MessageCreateEvent), message.guild_id ? Member.update({ id: req.user_id, guild_id: message.guild_id }, { last_message_id: message.id }) : null, ]); diff --git a/src/api/routes/channels/preload-messages.ts b/src/api/routes/channels/preload-messages.ts index 09743cc73..f14b387b5 100644 --- a/src/api/routes/channels/preload-messages.ts +++ b/src/api/routes/channels/preload-messages.ts @@ -58,11 +58,9 @@ router.post( const filteredMessages = messages.map((message) => { const x = message.toJSON(); // https://docs.discord.food/resources/message#preload-messages - reactions are not included in the response - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-expect-error x.reactions = undefined; return x; - }) as PreloadMessagesResponseSchema; + }) as unknown as PreloadMessagesResponseSchema; return res.status(200).send(filteredMessages); }, -- cgit 1.5.1