]> git.wh0rd.org - chrome-ext/tabs-backup.git/blobdiff - options.js
makedist: delete manifest key
[chrome-ext/tabs-backup.git] / options.js
index 26d6d1ce1941024ff02f4d426c97a5d6517118ab..a565f214b13f78b30cf40d854a5e565d32ea0ea6 100644 (file)
@@ -4,6 +4,10 @@ document.addEventListener('DOMContentLoaded', function () {
        document.querySelector('#saveBtn').addEventListener('click', saveOptions);
        document.querySelector('#restoreDefaultBtn').addEventListener('click', restoreToDefault);
 
+       ['light', 'system', 'dark'].forEach((theme) => {
+               document.getElementById(`theme-${theme}`).addEventListener('click', setThemeClick);
+       });
+
        //document.querySelector('body').addEventListener('click', restoreOptions);
 });
 
@@ -25,15 +29,39 @@ function setSelectValue (selectId, value) {
        }
 }
 
-function saveOptions () {
-       var backupPeriodMinutes = getSelectValue("prefsSelectBackupPeriod");
-       localStorage.prefsBackupTimer = backupPeriodMinutes;
+function setThemeClick() {
+       const theme = this.textContent.toLowerCase();
+       setThemeValue(theme);
+       switchTheme(theme);
+}
 
-       var backupMaxItems = getSelectValue("prefsSelectMaxBackups");
-       localStorage.prefsMaxBackupItems = backupMaxItems;
+function setThemeValue(value) {
+       const element = document.getElementById('prefsTheme');
+       switch (value) {
+               case 'light':
+               case 'dark':
+                       break;
+               default:
+                       value = 'system';
+                       break;
+       }
+       element.value = value;
+
+       ['light', 'system', 'dark'].forEach((theme) => {
+               document.getElementById(`theme-${theme}`).className =
+                       value == theme ? 'selected' : '';
+       });
+}
+
+function saveOptions () {
+       chrome.storage.local.set({
+               prefs_backup_timer: parseInt(getSelectValue("prefsSelectBackupPeriod")),
+               prefs_max_backup_items: parseInt(getSelectValue("prefsSelectMaxBackups")),
+               prefs_theme: document.getElementById('prefsTheme').value,
+       });
 
        // Re-initialize the backup alarm
-       chrome.runtime.getBackgroundPage((bg) => bg.initAlarm());
+       chrome.runtime.sendMessage({action: 'initAlarm'});
 
        // Update status to let user know options were saved.
        var status = document.getElementById("statusDiv");
@@ -47,14 +75,15 @@ function restoreToDefault() {
        // those values are also set in background.js..
        setSelectValue ("prefsSelectBackupPeriod", "5");
        setSelectValue ("prefsSelectMaxBackups", "30");
+       setThemeValue("system");
 
        saveOptions();
 }
 
 function restoreOptions() {
-       var backupPeriodMinutes = localStorage.prefsBackupTimer;
-       var backupMaxItems = localStorage.prefsMaxBackupItems;
-
-       setSelectValue ("prefsSelectBackupPeriod", backupPeriodMinutes);
-       setSelectValue ("prefsSelectMaxBackups", backupMaxItems);
+       chrome.storage.local.get(function(items) {
+               setSelectValue("prefsSelectBackupPeriod", items.prefs_backup_timer);
+               setSelectValue("prefsSelectMaxBackups", items.prefs_max_backup_items);
+               setThemeValue(items.prefs_theme);
+       });
 }