read-states/ack-bulk (#969)

This commit is contained in:
Madeline 2023-01-30 13:34:27 +11:00 committed by GitHub
parent 709dc7280e
commit 71258f6487
5 changed files with 65 additions and 0 deletions

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,41 @@
import { Router, Request, Response } from "express";
import { route } from "@fosscord/api";
import { AckBulkSchema, ReadState } from "@fosscord/util";
const router = Router();
router.post(
"/",
route({ body: "AckBulkSchema" }),
async (req: Request, res: Response) => {
const body = req.body as AckBulkSchema;
// TODO: what is read_state_type ?
await Promise.all([
// for every new state
...body.read_states.map(async (x) => {
// find an existing one
const ret =
(await ReadState.findOne({
where: {
user_id: req.user_id,
channel_id: x.channel_id,
},
})) ??
// if it doesn't exist, create it (not a promise)
ReadState.create({
user_id: req.user_id,
channel_id: x.channel_id,
});
ret.last_message_id = x.message_id;
return ret.save();
}),
]);
return res.status(204);
},
);
export default router;

View File

@ -0,0 +1,9 @@
export interface AckBulkSchema {
read_states: [
{
channel_id: string;
message_id: string;
read_state_type: number; // WHat is this?
},
];
}

View File

@ -69,6 +69,21 @@ export * from "./VanityUrlSchema";
export * from "./VoiceIdentifySchema";
export * from "./VoiceStateUpdateSchema";
export * from "./VoiceVideoSchema";
export * from "./IdentifySchema";
export * from "./ActivitySchema";
export * from "./LazyRequestSchema";
export * from "./GuildUpdateSchema";
export * from "./ChannelPermissionOverwriteSchema";
export * from "./UserGuildSettingsSchema";
export * from "./GatewayPayloadSchema";
export * from "./RolePositionUpdateSchema";
export * from "./ChannelReorderSchema";
export * from "./UserSettingsSchema";
export * from "./BotModifySchema";
export * from "./ApplicationModifySchema";
export * from "./ApplicationCreateSchema";
export * from "./ApplicationAuthorizeSchema";
export * from "./AckBulkSchema";
export * from "./WebAuthnSchema";
export * from "./WebhookCreateSchema";
export * from "./WidgetModifySchema";