-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathApp.js
92 lines (81 loc) · 2.25 KB
/
App.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
import { StatusBar } from "expo-status-bar";
import {
StyleSheet,
Text,
View,
Button,
Alert,
SafeAreaView,
} from "react-native";
import * as ImagePicker from "expo-image-picker";
import { listFiles, uploadToFirebase } from "./firebase-config";
import { useState, useEffect } from "react";
import MyFilesList from "./MyList";
export default function App() {
const [permission, requestPermission] = ImagePicker.useCameraPermissions();
const [files, setFiles] = useState([]);
useEffect(() => {
listFiles().then((listResp) => {
const files = listResp.map((value) => {
return { name: value.fullPath };
});
setFiles(files);
});
}, []);
console.log(files);
/**
*
*/
const takePhoto = async () => {
try {
const cameraResp = await ImagePicker.launchCameraAsync({
allowsEditing: true,
mediaTypes: ImagePicker.MediaTypeOptions.All,
quality: 1,
});
if (!cameraResp.canceled) {
const { uri } = cameraResp.assets[0];
const fileName = uri.split("/").pop();
const uploadResp = await uploadToFirebase(uri, fileName, (v) =>
console.log(v)
);
console.log(uploadResp);
listFiles().then((listResp) => {
const files = listResp.map((value) => {
return { name: value.fullPath };
});
setFiles(files);
});
}
} catch (e) {
Alert.alert("Error Uploading Image " + e.message);
}
};
// permission check
if (permission?.status !== ImagePicker.PermissionStatus.GRANTED) {
return (
<View style={styles.container}>
<Text>Permission Not Granted - {permission?.status}</Text>
<StatusBar style="auto" />
<Button title="Request Permission" onPress={requestPermission}></Button>
</View>
);
}
// main UI
return (
<SafeAreaView style={styles.container}>
<View style={styles.container}>
<Text>Working With Firebase and Image Picker</Text>
<MyFilesList files={files} />
<StatusBar style="auto" />
<Button title="Take Picture" onPress={takePhoto}></Button>
</View>
</SafeAreaView>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: "#fff",
},
});