-
Notifications
You must be signed in to change notification settings - Fork 120
/
index.js
96 lines (78 loc) · 1.99 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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import React, { Component } from 'react';
import { NativeModules, DeviceEventEmitter, TouchableHighlight, Text, Platform } from 'react-native'
const RNAccountKitNative = NativeModules.RNAccountKit
class RNAccountKit {
static configDefaults = {
responseType: 'token',
titleType: 'login',
initialAuthState: '',
facebookNotificationsEnabled: true,
readPhoneStateEnabled: true,
receiveSMS: true,
SMSBlacklist: [],
SMSWhitelist: []
};
constructor() {
this.configure()
}
configure(options) {
const configOptions = {
...options,
...RNAccountKit.configDefaults
}
return RNAccountKitNative.configure(configOptions)
}
loginWithPhone() {
return RNAccountKitNative.login('phone')
}
loginWithEmail() {
return RNAccountKitNative.login('email')
}
getCurrentAccount() {
return RNAccountKitNative.getCurrentAccount()
}
getCurrentAccessToken() {
return RNAccountKitNative.getCurrentAccessToken()
}
logout() {
return RNAccountKitNative.logout()
}
}
const AccountKit = new RNAccountKit()
export class LoginButton extends Component {
static propTypes = {
type: React.PropTypes.string,
onLogin: React.PropTypes.func.isRequired,
onError: React.PropTypes.func.isRequired,
onCancel: React.PropTypes.func
};
static defaultProps = {
type: 'phone'
};
onPress() {
const login = this.props.type.toLowerCase() == 'email' ?
AccountKit.loginWithEmail : AccountKit.loginWithPhone
login()
.then((data) => {
this.props.onLogin(data)
})
.catch((err) => {
if (err.code == 'cancel') {
this.props.onCancel && this.props.onCancel(err)
} else {
this.props.onError(err)
}
})
}
constructor(props) {
super(props)
}
render() {
return (
<TouchableHighlight style={this.props.style} onPress={() => { this.onPress() }}>
{this.props.children}
</TouchableHighlight>
)
}
}
export default AccountKit