2018-02-16 16:41:06 -05:00
|
|
|
'use strict';
|
|
|
|
|
|
2019-09-09 19:19:56 -04:00
|
|
|
const posts = require('../../posts');
|
|
|
|
|
const privileges = require('../../privileges');
|
2018-02-16 16:41:06 -05:00
|
|
|
|
|
|
|
|
module.exports = function (SocketPosts) {
|
2019-09-09 19:19:56 -04:00
|
|
|
SocketPosts.getDiffs = async function (socket, data) {
|
|
|
|
|
await privilegeCheck(data.pid, socket.uid);
|
|
|
|
|
const timestamps = await posts.diffs.list(data.pid);
|
|
|
|
|
timestamps.unshift(Date.now());
|
|
|
|
|
return timestamps;
|
2018-02-16 16:41:06 -05:00
|
|
|
};
|
|
|
|
|
|
2019-09-09 19:19:56 -04:00
|
|
|
SocketPosts.showPostAt = async function (socket, data) {
|
|
|
|
|
await privilegeCheck(data.pid, socket.uid);
|
|
|
|
|
return await posts.diffs.load(data.pid, data.since, socket.uid);
|
2018-02-16 16:41:06 -05:00
|
|
|
};
|
2018-06-11 16:45:19 -04:00
|
|
|
|
2019-09-09 19:19:56 -04:00
|
|
|
async function privilegeCheck(pid, uid) {
|
|
|
|
|
const [deleted, privilegesData] = await Promise.all([
|
|
|
|
|
posts.getPostField(pid, 'deleted'),
|
|
|
|
|
privileges.posts.get([pid], uid),
|
|
|
|
|
]);
|
2018-06-11 16:45:19 -04:00
|
|
|
|
2019-09-09 19:19:56 -04:00
|
|
|
const allowed = privilegesData[0]['posts:history'] && (deleted ? privilegesData[0]['posts:view_deleted'] : true);
|
|
|
|
|
if (!allowed) {
|
|
|
|
|
throw new Error('[[error:no-privileges]]');
|
|
|
|
|
}
|
2018-06-11 16:45:19 -04:00
|
|
|
}
|
2018-02-16 16:41:06 -05:00
|
|
|
};
|