mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-02-15 02:57:51 +01:00
68 lines
1.9 KiB
JavaScript
68 lines
1.9 KiB
JavaScript
'use strict';
|
|
|
|
const topics = require('../../topics');
|
|
const categories = require('../../categories');
|
|
|
|
const api = require('../../api');
|
|
const sockets = require('..');
|
|
|
|
module.exports = function (SocketTopics) {
|
|
SocketTopics.markAsRead = async function (socket, tids) {
|
|
sockets.warnDeprecated(socket, 'PUT /api/v3/topics/:tid/read');
|
|
|
|
if (!Array.isArray(tids) || socket.uid <= 0) {
|
|
throw new Error('[[error:invalid-data]]');
|
|
}
|
|
|
|
await Promise.all(tids.map(async tid => api.topics.markRead(socket, { tid })));
|
|
};
|
|
|
|
SocketTopics.markTopicNotificationsRead = async function (socket, tids) {
|
|
if (!Array.isArray(tids) || !socket.uid) {
|
|
throw new Error('[[error:invalid-data]]');
|
|
}
|
|
await topics.markTopicNotificationsRead(tids, socket.uid);
|
|
};
|
|
|
|
SocketTopics.markAllRead = async function (socket) {
|
|
if (socket.uid <= 0) {
|
|
throw new Error('[[error:invalid-uid]]');
|
|
}
|
|
await topics.markAllRead(socket.uid);
|
|
topics.pushUnreadCount(socket.uid);
|
|
};
|
|
|
|
SocketTopics.markCategoryTopicsRead = async function (socket, cid) {
|
|
const exists = await categories.exists(cid);
|
|
if (!exists) {
|
|
throw new Error('[[error:invalid-cid]]');
|
|
}
|
|
const tids = await topics.getUnreadTids({ cid: cid, uid: socket.uid, filter: '' });
|
|
await SocketTopics.markAsRead(socket, tids);
|
|
};
|
|
|
|
SocketTopics.markUnread = async function (socket, tid) {
|
|
sockets.warnDeprecated(socket, 'DELETE /api/v3/topics/:tid/read');
|
|
|
|
if (!tid || socket.uid <= 0) {
|
|
throw new Error('[[error:invalid-data]]');
|
|
}
|
|
|
|
await api.topics.markUnread(socket, { tid });
|
|
};
|
|
|
|
SocketTopics.markAsUnreadForAll = async function (socket, tids) {
|
|
sockets.warnDeprecated(socket, 'PUT /api/v3/topics/:tid/bump');
|
|
|
|
if (!Array.isArray(tids)) {
|
|
throw new Error('[[error:invalid-tid]]');
|
|
}
|
|
|
|
if (socket.uid <= 0) {
|
|
throw new Error('[[error:no-privileges]]');
|
|
}
|
|
|
|
await Promise.all(tids.map(async tid => api.topics.bump(socket, { tid })));
|
|
};
|
|
};
|