Files
2026-07-26 18:25:37 +09:00

39 lines
1.2 KiB
JavaScript

import { publishMainStream } from "../../../../services/stream.js";
import define from "../../define.js";
import { MessagingMessages, UserGroupJoinings } from "../../../../models/index.js";
export const meta = {
tags: [
"account",
"messaging"
],
requireCredential: true,
kind: "write:account"
};
export const paramDef = {
type: "object",
properties: {},
required: []
};
export default define(meta, paramDef, async (ps, user)=>{
// Update documents
await MessagingMessages.update({
recipientId: user.id,
isRead: false
}, {
isRead: true
});
const joinings = await UserGroupJoinings.findBy({
userId: user.id
});
await Promise.all(joinings.map((j)=>MessagingMessages.createQueryBuilder().update().set({
reads: ()=>`array_append("reads", '${user.id}')`
}).where("groupId = :groupId", {
groupId: j.userGroupId
}).andWhere("userId != :userId", {
userId: user.id
}).andWhere("NOT (:userId = ANY(reads))", {
userId: user.id
}).execute()));
publishMainStream(user.id, "readAllMessagingMessages");
});