]> git.wh0rd.org - chrome-ext/tabs-backup.git/blame - options.js
migrate from localStorage to chrome.storage.local
[chrome-ext/tabs-backup.git] / options.js
CommitLineData
70c1267e
MF
1
2document.addEventListener('DOMContentLoaded', function () {
3 restoreOptions();
4 document.querySelector('#saveBtn').addEventListener('click', saveOptions);
5 document.querySelector('#restoreDefaultBtn').addEventListener('click', restoreToDefault);
6
68553004
MF
7 ['light', 'system', 'dark'].forEach((theme) => {
8 document.getElementById(`theme-${theme}`).addEventListener('click', setThemeClick);
9 });
10
70c1267e
MF
11 //document.querySelector('body').addEventListener('click', restoreOptions);
12});
13
14function getSelectValue (selectId) {
15 var select = document.getElementById(selectId);
16 var value = select.children[select.selectedIndex].value;
17
18 return value;
19}
20
21function setSelectValue (selectId, value) {
22 var select = document.getElementById(selectId);
23 for (var i = 0; i < select.children.length; i++) {
24 var child = select.children[i];
25 if (child.value == value) {
26 child.selected = "true";
27 break;
28 }
29 }
30}
31
68553004
MF
32function setThemeClick() {
33 const theme = this.textContent.toLowerCase();
34 setThemeValue(theme);
35 switchTheme(theme);
36}
37
38function setThemeValue(value) {
39 const element = document.getElementById('prefsTheme');
40 switch (value) {
41 case 'light':
42 case 'dark':
43 break;
44 default:
45 value = 'system';
46 break;
47 }
48 element.value = value;
49
50 ['light', 'system', 'dark'].forEach((theme) => {
51 document.getElementById(`theme-${theme}`).className =
52 value == theme ? 'selected' : '';
53 });
54}
55
70c1267e 56function saveOptions () {
d9e77fbf
MF
57 chrome.storage.local.set({
58 prefs_backup_timer: getSelectValue("prefsSelectBackupPeriod"),
59 prefs_max_backup_items: getSelectValue("prefsSelectMaxBackups"),
60 prefs_theme: document.getElementById('prefsTheme').value,
61 });
68553004 62
70c1267e 63 // Re-initialize the backup alarm
e0b6a877 64 chrome.runtime.getBackgroundPage((bg) => bg.initAlarm());
70c1267e
MF
65
66 // Update status to let user know options were saved.
67 var status = document.getElementById("statusDiv");
68 status.innerHTML = "Options Saved";
69 setTimeout(function() {
70 status.innerHTML = "";
71 }, 3000);
72}
73
74function restoreToDefault() {
75 // those values are also set in background.js..
76 setSelectValue ("prefsSelectBackupPeriod", "5");
77 setSelectValue ("prefsSelectMaxBackups", "30");
68553004 78 setThemeValue("system");
70c1267e
MF
79
80 saveOptions();
81}
82
83function restoreOptions() {
d9e77fbf
MF
84 chrome.storage.local.get(function(items) {
85 setSelectValue("prefsSelectBackupPeriod", items.prefs_backup_timer);
86 setSelectValue("prefsSelectMaxBackups", items.prefs_max_backup_items);
87 setThemeValue(items.prefs_theme);
88 });
70c1267e 89}