]> git.wh0rd.org Git - chrome-ext/tabs-backup.git/blob - options.js
migrate from localStorage to chrome.storage.local
[chrome-ext/tabs-backup.git] / options.js
1
2 document.addEventListener('DOMContentLoaded', function () {
3         restoreOptions();
4         document.querySelector('#saveBtn').addEventListener('click', saveOptions);
5         document.querySelector('#restoreDefaultBtn').addEventListener('click', restoreToDefault);
6
7         ['light', 'system', 'dark'].forEach((theme) => {
8                 document.getElementById(`theme-${theme}`).addEventListener('click', setThemeClick);
9         });
10
11         //document.querySelector('body').addEventListener('click', restoreOptions);
12 });
13
14 function getSelectValue (selectId) {
15         var select = document.getElementById(selectId);
16         var value = select.children[select.selectedIndex].value;
17
18         return value;
19 }
20
21 function 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
32 function setThemeClick() {
33         const theme = this.textContent.toLowerCase();
34         setThemeValue(theme);
35         switchTheme(theme);
36 }
37
38 function 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
56 function saveOptions () {
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         });
62
63         // Re-initialize the backup alarm
64         chrome.runtime.getBackgroundPage((bg) => bg.initAlarm());
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
74 function restoreToDefault() {
75         // those values are also set in background.js..
76         setSelectValue ("prefsSelectBackupPeriod", "5");
77         setSelectValue ("prefsSelectMaxBackups", "30");
78         setThemeValue("system");
79
80         saveOptions();
81 }
82
83 function restoreOptions() {
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         });
89 }