From 5075837d555bc8f215d1eaacbc1b4efb6ee705e8 Mon Sep 17 00:00:00 2001 From: Rory& Date: Tue, 2 Dec 2025 18:06:00 +0100 Subject: [PATCH] Support deleting ACKs for type==channel --- assets/openapi.json | Bin 838770 -> 846348 bytes assets/schemas.json | Bin 370798 -> 371447 bytes .../channels/#channel_id/messages/index.ts | 29 ++++++++++++++++-- .../uncategorised/MessageAcknowledgeSchema.ts | 22 ++++++++++++- 4 files changed, 48 insertions(+), 3 deletions(-) diff --git a/assets/openapi.json b/assets/openapi.json index d20ef2fb821c7ee070ac20f9dcab09e5f14162a9..5a81a5de18637ca013d622eaaeb535a012e19b73 100644 GIT binary patch delta 544 zcmew~!?@>)aYGB^7ADsX(>JVTQ=RO ze^|;RFnxm>kK}X#ZVnN?&|ueiU&r9!cu&7D&yeXG12|`G7vNx*gqq)A!8L(#`-Xn5 za>nf!syTm?W>nI6Z?DZ4$PfhUiV3lXc^4Kuiz7`H1h Xaf>od-{8Z|+1`=Hy}cui=T#~ItVF|N delta 118 zcmeCVV*F`_aYGB^7ADsX(*^D_+D=Z;WSK6vk?H321^1cQ+r73h0WmWWvj8#ccCRgL zA}s9_cd%`rxP$%A$?1HvIJl=Dd&ea-y9Vole6>k%X3mw(o?6s zWDJZNoBHvkmz)QZ;S$y_j}4rFZj { + const { channel_id } = req.params; // not really a channel id if read_state_type != CHANNEL + const body = req.body as AcknowledgeDeleteSchema; + if (body.version != 2) return res.status(204).send(); + // TODO: handle other read state types + if (body.read_state_type != ReadStateType.CHANNEL) return res.status(204).send(); + + const readState = await ReadState.findOne({where: {channel_id}}); + if (readState) { + await readState.remove(); + } + + res.status(204).send(); + }, +); + export default router; diff --git a/src/schemas/uncategorised/MessageAcknowledgeSchema.ts b/src/schemas/uncategorised/MessageAcknowledgeSchema.ts index 3ba716491..891ccc903 100644 --- a/src/schemas/uncategorised/MessageAcknowledgeSchema.ts +++ b/src/schemas/uncategorised/MessageAcknowledgeSchema.ts @@ -19,7 +19,27 @@ export interface MessageAcknowledgeSchema { manual?: boolean; mention_count?: number; - flags?: number; + flags?: ReadStateFlags; last_viewed?: number; token?: string; } + +export interface AcknowledgeDeleteSchema { + read_state_type?: ReadStateType; + version?: number; +} + +export enum ReadStateType { + CHANNEL = 0, + GUILD_EVENT = 1, + NOTIFICATION_CENTER = 2, + GUILD_HOME = 3, + GUILD_ONBOARDING_QUESTION = 4, + MESSAGE_REQUESTS = 5, +} + +export enum ReadStateFlags { + IS_GUILD_CHANNEL = 1 << 0, + IS_THREAD = 1 << 1, + IS_MENTION_LOW_IMPORTANCE = 1 << 2, +} \ No newline at end of file