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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
import AbstractController from '@js/Controller/AbstractController';
import SettingsService from '@js/Services/SettingsService';
import ServerRepository from '@js/Repositories/ServerRepository';
import ThemeRepository from '@js/Repositories/ThemeRepository';
export default class Set extends AbstractController {
constructor() {
super();
this._booleanSettings = [
'paste.popup.close',
'paste.form.submit',
'paste.compromised.warning',
'paste.autofill',
'popup.related.search',
'notification.password.new',
'notification.password.update',
'debug.localisation.enabled'
];
}
/**
*
* @param {Message} message
* @param {Message} reply
* @return {Promise<void>}
*/
async execute(message, reply) {
let {setting, value} = message.getPayload();
try {
if(setting === 'theme.custom') {
await SettingsService.set(setting, value);
} else if(setting === 'server.default') {
await this._setDefaultServer(value);
} else if(setting === 'theme.current') {
await this._setCurrentTheme(value);
} else if(this._booleanSettings.indexOf(setting) !== -1) {
await this._setBoolean(setting, value);
} else {
reply.setPayload(
{
success: false,
message: 'Unknown setting'
}
);
return;
}
reply.setPayload({success: true});
} catch(e) {
reply.setPayload(
{
success: false,
message: e.message
}
);
}
}
/**
*
* @param {String} value
* @return {Promise<void>}
* @private
*/
async _setDefaultServer(value) {
await ServerRepository.findById(value);
await SettingsService.set('server.default', value);
}
/**
*
* @param {String} value
* @return {Promise<void>}
* @private
*/
async _setCurrentTheme(value) {
await ThemeRepository.findById(value);
await SettingsService.set('theme.current', value);
}
/**
*
* @param {String} setting
* @param {Boolean} value
* @return {Promise<void>}
* @private
*/
async _setBoolean(setting, value) {
await SettingsService.set(setting, value === true);
}
}
|