-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathoptions.js
More file actions
88 lines (80 loc) · 2.69 KB
/
Copy pathoptions.js
File metadata and controls
88 lines (80 loc) · 2.69 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
const defaultUserAgent = 'Edge 79';
const availableUserAgents = {
'Edge 17': 'Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134',
'Edge 75': 'Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3760.0 Safari/537.36 Edg/75.0.125.0',
'Edge 79': 'Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.74 Safari/537.36 Edg/79.0.309.43',
'Chrome 79': 'Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36',
'Custom': '',
};
const userAgentElement = document.getElementById('useragent');
const availableUserAgentsElement = document.getElementById('available_useragents');
/**
* read user agent from local storage
*/
function loadUserAgent() {
browser.storage.local.get({
'userAgent': availableUserAgents[defaultUserAgent],
'userAgentType': defaultUserAgent
}).then(
(item) => {
userAgentElement.value = item.userAgent;
populateAvailableUserAgents(item.userAgentType);
},
() => {
userAgentElement.value = availableUserAgents[defaultUserAgent];
populateAvailableUserAgents();
}
);
}
/**
* save user agent to localstorage
*/
function saveUserAgent() {
const uaObject = {
userAgent: userAgentElement.value,
userAgentType: availableUserAgentsElement.selectedOptions[0].text,
};
browser.storage.local.set(uaObject).then(null, () => {
alert('Unable to save user agent to storage');
});
}
/**
* populate available user agents to select element
*/
function populateAvailableUserAgents(currentUserAgent = null) {
if (!currentUserAgent) {
currentUserAgent = defaultUserAgent;
}
Object.entries(availableUserAgents)
.forEach(([name, value]) => {
const option = document.createElement('option');
option.value = value;
option.text = name;
if (name === currentUserAgent) {
option.selected = 'selected';
}
availableUserAgentsElement.appendChild(option);
});
userAgentElement.disabled = currentUserAgent === 'Custom' ? false : "disabled";
}
/**
* handler to change user agent
*/
function changeUserAgent() {
const current = availableUserAgentsElement.selectedOptions[0];
if (current.text === 'Custom') {
userAgentElement.disabled = false;
} else {
userAgentElement.disabled = "disabled";
userAgentElement.value = current.value;
}
}
// register event handlers
userAgentElement.addEventListener('keyup', saveUserAgent);
userAgentElement.addEventListener('change', saveUserAgent);
availableUserAgentsElement.addEventListener('change', () => {
changeUserAgent();
saveUserAgent();
});
// initialize
loadUserAgent();