Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
88 lines
1.9 KiB
JavaScript
Executable file
88 lines
1.9 KiB
JavaScript
Executable file
'use strict';
|
|
/* global eme */
|
|
/* global Promise */
|
|
|
|
(function(exports) {
|
|
|
|
const mozSettings = navigator.mozSettings;
|
|
|
|
const DEBUG = true;
|
|
|
|
var initPromise = null;
|
|
var slice = Function.call.bind(Array.prototype.slice);
|
|
|
|
exports.eme = {
|
|
config: {
|
|
apiUrl: null
|
|
},
|
|
|
|
init: function init() {
|
|
if (initPromise) {
|
|
return initPromise;
|
|
}
|
|
|
|
initPromise = this.readSettings()
|
|
.then(
|
|
function success(settings) {
|
|
// config overrides
|
|
if (settings['appsearch.url']) {
|
|
this.config.apiUrl = settings['appsearch.url'];
|
|
}
|
|
|
|
// wait for device init
|
|
return this.device.init(settings);
|
|
}.bind(this),
|
|
|
|
function error(e) {
|
|
eme.log('fatal error accessing device settings', e);
|
|
}
|
|
|
|
).catch(function(e) {
|
|
eme.log('init failed', e);
|
|
});
|
|
|
|
// avoid multiple init calls
|
|
this.init = function noop() {
|
|
eme.log('init: noop');
|
|
return initPromise;
|
|
};
|
|
|
|
return initPromise;
|
|
},
|
|
|
|
readSettings: function readSettings() {
|
|
return new Promise(function ready(resolve, reject) {
|
|
var lock = mozSettings.createLock();
|
|
var request = lock.get('*');
|
|
|
|
request.onsuccess = function onsuccess() {
|
|
resolve(request.result);
|
|
};
|
|
request.onerror = function onerror() {
|
|
reject(request.error);
|
|
};
|
|
|
|
}.bind(this));
|
|
},
|
|
|
|
log: function log() {
|
|
if (DEBUG) {
|
|
var args = slice(arguments);
|
|
args.unshift('evme');
|
|
console.log.apply(console, args);
|
|
}
|
|
},
|
|
warn: function warn() {
|
|
var args = slice(arguments);
|
|
args.unshift('evme', 'WARNING');
|
|
console.warn.apply(console, args);
|
|
},
|
|
error: function error() {
|
|
var args = slice(arguments);
|
|
args.unshift('evme', 'ERROR');
|
|
console.error.apply(console, args);
|
|
}
|
|
|
|
};
|
|
|
|
})(window);
|