-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathApp.js
70 lines (64 loc) · 1.81 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
import React, { useState, useEffect } from "react";
import { StyleSheet, View } from "react-native";
//firebase
import db from "./firebase";
import * as firebase from "firebase";
import Header from "./components/Header";
import MessagesList from "./components/MessagesList";
import AddMessageForm from "./components/AddMessageForm";
import SignInForm from "./components/SignInForm";
export default function App() {
const [username, setUsername] = useState("");
const [tempUsername, setTempUsername] = useState("");
const [message, setMessage] = useState("");
const [messages, setMessages] = useState([]);
//add message to db
const addMessage = () => {
if (message === "") return;
db.collection("messages").add({
message,
username,
timestamp: firebase.firestore.FieldValue.serverTimestamp(),
});
setMessage("");
};
useEffect(() => {
setupMessagesListener();
}, []);
//subscribe to messages collection for changes and etec
const setupMessagesListener = () => {
db.collection("messages")
.orderBy("timestamp", "desc")
.onSnapshot((querySnapshot) => {
let arr = [];
querySnapshot.forEach((doc) => arr.push(doc.data()));
setMessages(arr);
});
};
if (username === "")
return (
<SignInForm
setTempUsername={setTempUsername}
tempUsername={tempUsername}
setUsername={setUsername}
/>
);
else
return (
<View style={styles.container}>
<Header username={username} />
<MessagesList messages={messages} username={username} />
<AddMessageForm
setMessage={setMessage}
addMessage={addMessage}
message={message}
/>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: "center",
},
});