UNPKG

2.99 kBJavaScriptView Raw
1"use strict";
2
3var parser = require("./parser/main");
4var plugins = require("./plugins");
5var settings = require("./settings");
6var setsCtrl = require("./sets/controller");
7
8/*===================================================== Exports =====================================================*/
9
10module.exports.init = function () {
11 initUserSockets(require.main.require("./src/socket.io/plugins"));
12 initAdminSockets(require.main.require("./src/socket.io/admin"));
13};
14
15/*==================================================== Functions ====================================================*/
16
17/*-------------------------------------------------- Initialization --------------------------------------------------*/
18
19function initUserSockets(Socket) {
20 Socket[settings.iD] = {
21 settings: getSettings,
22 emojiList: function emojiList(ignore, ignored, cb) {
23 cb(null, parser.activeList);
24 },
25 styles: function styles(ignore, ignored, cb) {
26 cb(null, setsCtrl.styles.main);
27 },
28 parserPlugin: function parserPlugin(ignore, ignored, cb) {
29 cb(null, plugins.getParserPluginId());
30 }
31 };
32}
33
34function initAdminSockets(Socket) {
35 Socket.settings["sync" + settings.Id] = syncSettings;
36 Socket.settings["get" + settings.Id + "Defaults"] = settingsDefaults;
37
38 Socket[settings.iD] = {
39 activateSets: activateSets,
40 updateSet: updateSet,
41 purgeSet: purgeSet
42 };
43}
44
45/*-------------------------------------------------- Socket Handler --------------------------------------------------*/
46
47// settings
48
49function getSettings(ignore, ignored, cb) {
50 cb(null, {
51 completion: settings.get("completion"),
52 classes: settings.emojiClasses,
53 legal: parser.activeLegal,
54 sets: setsCtrl.getActiveIds().length,
55 urls: setsCtrl.getActiveURLs()
56 });
57}
58
59function syncSettings(ignore, ignored, cb) {
60 settings.sync(cb);
61}
62
63function settingsDefaults(ignore, ignored, cb) {
64 cb(null, settings.createDefaultWrapper());
65}
66
67// set management
68
69function activateSets(ignore, setIds, cb) {
70 if (!(setIds instanceof Array)) {
71 return cb("Argument has to be an Array.");
72 }
73 setsCtrl.setActive(setIds).done(function () {
74 parser.refresh();
75 settings.setSettings.set("active", setsCtrl.getActiveIds());
76 settings.setSettings.persist(function (err) {
77 if (err != null) {
78 return cb(err);
79 }
80 cb(null, setsCtrl.getActiveIds());
81 });
82 });
83}
84
85function updateSet(ignore, id, cb) {
86 var instance = setsCtrl.getSetById(id);
87 if (instance == null) {
88 return cb("Set not found.");
89 }
90 instance.update().done(function () {
91 if (setsCtrl.isActive(id)) {
92 parser.updateList();
93 }
94 cb(null, instance.isPrepared());
95 });
96}
97
98function purgeSet(ignore, id, cb) {
99 var instance = setsCtrl.getSetById(id);
100 if (instance == null) {
101 return cb("Set not found.");
102 }
103 if (setsCtrl.isActive(id)) {
104 return cb("Set is active.");
105 }
106 instance.purge().done(function () {
107 cb(null, instance.isPrepared());
108 }, cb);
109}