react-native-background-geolocation
Version:
The most sophisticated cross-platform background location-tracking & geofencing module with battery-conscious motion-detection intelligence
90 lines (73 loc) • 2.36 kB
JavaScript
import { NativeModules } from "react-native"
const { RNBackgroundGeolocation } = NativeModules;
const LOG_LEVEL_DEBUG = "debug";
const LOG_LEVEL_NOTICE = "notice";
const LOG_LEVEL_INFO = "info";
const LOG_LEVEL_WARN = "warn";
const LOG_LEVEL_ERROR = "error";
const ORDER_ASC = 1;
const ORDER_DESC = -1;
function log(level, msg) {
RNBackgroundGeolocation.log(level, msg);
}
function validateQuery(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;
}
export default class Logger {
static get ORDER_ASC() { return ORDER_ASC; }
static get ORDER_DESC() { return ORDER_DESC; }
static debug(msg) {
log(LOG_LEVEL_DEBUG, msg);
}
static error(msg) {
log(LOG_LEVEL_ERROR, msg);
}
static warn(msg) {
log(LOG_LEVEL_WARN, msg);
}
static info(msg) {
log(LOG_LEVEL_INFO, msg);
}
static notice(msg) {
log(LOG_LEVEL_NOTICE, msg);
}
static getLog(query) {
query = validateQuery(query);
return new Promise((resolve, reject) => {
let success = (log) => { resolve(log) }
let failure = (error) => { reject(error) }
RNBackgroundGeolocation.getLog(query, success, failure);
});
}
static emailLog(email, query) {
query = validateQuery(query);
return new Promise((resolve, reject) => {
let success = (success) => { resolve(success) }
let failure = (error) => { reject(error) }
RNBackgroundGeolocation.emailLog(email, query, success, failure);
});
}
static uploadLog(url, query) {
query = validateQuery(query);
return new Promise((resolve, reject) => {
let success = (success) => { resolve(success) }
let failure = (error) => { reject(error) }
RNBackgroundGeolocation.uploadLog(url, query, success, failure);
});
}
static destroyLog() {
return new Promise((resolve, reject) => {
let success = (success) => { resolve(success) }
let failure = (error) => { reject(error) }
RNBackgroundGeolocation.destroyLog(success, failure);
});
}
}
;