@@ -21,7 +21,7 @@ var defaultSettings = {
2121 "language" : "auto" ,
2222 "nightmode" : "false" ,
2323 "previews.enabled" : "auto" ,
24- "stats.enabled" : "true" ,
24+ "stats.enabled" : "true"
2525} ;
2626
2727firetext . settings . init = function ( ) {
@@ -34,6 +34,17 @@ firetext.settings.init = function () {
3434 var nightmodeSelect = document . querySelector ( '#nightmode-select' ) ;
3535 var previewsSelect = document . querySelector ( '#previews-select' ) ;
3636 var statsEnabled = document . querySelector ( '#stats-enabled-switch' ) ;
37+
38+ // Save version
39+ if ( ! firetext . settings . get ( "lastVersion" ) ) {
40+ // Either first run or update from 0.4-
41+ firetext . settings . save ( "lastVersion" , version ) ;
42+
43+ // If 0.4-, purge defaults for certain settings
44+ if ( firetext . settings . get ( "autosave" , true ) != undefined ) {
45+ purgeOldSettings ( "0.4" ) ;
46+ }
47+ }
3748
3849 // Autoload
3950 switch ( firetext . settings . get ( 'autoload' ) ) {
@@ -143,14 +154,8 @@ firetext.settings.init = function () {
143154
144155 // Previews
145156 switch ( firetext . settings . get ( 'previews.enabled' ) ) {
146- case "false" :
147157 case "never" :
148158 previewsSelect . value = '0' ;
149-
150- // Fix old value
151- if ( firetext . settings . get ( 'previews.enabled' ) == 'false' ) {
152- firetext . settings . save ( 'previews.enabled' , 'never' ) ;
153- }
154159 break ;
155160 case "always" :
156161 previewsSelect . value = '1' ;
@@ -200,9 +205,9 @@ firetext.settings.init = function () {
200205 }
201206} ;
202207
203- firetext . settings . get = function ( name ) {
208+ firetext . settings . get = function ( name , forceTrueValue ) {
204209 var localStorageItem = localStorage . getItem ( ( "firetext.settings." + name ) ) ;
205- if ( localStorageItem ) {
210+ if ( localStorageItem || forceTrueValue ) {
206211 return localStorageItem ;
207212 } else {
208213 return defaultSettings [ name ] ;
@@ -213,6 +218,44 @@ firetext.settings.save = function (name, value) {
213218 if ( bugsenseInitialized ) {
214219 Bugsense . leaveBreadcrumb ( "Setting: " + name + " set to: " + value ) ;
215220 }
216- name = ( "firetext.settings." + name ) ;
217- localStorage . setItem ( name , value ) ;
221+ if ( defaultSettings [ name ] == value . toString ( ) ) {
222+ firetext . settings . clear ( name ) ;
223+ } else {
224+ var localStorageName = ( "firetext.settings." + name ) ;
225+ localStorage . setItem ( localStorageName , value ) ;
226+ }
227+ } ;
228+
229+ firetext . settings . clear = function ( name ) {
230+ var localStorageName = ( "firetext.settings." + name ) ;
231+ localStorage . removeItem ( localStorageName ) ;
218232} ;
233+
234+ function purgeOldSettings ( version ) {
235+ switch ( version ) {
236+ case "0.4" :
237+ // Define old defaults
238+ var oldDefaults = {
239+ "autoload" : "false" ,
240+ "autosave" : "true" ,
241+ "dropbox.enabled" : "false" ,
242+ "nightmode" : "auto" ,
243+ "previews.enabled" : "true" ,
244+ "stats.enabled" : "true"
245+ } ;
246+
247+ // Reset defaults
248+ for ( var setting in oldDefaults ) {
249+ if ( firetext . settings . get ( setting , true ) == oldDefaults [ setting ] ) {
250+ firetext . settings . clear ( setting ) ;
251+ }
252+ }
253+
254+ // Reset old values
255+ if ( firetext . settings . get ( "previews.enabled" , true ) == "false" ) {
256+ firetext . settings . save ( "previews.enabled" , "never" ) ;
257+ }
258+
259+ break ;
260+ }
261+ }
0 commit comments