cordova-background-geolocation-lt
Version:
Cordova / Capacitor Background Geolocation. The most sophisticated, cross-platform location-tracking and geofencing plugin with battery-conscious motion-detection intelligence.
85 lines (73 loc) • 2.42 kB
JavaScript
var MODULE_NAME = "BackgroundGeolocation";
var exec = require("cordova/exec");
var LOG_LEVEL_DEBUG = "debug";
var LOG_LEVEL_NOTICE = "notice";
var LOG_LEVEL_INFO = "info";
var LOG_LEVEL_WARN = "warn";
var LOG_LEVEL_ERROR = "error";
var ORDER_ASC = 1;
var ORDER_DESC = -1;
var emptyFn = function() {};
var log = function(level, message) {
exec(emptyFn, emptyFn, MODULE_NAME, 'log', [level, message]);
}
var validateQuery = function(query) {
if (typeof(query) !== 'object') return {};
if (query.hasOwnProperty('start') && isNaN(query.start)) {
throw new Error('Invalid SQLQuery.start. Expected unix timestamp but received: ' + query.start);
}
if (query.hasOwnProperty('end') && isNaN(query.end)) {
throw new Error('Invalid SQLQuery.end. Expected unix timestamp but received: ' + query.end);
}
return query;
}
module.exports = {
ORDER_ASC: ORDER_ASC,
ORDER_DESC: ORDER_DESC,
error: function(msg) {
log(LOG_LEVEL_ERROR, msg);
},
warn: function(msg) {
log(LOG_LEVEL_WARN, msg);
},
debug: function(msg) {
log(LOG_LEVEL_DEBUG, msg);
},
info: function(msg) {
log(LOG_LEVEL_INFO, msg);
},
notice: function(msg) {
log(LOG_LEVEL_NOTICE, msg);
},
getLog: function(query) {
query = validateQuery(query);
return new Promise(function(resolve, reject) {
var success = function(log) { resolve(log) }
var failure = function(error) { reject(error) };
exec(success, failure, MODULE_NAME, 'getLog', [query]);
});
},
emailLog: function(email, query) {
query = validateQuery(query);
return new Promise(function(resolve, reject) {
var success = function(success) { resolve(success) }
var failure = function(error) { reject(error) };
exec(success, failure, MODULE_NAME, 'emailLog', [email, query]);
});
},
uploadLog: function(url, query) {
query = validateQuery(query);
return new Promise(function(resolve, reject) {
var success = function(success) { resolve(success) }
var failure = function(error) { reject(error) };
exec(success, failure, MODULE_NAME, 'uploadLog', [url, query]);
});
},
destroyLog: function() {
return new Promise(function(resolve, reject) {
var success = function(success) { resolve(success) }
var failure = function(error) { reject(error) };
exec(success, failure, MODULE_NAME, 'destroyLog', []);
});
}
}