-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathpopup.js
108 lines (90 loc) · 3.83 KB
/
popup.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
function getKeyFromStorage (key) {
// getKeyFromStorge: wrapper for chrome.storage.local.get(),
// return promise containing the value of provided key
return new Promise((resolve, _) => {
chrome.storage.local.get( key, result => resolve(result[key]) );
});
}
function changeCheckboxValue (element, val) {
// changeCheckboxValue: change the value of a checkbox and trigger the onchange event
element.checked = val;
element.dispatchEvent( new Event('change') );
}
/* level_input */
document.getElementById('level_input').onkeyup = (e) => {
const element = e.currentTarget;
getKeyFromStorage('triggerLevel').then(currentValue => {
if (element.value != '' && element.value != currentValue && e.key == 'Enter') {
chrome.storage.local.set({ triggerLevel: parseInt(element.value) });
alert(`Level set: ${element.value}%`);
}
});
updateSettings();
}
/* --- */
/* do_not_show_notification_again */
document.getElementById('do_not_show_notification_again').onchange = (e) => {
const element = e.currentTarget;
chrome.storage.local.set({ do_not_show_notification_again: element.checked });
}
/* --- */
/* warning */
document.getElementById('warning').onchange = (e) => {
const element = e.currentTarget,
enable_warning_level_container = document.getElementById('enable_warning_level_container'),
enable_warning_level_checkbox = document.getElementById('enable_warning_level');
if (element.checked) {
enable_warning_level_container.style.visibility = 'visible';
chrome.storage.local.set({ warning: true });
} else {
changeCheckboxValue(enable_warning_level_checkbox, false);
enable_warning_level_container.style.visibility = 'hidden';
chrome.storage.local.set({ warning: false });
}
updateSettings();
}
/* --- */
/* enable_warning_level */
document.getElementById('enable_warning_level').onchange = (e) => {
const element = e.currentTarget,
warning_level_input_container = document.getElementById('warning_level_input_container');
if (element.checked) {
warning_level_input_container.style.visibility = 'visible';
} else {
warning_level_input_container.style.visibility = 'hidden';
}
}
/* --- */
/* warning_level_input */
document.getElementById('warning_level_input').onkeyup = (e) => {
const element = e.currentTarget;
getKeyFromStorage('warning_triggerLevel').then(currentValue => {
if (element.value != '' && element.value != currentValue && e.key == 'Enter') {
chrome.storage.local.set({ warning_triggerLevel: parseInt(element.value) });
updateSettings();
alert(`Level set: ${element.value}%`);
}
});
}
/* --- */
// save value in textbox elements when the textbox lost focus
[ 'level_input', 'warning_level_input' ].forEach(id => {
const element = document.getElementById(id);
element.onblur = () => {
element.dispatchEvent( new KeyboardEvent('keyup', { key: 'Enter' }) );
}
});
async function updateSettings (init) {
// updateSettings: Update infomation on the top of popup, restore checkbox value if init == true
const triggerLevel = await getKeyFromStorage('triggerLevel'),
warning_triggerLevel = await getKeyFromStorage('warning_triggerLevel');
document.getElementById('currentSettings').innerText =
`Configured battery level: ${triggerLevel ? `${triggerLevel}%` : 'not set'}\n` +
`Configured battery level (fullscreen warning): ${warning_triggerLevel ? `${warning_triggerLevel}%` : 'not set'}\n`
if (init) {
changeCheckboxValue( document.getElementById('do_not_show_notification_again'), await getKeyFromStorage('do_not_show_notification_again') );
changeCheckboxValue( document.getElementById('enable_warning_level'), await getKeyFromStorage('warning_triggerLevel') );
changeCheckboxValue( document.getElementById('warning'), await getKeyFromStorage('warning') );
}
}
updateSettings(true);