/
sockets.js
56 lines (47 loc) · 1.7 KB
/
sockets.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
const privileges = require.main.require('./src/privileges');
const pluginSockets = require.main.require('./src/socket.io/plugins');
import { getAll as getAllResponses, submitResponse, getUserResponse } from './responses';
import { getEventsByDate, filterByPid, escapeEvent } from './event';
const perm = 'plugin-calendar:event:post';
pluginSockets.calendar = {};
pluginSockets.calendar.canPostEvent = ({ uid }, { pid, tid, cid }, cb) => {
if (!uid) {
cb(null, false);
return;
}
if (pid) {
privileges.posts.can(perm, pid, uid, cb);
return;
}
if (tid) {
privileges.topics.can(perm, tid, uid, cb);
return;
}
if (cid) {
privileges.categories.can(perm, cid, uid, cb);
return;
}
cb(null, false);
};
pluginSockets.calendar.getResponses = ({ uid }, pid, cb) => {
getAllResponses({ pid, uid }).asCallback(cb);
};
pluginSockets.calendar.submitResponse = ({ uid }, { pid, value }, cb) => {
submitResponse({ uid, pid, value }).asCallback(cb);
};
pluginSockets.calendar.getUserResponse = ({ uid }, pid, cb) => {
getUserResponse({ uid, pid }).asCallback(cb);
};
// pluginSockets.calendar.getCategoryColors = ({ uid }, cb) => (async () => {
// const cats = await getAllCategoryFields(['cid', 'bgColor']);
// const filtered = await filterCids('read', cats.map(c => c.cid), uid);
//
// return cats.filter(c => filtered.includes(c.cid));
// })().asCallback(cb);
pluginSockets.calendar.getEventsByDate = ({ uid }, { startDate, endDate }, cb) =>
(async () => {
const events = await getEventsByDate(startDate, endDate);
const filtered = await filterByPid(events, uid);
const escaped = await Promise.all(filtered.map(escapeEvent));
return escaped;
})().asCallback(cb);