@@ -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
6060function 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