-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
72 lines (61 loc) · 1.96 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
66
67
68
69
70
71
72
import { NativeModules } from 'react-native'
import { NativeAppEventEmitter } from 'react-native'
const { RNUberSSO } = NativeModules
const uber = {}
const eventsMap = {}
uber.initSdk = (options, successCallback, errorCallback) => {
console.log(
'react-native-uber-sso initSdk onSSOUberSSOAccessToken is set?',
!!eventsMap['onSSOUberSSOAccessToken']
)
// options.isDebug = eventsMap['isDebug']
// ? true
// : false
return RNUberSSO.initSdk(options, successCallback, errorCallback)
}
uber.login = () => {
console.log('react-native-uber-sso login')
return RNUberSSO.login()
}
/**
* Accessing Uber Attribution / Conversion Data from the SDK (Deferred Deeplinking)
* @param callback: contains fields:
* status: success/failure
* type:
* onSSOUberSSOAccessToken
* data: metadata,
* @example {"status":"success","type":"onSSOUberSSOAccessToken","data":"accessToken"}
*
* @returns {remove: function - unregister listener}
*/
uber.onSSOUberSSOAccessToken = callback => {
console.log('onSSOUberSSOAccessToken is called')
const listener = NativeAppEventEmitter.addListener(
'onSSOUberSSOAccessToken',
_data => {
if (callback && typeof callback === typeof Function) {
try {
let data = JSON.parse(_data)
console.log('onSSOUberSSOAccessToken with data', data)
callback(data)
} catch (_error) {
//throw new UberParseJSONException("...");
//TODO: for today we return an error in callback
//callback(new UberParseJSONException('Invalid data structure', _data))
callback(null)
}
}
}
)
eventsMap['onSSOUberSSOAccessToken'] = listener
// unregister listener (suppose should be called from componentWillUnmount() )
return function remove() {
listener.remove()
}
}
function UberParseJSONException(_message, _data) {
this.message = _message
this.data = _data
this.name = 'UberParseJSONException'
}
export default uber