import define from "../../define.js"; import { ApiError } from "../../error.js"; import { genId } from "../../../../misc/gen-id.js"; import { AnnouncementReads, Announcements, Users } from "../../../../models/index.js"; import { publishMainStream } from "../../../../services/stream.js"; export const meta = { tags: [ "account" ], requireCredential: true, kind: "write:account", errors: { noSuchAnnouncement: { message: "No such announcement.", code: "NO_SUCH_ANNOUNCEMENT", id: "184663db-df88-4bc2-8b52-fb85f0681939" } } }; export const paramDef = { type: "object", properties: { announcementId: { type: "string", format: "misskey:id" } }, required: [ "announcementId" ] }; export default define(meta, paramDef, async (ps, user)=>{ // Check if announcement exists const exist = await Announcements.exist({ where: { id: ps.announcementId } }); if (!exist) { throw new ApiError(meta.errors.noSuchAnnouncement); } // Check if already read const read = await AnnouncementReads.exist({ where: { announcementId: ps.announcementId, userId: user.id } }); if (read) { return; } // Create read await AnnouncementReads.insert({ id: genId(), createdAt: new Date(), announcementId: ps.announcementId, userId: user.id }); if (!await Users.getHasUnreadAnnouncement(user.id)) { publishMainStream(user.id, "readAllAnnouncements"); } });