-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathHomeScreen.js
78 lines (68 loc) · 1.79 KB
/
HomeScreen.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 * as Permissions from 'expo-permissions';
import { Camera } from 'expo-camera';
import { StyleSheet, Text, View, TouchableOpacity, Dimensions } from 'react-native';
import CaptureButton from 'client/components/CaptureButton';
class HomeScreen extends React.PureComponent {
static navigationOptions = {
title: 'Scan Document',
headerStyle: {
backgroundColor: '#0003C7',
},
headerTintColor: '#fff',
headerTitleStyle: {
fontWeight: 'bold',
},
};
constructor(props) {
super(props);
this.state = {
hasCameraPermission: null,
type: Camera.Constants.Type.back
}
}
async componentDidMount() {
const { status } = await Permissions.askAsync(Permissions.CAMERA);
this.setState({
hasCameraPermission: status === 'granted'
});
}
snap = async() => {
if(this.camera) {
let photo = await this.camera.takePictureAsync({ base64: true});
this.props.navigation.navigate('Confirmation', {photo});
}
}
render() {
const { hasCameraPermission } = this.state;
if (hasCameraPermission === null) {
return <View />;
} else if (hasCameraPermission === false) {
return <Text>No access to camera</Text>;
} else {
return (
<View style={styles.container }>
<Camera
style={styles.camera}
type={this.state.type}
ref = {ref => {
this.camera = ref;
}}
>
</Camera>
<CaptureButton snap={this.snap} />
</View>
);
}
}
}
const styles = StyleSheet.create({
container: {
backgroundColor: '#fff',
},
camera: {
width:Dimensions.get('window').width,
height: Dimensions.get('window').width * 4 / 3,
},
});
export default HomeScreen