forked from neuberoliveira/react-native-gps-state
-
Notifications
You must be signed in to change notification settings - Fork 2
/
index.js
65 lines (54 loc) · 1.33 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
'use strict'
const {NativeModules, NativeEventEmitter, Platform} = require('react-native');
const {GPSState} = NativeModules;
const gpsStateEmitter = new NativeEventEmitter(GPSState);
var subscription = null;
var listener = null;
const isDroid = Platform.OS=='android';
const isIOS = Platform.OS=='ios';
subscription = gpsStateEmitter.addListener('OnStatusChange', (response)=>{
if(listener){
var status = null;
if(isIOS){
status = response;
}else{
status = response.status;
}
if(status)
listener.apply(this, [status]);
}
});
GPSState.addListener = (callback)=>{
if(typeof callback == 'function'){
listener = callback;
GPSState._startListen();
}
}
GPSState.removeListener = (callback)=>{
if(subscription){
GPSState._stopListen();
subscription.remove();
subscription = null;
}
}
GPSState.getStatus = ()=>{
return GPSState._getStatus();
}
GPSState.openSettings = ()=>{
GPSState._openSettings();
}
GPSState.requestAuthorization = (authType)=>{
if(isIOS){
var type = parseInt(authType);
var min = GPSState.STATUS_NOT_DETERMINED;
var max = GPSState.STATUS_AUTHORIZED_WHENINUSE;
var inRange = (type>=min && type <= max);
if(isNaN(type) || !inRange){
type = GPSState.AUTHORIZED_WHENINUSE;
}
GPSState._requestAuthorization(type);
}else{
GPSState._requestAuthorization();
}
}
module.exports = GPSState;