update settings object merging

This commit is contained in:
Georg Fischer
2016-01-13 17:09:54 +01:00
parent a6ba156c38
commit 9e04379d9c
2 changed files with 48 additions and 11 deletions
+17 -10
View File
@@ -70,6 +70,8 @@ define(
function save ( newSettings ) {
if ( useLocalForage ) {
newSettings = getValidSettings( newSettings );
if ( worker ) {
sendMessageToWorker( 'save', newSettings );
} else {
@@ -142,24 +144,29 @@ define(
if ( newSettings ) {
settings = newSettings || defaultSettings;
if ( settings !== defaultSettings ) {
for ( var name in defaultSettings ) {
if ( ! settings[name] ) {
settings[name] = defaultSettings[name];
}
if ( objectHelper.isEqual( getValidSettings( settings ), settings ) ) {
for ( var name in settings ) {
publishers.update.dispatch( name, settings[name].value, settings[name].options );
}
} else {
save( getValidSettings( settings ) );
}
for ( var name in settings ) {
publishers.update.dispatch( name, settings[name].value, settings[name].options );
}
} else {
settings = defaultSettings;
save( settings );
}
}
function getValidSettings ( settings ) {
if ( settings&& defaultSettings && settings !== defaultSettings ) {
settings = objectHelper.merge( settings, defaultSettings );
}
return settings;
}
self.getSetting = getSetting;
self.getSettingValue = getSettingValue;
self.getSettings = getSettings;