1 | "use strict";
|
2 |
|
3 | var parser = require("./parser/main");
|
4 | var plugins = require("./plugins");
|
5 | var settings = require("./settings");
|
6 | var setsCtrl = require("./sets/controller");
|
7 |
|
8 |
|
9 |
|
10 | module.exports.init = function () {
|
11 | initUserSockets(require.main.require("./src/socket.io/plugins"));
|
12 | initAdminSockets(require.main.require("./src/socket.io/admin"));
|
13 | };
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 | function 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 |
|
34 | function 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 |
|
46 |
|
47 |
|
48 |
|
49 | function 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 |
|
59 | function syncSettings(ignore, ignored, cb) {
|
60 | settings.sync(cb);
|
61 | }
|
62 |
|
63 | function settingsDefaults(ignore, ignored, cb) {
|
64 | cb(null, settings.createDefaultWrapper());
|
65 | }
|
66 |
|
67 |
|
68 |
|
69 | function 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 |
|
85 | function 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 |
|
98 | function 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 | }
|