-
Notifications
You must be signed in to change notification settings - Fork 1
/
Scanner.js
78 lines (75 loc) · 2.03 KB
/
Scanner.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
import React from 'react';
import {
AppRegistry,
Text,
View,
Button,
AsyncStorage,
StyleSheet,
AlertIOS
} from 'react-native';
import {getPublicKey} from './api';
const RSAKey = require('react-native-rsa');
import Camera from 'react-native-camera';
export default class Scanner extends React.Component {
static navigationOptions = {
title: 'Scanner',
};
constructor() {
super();
this.state = {isShowingAlert: false}
this.onBarCodeRead = this.onBarCodeRead.bind(this);
}
onDecode(encrypted) {
getPublicKey("John", (response) => {
console.log(response);
AsyncStorage.getItem("@RSAKeyStore:private_key", (err, result) => {
rsa = new RSAKey();
rsa.setPublicString(response.data.public);
rsa.setPrivateString(result);
const decrypted = rsa.decrypt(encrypted);
AlertIOS.alert(
"QR Found",
decrypted,
() => {this.setState({isShowingAlert: false})}
);
});
});
}
onBarCodeRead(barcode) {
if(!this.state.isShowingAlert) {
this.onDecode(barcode.data);
this.setState({isShowingAlert: true});
}
}
render() {
const { navigate } = this.props.navigation;
return (
<View style={styles.container}>
<Camera
ref={(cam) => {
this.camera = cam;
}}
style={styles.preview}
onBarCodeRead={this.onBarCodeRead}
aspect={Camera.constants.Aspect.fill}>
</Camera>
<Button
onPress ={() => navigate('Encrypt')}
title="Create a QR Code"
/>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
flexDirection: 'column',
},
preview: {
flex: 1,
justifyContent: 'flex-end',
alignItems: 'center'
},
});