-
Notifications
You must be signed in to change notification settings - Fork 64
Expand file tree
/
Copy pathPreferences.js
More file actions
101 lines (92 loc) · 4.45 KB
/
Preferences.js
File metadata and controls
101 lines (92 loc) · 4.45 KB
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
94
95
96
97
98
99
100
101
/*
* Copyright (c) 2014 Massachusetts Institute of Technology, Adobe Systems
* Incorporated, and other contributors. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
*/
/*jslint vars: true, plusplus: true, devel: true, nomen: true, indent: 4, maxerr: 50 */
/*global define, brackets, $ */
define(function (require, exports, module) {
"use strict";
var _ = brackets.getModule("thirdparty/lodash"),
PreferencesManager = brackets.getModule("preferences/PreferencesManager"),
prefs = PreferencesManager.getExtensionPrefs("theseus"),
stateManager = PreferencesManager.stateManager.getPrefixedSystem("theseus");
var preferences = {
prefs: {
// main.js
"enabled": { "type": "boolean", "value": true },
"mode": { "type": "string", "value": "static" }
},
states: {
// Usage.js
"usage.user_id": { "type": "string", "value": null },
"usage.last_agreement_shown": { "type": "number", "value": -1 },
"usage.usage_reporting_approved": { "type": "boolean", "value": false },
"usage.research_contact_approved": { "type": "boolean", "value": false },
"usage.research_contact_email": { "type": "string", "value": null },
// Update.js
"update.update_ignored": { "type": "boolean", "value": false },
"update.last_ignored_version": { "type": "string", "value": null },
"update.last_checked_at": { "type": "number", "value": 0 }
}
};
PreferencesManager.convertPreferences("com.adobe.theseus", { // main.js
"enabled": "user theseus.enabled",
"mode": "user theseus.mode"
});
PreferencesManager.convertPreferences("com.adobe.theseus.usage-reporting", { // Usage.js
"user_id": "user theseus.usage.user_id",
"last_agreement_shown": "user theseus.usage.last_agreement_shown",
"usage_reporting_approved": "user theseus.usage.usage_reporting_approved",
"research_contact_approved": "user theseus.usage.research_contact_approved",
"research_contact_email": "user theseus.usage.research_contact_email"
}, true);
PreferencesManager.convertPreferences("com.adobe.theseus.update", { // Update.js
"update_ignored": "theseus.update.update_ignored",
"last_ignored_version": "theseus.update.last_ignored_version",
"last_checked_at": "theseus.update.last_checked_at"
}, true);
_.each(preferences.prefs, function (definition, key) {
prefs.definePreference(key, definition.type, definition.value)
.on("change", function () {
$(exports).triggerHandler("change." + key);
});
});
_.each(preferences.states, function (definition, key) {
stateManager.definePreference(key, definition.type, definition.value);
});
prefs.save();
function _getPrefLocation(key) {
return preferences.prefs[key] ? prefs : stateManager;
}
function set(key, value, save) {
var location = _getPrefLocation(key);
location.set(key, value);
if (save) {
location.save();
}
}
function get(key) {
return _getPrefLocation(key).get(key);
}
exports.set = set;
exports.get = get;
});