feat: api v3 calls to mark chat read/unread

This commit is contained in:
Julian Lam
2023-02-06 13:55:35 -05:00
parent 1da13f254d
commit 4a15b4ee51
3 changed files with 25 additions and 0 deletions

View File

@@ -73,6 +73,17 @@ chatsAPI.rename = async (caller, data) => {
});
};
chatsAPI.mark = async (caller, data) => {
const { roomId, state } = data;
if (state) {
await messaging.markUnread([caller.uid], roomId);
} else {
await messaging.markRead(caller.uid, roomId);
}
return messaging.loadRoom(caller.uid, { roomId });
};
chatsAPI.users = async (caller, data) => {
const [isOwner, users] = await Promise.all([
messaging.isRoomOwner(caller.uid, data.roomId),

View File

@@ -53,6 +53,17 @@ Chats.rename = async (req, res) => {
helpers.formatApiResponse(200, res, roomObj);
};
Chats.mark = async (req, res) => {
const state = req.method === 'PUT' ? 1 : 0;
const roomObj = await api.chats.mark(req, {
...req.body,
roomId: req.params.roomId,
state,
});
helpers.formatApiResponse(200, res, roomObj);
};
Chats.users = async (req, res) => {
const users = await api.chats.users(req, {
...req.params,

View File

@@ -19,6 +19,9 @@ module.exports = function () {
setupApiRoute(router, 'put', '/:roomId', [...middlewares, middleware.assert.room, middleware.checkRequired.bind(null, ['name'])], controllers.write.chats.rename);
// no route for room deletion, noted here just in case...
setupApiRoute(router, 'put', '/:roomId/state', [...middlewares, middleware.assert.room], controllers.write.chats.mark);
setupApiRoute(router, 'delete', '/:roomId/state', [...middlewares, middleware.assert.room], controllers.write.chats.mark);
setupApiRoute(router, 'get', '/:roomId/users', [...middlewares, middleware.assert.room], controllers.write.chats.users);
setupApiRoute(router, 'post', '/:roomId/users', [...middlewares, middleware.assert.room, middleware.checkRequired.bind(null, ['uids'])], controllers.write.chats.invite);
setupApiRoute(router, 'delete', '/:roomId/users', [...middlewares, middleware.assert.room, middleware.checkRequired.bind(null, ['uids'])], controllers.write.chats.kick);