@@ -30,8 +30,8 @@ const settings = (() => {
3030 el . append ( `<option value="${ v } "${ current === v ? ' selected' : '' } >${ v } </option>` ) ;
3131 } ) ;
3232 } else if ( setting . type === 'remove' ) {
33- // TODO "remove" type
34- el = $ ( `<input type="checkbox" disabled>` ) ;
33+ el = $ ( `<input type="checkbox">` )
34+ . prop ( 'checked' , true ) ;
3535 } else { // How to handle.
3636 return null ;
3737 }
@@ -74,6 +74,7 @@ const settings = (() => {
7474 if ( ! data ) return false ;
7575 const page = data . page || 'main' ;
7676 const setting = {
77+ page,
7778 key : data . key || data ,
7879 name : data . name || setting . key ,
7980 type : data . type || 'boolean' ,
@@ -96,6 +97,9 @@ const settings = (() => {
9697 else val = false ;
9798 } else if ( setting . type === 'select' ) {
9899 val = el . val ( ) ;
100+ } else if ( setting . type === 'remove' ) {
101+ val = false ;
102+ removeSetting ( setting , el ) ;
99103 } else {
100104 debug ( `Unknown Setting Type: ${ setting . type } ` ) ;
101105 return ;
@@ -104,6 +108,7 @@ const settings = (() => {
104108 data . onChange ( val , localStorage . getItem ( setting . key ) ) ;
105109 }
106110 if ( val === false ) {
111+ console . log ( 'removing key' , setting . key ) ;
107112 localStorage . removeItem ( setting . key ) ;
108113 } else {
109114 localStorage . setItem ( setting . key , val ) ;
@@ -177,10 +182,10 @@ const settings = (() => {
177182 return val || getDefault ( setting ) ;
178183 }
179184
180- function getDefault ( setting ) {
185+ function getDefault ( setting = { } ) {
181186 if ( setting . default ) {
182187 if ( setting . type === 'boolean' ) {
183- return setting . default === '1' || setting . default === true ;
188+ return ! ! setting . default ;
184189 }
185190 return setting . default ;
186191 } else if ( setting . type === 'select' ) {
@@ -189,8 +194,26 @@ const settings = (() => {
189194 return null ;
190195 }
191196
197+ function remove ( key ) {
198+ const setting = settingReg [ key ] ;
199+ if ( ! setting ) return ;
200+ removeSetting ( setting , $ ( `[id='${ key } ']` ) ) ;
201+ }
202+
203+ function removeSetting ( setting , el ) {
204+ const { key, page } = setting ;
205+ localStorage . removeItem ( key ) ;
206+ // Remove references
207+ delete configs [ page ] . settings [ key ] ;
208+ delete settingReg [ key ] ;
209+ // If we're on the setting screen, remove the setting
210+ if ( el ) {
211+ el . parent ( ) . remove ( ) ;
212+ }
213+ }
214+
192215 return {
193- open, close, setDisplayName, isOpen, value,
216+ open, close, setDisplayName, isOpen, value, remove ,
194217 register : add ,
195218 } ;
196219} ) ( ) ;
0 commit comments