feat: Add tracking pixel to notifications for mark-as-read functionality (#5626)

This commit is contained in:
Tom Moor
2023-07-31 18:01:50 -04:00
committed by GitHub
parent a13f2c7311
commit 91585ee09d
3 changed files with 37 additions and 19 deletions

View File

@@ -120,21 +120,24 @@ router.post(
router.get(
"notifications.pixel",
validate(T.NotificationsPixelSchema),
transaction(),
async (ctx: APIContext<T.NotificationsPixelReq>) => {
const { id, token } = ctx.input.query;
const notification = await Notification.findByPk(id);
const notification = await Notification.unscoped().findByPk(id);
if (!notification || !safeEqual(token, notification.pixelToken)) {
throw AuthenticationError();
}
await notificationUpdater({
notification,
viewedAt: new Date(),
ip: ctx.request.ip,
transaction: ctx.state.transaction,
});
if (!notification.viewedAt) {
await notificationUpdater({
notification,
viewedAt: new Date(),
ip: ctx.request.ip,
transaction: ctx.state.transaction,
});
}
ctx.response.set("Content-Type", "image/gif");
ctx.body = pixel;