Skip to content

Commit 57a91d3

Browse files
committed
Refactor popup.js: Implement auto-save and config management
- Add auto-save functionality for toggle settings - Create helper functions for config retrieval and saving - Simplify save button event listener - Improve code modularity and readability
1 parent f67663e commit 57a91d3

File tree

1 file changed

+36
-14
lines changed

1 file changed

+36
-14
lines changed

popup.js

Lines changed: 36 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,18 @@ document.addEventListener('DOMContentLoaded', () => {
1919
updateThemeIcon(theme);
2020
});
2121

22-
// Save settings
23-
document.getElementById('save_btn').addEventListener('click', () => {
24-
const config = {
25-
background: document.getElementById('background').checked ? 'enabled' : 'disabled',
26-
flag: document.getElementById('flag').checked ? 'enabled' : 'disabled',
27-
favicon: document.getElementById('favicon').checked ? 'enabled' : 'disabled'
28-
};
22+
// Auto save on toggle changes
23+
['background', 'flag', 'favicon'].forEach(id => {
24+
document.getElementById(id).addEventListener('change', async () => {
25+
const config = await getCurrentConfig();
26+
config[id] = document.getElementById(id).checked ? 'enabled' : 'disabled';
27+
saveConfig(config);
28+
});
29+
});
30+
31+
// Save account info
32+
document.getElementById('save_btn').addEventListener('click', async () => {
33+
const config = await getCurrentConfig();
2934

3035
try {
3136
const info = document.getElementById('info_area').value.trim();
@@ -37,13 +42,7 @@ document.addEventListener('DOMContentLoaded', () => {
3742
return;
3843
}
3944

40-
chrome.storage.local.set({ config }, () => {
41-
const btn = document.getElementById('save_btn');
42-
btn.innerHTML = '<i class="fa-solid fa-check"></i> Saved';
43-
setTimeout(() => {
44-
btn.innerHTML = '<i class="fa-solid fa-floppy-disk"></i> Save';
45-
}, 1000);
46-
});
45+
saveConfig(config, true);
4746
});
4847

4948
// Theme toggle
@@ -57,6 +56,7 @@ document.addEventListener('DOMContentLoaded', () => {
5756
});
5857
});
5958

59+
// Theme toggle
6060
function updateThemeIcon(theme) {
6161
const icon = document.querySelector('.theme-toggle i');
6262
if (theme === 'dark') {
@@ -65,3 +65,25 @@ function updateThemeIcon(theme) {
6565
icon.className = 'fa-solid fa-sun';
6666
}
6767
}
68+
69+
// Helper function to get current config
70+
function getCurrentConfig() {
71+
return new Promise(resolve => {
72+
chrome.storage.local.get('config', (c) => {
73+
resolve(c.config !== undefined ? c.config : {});
74+
});
75+
});
76+
}
77+
78+
// Helper function to save config
79+
function saveConfig(config, showSaveMessage = false) {
80+
chrome.storage.local.set({ config }, () => {
81+
if (showSaveMessage) {
82+
const btn = document.getElementById('save_btn');
83+
btn.innerHTML = '<i class="fa-solid fa-check"></i> Saved';
84+
setTimeout(() => {
85+
btn.innerHTML = '<i class="fa-solid fa-floppy-disk"></i> Save';
86+
}, 1000);
87+
}
88+
});
89+
}

0 commit comments

Comments
 (0)