Skip to content

Commit

Permalink
Previously configured settings got overwritten by defaults [Fixes kat…
Browse files Browse the repository at this point in the history
  • Loading branch information
katzer committed Feb 10, 2017
1 parent 0f94708 commit 5fdfb98
Showing 1 changed file with 20 additions and 7 deletions.
27 changes: 20 additions & 7 deletions www/background-mode.js
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,15 @@ exports.getDefaults = function () {
return this._defaults;
};

/**
* The actual applied settings.
*
* @return [ Object ]
*/
exports.getSettings = function () {
return this._settings || {};
};

/**
* Overwrite the default settings.
*
Expand Down Expand Up @@ -118,10 +127,15 @@ exports.setDefaults = function (overrides) {
* @return [ Void ]
*/
exports.configure = function (options) {
var settings = this.mergeWithDefaults(options);
var settings = this.getSettings(),
defaults = this.getDefaults();

this.mergeObjects(options, settings);
this.mergeObjects(options, defaults);
this._settings = options;

if (this._isAndroid) {
cordova.exec(null, null, 'BackgroundMode', 'configure', [settings, true]);
cordova.exec(null, null, 'BackgroundMode', 'configure', [options, true]);
}
};

Expand Down Expand Up @@ -348,15 +362,14 @@ exports.onfailure = function () {};
* Merge settings with default values.
*
* @param [ Object ] options The custom options.
* @param [ Object ] toMergeIn The options to merge in.
*
* @return [ Object ] Default values merged with custom values.
*/
exports.mergeWithDefaults = function (options) {
var defaults = this.getDefaults();

for (var key in defaults) {
exports.mergeObjects = function (options, toMergeIn) {
for (var key in toMergeIn) {
if (!options.hasOwnProperty(key)) {
options[key] = defaults[key];
options[key] = toMergeIn[key];
continue;
}
}
Expand Down

0 comments on commit 5fdfb98

Please sign in to comment.