-
Notifications
You must be signed in to change notification settings - Fork 271
/
Copy pathoptions.js
114 lines (111 loc) · 2.51 KB
/
options.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
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
102
103
104
105
106
107
108
109
110
111
112
113
114
(function() {
// lol that these are duplicated in the polymer element
var options = {
port: {
name: "Port",
type: Number,
default: 8887
},
optAllInterfaces: {
type: Boolean,
default: false
},
optDoPortMapping: {
type: Boolean,
default: false
},
optIPV6: {
type: Boolean,
default: false
},
optCORS: {
type: Boolean,
default: false
},
optVerbose: {
type: Boolean,
default: false
},
optStatic: {
type: Boolean,
default: false
},
optTryOtherPorts: {
type: Boolean,
default: false
},
optRetryInterfaces: {
type: Boolean,
visible: false,
default: true
},
optPreventSleep: {
type: Boolean,
default: false
},
optBackground: {
type: Boolean,
default: false
},
optAutoStart: {
type: Boolean,
default: false
},
optRenderIndex: {
type: Boolean,
default: true
},
optUpload: {
type: Boolean,
default: false
},
optModRewriteEnable: {
type: Boolean,
default: false
},
optModRewriteRegexp: {
type: String,
default: ".*\\.[\\d\\w]+$" // looks like a file extension
},
optModRewriteNegate: {
type: Boolean,
default: true
},
optModRewriteTo: {
type: String,
default: '/index.html'
}
}
function Options(callback) {
this.meta = options
this.options = null
chrome.storage.local.get(null, function(d) {
this.options = d
// update options with default options
callback()
}.bind(this))
}
Options.prototype = {
get: function(k) {
if (this.options[k] !== undefined) return this.options[k]
return this.meta[k].default
},
getAll: function() {
var d = {}
Object.assign(d, this.options)
for (var key in this.meta) {
if (d[key] === undefined && this.meta[key].default !== undefined) {
d[key] = this.meta[key].default
}
}
return d
},
set: function(k,v) {
this.options[k] = v
var d = {}
d[k] = v
chrome.storage.local.set(d, function(){})
}
}
window.AppOptions = Options
})()