Files
FrozenFriendsYume/packages/backend/built/server/api/common/read-notification.js
T
2026-07-26 18:25:37 +09:00

37 lines
1.4 KiB
JavaScript

import { In } from "typeorm";
import { publishMainStream } from "../../../services/stream.js";
import { pushNotification } from "../../../services/push-notification.js";
import { Notifications, Users } from "../../../models/index.js";
export async function readNotification(userId, notificationIds) {
if (notificationIds.length === 0) return;
// Update documents
const result = await Notifications.update({
notifieeId: userId,
id: In(notificationIds),
isRead: false
}, {
isRead: true
});
if (result.affected === 0) return;
if (!await Users.getHasUnreadNotification(userId)) return postReadAllNotifications(userId);
else return postReadNotifications(userId, notificationIds);
}
export async function readNotificationByQuery(userId, query) {
const notificationIds = await Notifications.findBy({
...query,
notifieeId: userId,
isRead: false
}).then((notifications)=>notifications.map((notification)=>notification.id));
return readNotification(userId, notificationIds);
}
function postReadAllNotifications(userId) {
publishMainStream(userId, "readAllNotifications");
return pushNotification(userId, "readAllNotifications", undefined);
}
function postReadNotifications(userId, notificationIds) {
publishMainStream(userId, "readNotifications", notificationIds);
return pushNotification(userId, "readNotifications", {
notificationIds
});
}