forked from hCaptcha/react-native-hcaptcha
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
111 lines (105 loc) · 2.81 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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import React, { PureComponent } from 'react';
import { SafeAreaView, StyleSheet, Dimensions, Platform } from 'react-native';
import Modal from 'react-native-modal';
import Hcaptcha from './Hcaptcha';
import PropTypes from 'prop-types';
const { width, height } = Dimensions.get('window');
class ConfirmHcaptcha extends PureComponent {
state = {
show: false,
};
show = () => {
this.setState({ show: true });
};
hide = () => {
const { onMessage } = this.props;
this.setState({ show: false });
// In android on hardware back , emits 'cancel' which can be used to hide hCaptcha modal using ref
if (Platform.OS === "android") {
onMessage({ nativeEvent: { data: 'cancel' } });
}
};
render() {
let { show } = this.state;
let {
siteKey,
passiveSiteKey,
baseUrl,
languageCode,
onMessage,
cancelButtonText,
showLoading,
backgroundColor,
loadingIndicatorColor,
theme,
rqdata,
} = this.props;
return (
<Modal
useNativeDriver
hideModalContentWhileAnimating
deviceHeight={height}
deviceWidth={width}
style={[styles.modal, {display: passiveSiteKey ? 'none' : undefined}]}
animationIn="fadeIn"
animationOut="fadeOut"
onBackdropPress={this.hide}
onBackButtonPress={this.hide}
isVisible={show}
hasBackdrop={!passiveSiteKey}
>
<SafeAreaView style={[styles.wrapper, { backgroundColor }]}>
<Hcaptcha
url={baseUrl}
siteKey={siteKey}
onMessage={onMessage}
languageCode={languageCode}
cancelButtonText={cancelButtonText}
showLoading={showLoading}
loadingIndicatorColor={loadingIndicatorColor}
backgroundColor={backgroundColor}
theme={theme}
rqdata={rqdata}
/>
</SafeAreaView>
</Modal>
);
}
}
const styles = StyleSheet.create({
text: {
fontSize: 15,
fontWeight: 'bold',
color: '#fff',
textAlign: 'center',
marginTop: 10,
},
modal: { margin: 0, display: 'none' },
wrapper: {
flex: 1,
justifyContent: 'center',
overflow: 'hidden',
},
});
ConfirmHcaptcha.propTypes = {
siteKey: PropTypes.string.isRequired,
passiveSiteKey: PropTypes.bool,
baseUrl: PropTypes.string,
onMessage: PropTypes.func,
languageCode: PropTypes.string,
cancelButtonText: PropTypes.string,
backgroundColor: PropTypes.string,
showLoading: PropTypes.bool,
loadingIndicatorColor: PropTypes.string,
theme: PropTypes.string,
rqdata: PropTypes.string,
};
ConfirmHcaptcha.defaultProps = {
passiveSiteKey: false,
showLoading: false,
backgroundColor: 'rgba(0, 0, 0, 0.3)',
loadingIndicatorColor: null,
theme: 'light',
rqdata: null,
};
export default ConfirmHcaptcha;