2020-06-05 01:08:09 +02:00
|
|
|
import Geolocation from '@react-native-community/geolocation';
|
|
|
|
|
2020-11-07 17:59:37 +02:00
|
|
|
const Setting = require('@joplin/lib/models/Setting').default;
|
2017-07-17 22:22:05 +02:00
|
|
|
|
2017-06-24 20:06:28 +02:00
|
|
|
class GeolocationReact {
|
2017-05-22 22:22:50 +02:00
|
|
|
static currentPosition_testResponse() {
|
|
|
|
return {
|
|
|
|
mocked: false,
|
2019-07-29 15:43:53 +02:00
|
|
|
timestamp: new Date().getTime(),
|
2017-05-22 22:22:50 +02:00
|
|
|
coords: {
|
|
|
|
speed: 0,
|
|
|
|
heading: 0,
|
|
|
|
accuracy: 20,
|
|
|
|
longitude: -3.4596633911132812,
|
|
|
|
altitude: 0,
|
2019-07-29 15:43:53 +02:00
|
|
|
latitude: 48.73219093634444,
|
|
|
|
},
|
|
|
|
};
|
2017-05-22 22:22:50 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
static currentPosition(options = null) {
|
2017-07-17 22:22:05 +02:00
|
|
|
if (Setting.value('env') == 'dev') return this.currentPosition_testResponse();
|
|
|
|
|
2017-05-22 22:22:50 +02:00
|
|
|
if (!options) options = {};
|
|
|
|
if (!('enableHighAccuracy' in options)) options.enableHighAccuracy = true;
|
|
|
|
if (!('timeout' in options)) options.timeout = 10000;
|
|
|
|
|
|
|
|
return new Promise((resolve, reject) => {
|
2020-06-05 01:08:09 +02:00
|
|
|
Geolocation.getCurrentPosition(
|
2020-05-21 10:14:33 +02:00
|
|
|
data => {
|
2019-07-29 15:43:53 +02:00
|
|
|
resolve(data);
|
|
|
|
},
|
2020-05-21 10:14:33 +02:00
|
|
|
error => {
|
2019-07-29 15:43:53 +02:00
|
|
|
reject(error);
|
|
|
|
},
|
|
|
|
options
|
|
|
|
);
|
2017-05-22 22:22:50 +02:00
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-07-29 15:43:53 +02:00
|
|
|
module.exports = { GeolocationReact };
|