Add notifications viewed flag endpoint and persistence

This commit is contained in:
Adolfo Reyna
2026-02-20 22:15:13 -05:00
parent 1ca38ca3b9
commit d907aeecee
2 changed files with 44 additions and 1 deletions

View File

@@ -284,13 +284,36 @@ userDB = (DB) => {
postid, postid,
commentIndx, commentIndx,
actorid, actorid,
viewed: false,
} }
} }
} }
return DB.profileCols.updateOne({ _id }, update).catch((err) => { const r = await DB.profileCols.updateOne({ _id }, update).catch((err) => {
console.log(err); console.log(err);
return false; return false;
}); });
if (userProfileCache[profileid]) delete userProfileCache[profileid];
return r;
}
DB.markNotificationsViewed = async (profileid) => {
const _id = DB.ObjectID(profileid);
const update = {
$set: {
"notifications.$[n].viewed": true
}
};
const options = {
arrayFilters: [
{ "n.viewed": { $ne: true } }
]
};
const r = await DB.profileCols.updateOne({ _id }, update, options).catch((err) => {
console.log(err);
return false;
});
if (userProfileCache[profileid]) delete userProfileCache[profileid];
return r;
} }
DB.isSubscriptor = async (profileid) => { DB.isSubscriptor = async (profileid) => {

View File

@@ -784,6 +784,26 @@ DB.getDB.then((DB) => {
} }
}); });
router.post("/notifications/viewed", async (req, res) => {
try {
const profileid = getProfileId(req);
const result = await DB.markNotificationsViewed(profileid);
if (!result) {
return res.status(400).json({
status: "Could not update notifications"
});
}
return res.json({
status: "ok"
});
} catch (error) {
console.error("Error marking notifications as viewed", error);
return res.status(500).json({
status: "Internal server error"
});
}
});
/** /**
* @swagger * @swagger
* /user/{id}: * /user/{id}: