-
Notifications
You must be signed in to change notification settings - Fork 0
/
App.js
123 lines (117 loc) · 2.96 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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import React, {useEffect, useState} from 'react';
import {Pressable, View, Text, TextInput, StyleSheet} from 'react-native';
import firestore from '@react-native-firebase/firestore';
import auth from '@react-native-firebase/auth';
import {Login, Messages} from './components';
const styles = StyleSheet.create({
header: {
flex: 1,
backgroundColor: '#f5f5f5',
borderBottomWidth: 0.5,
borderBottomColor: '#808080',
alignItems: 'center',
justifyContent: 'space-around',
flexDirection: 'row',
},
main: {
marginHorizontal: 20,
},
});
export const App = () => {
const [text, setText] = useState('');
const [user, setUser] = useState();
useEffect(() => {
const subscriber = auth().onAuthStateChanged(
(onAuthStateChanged = user => {
setUser(user);
}),
);
return subscriber;
}, []);
const signOut = () => {
auth().signOut();
};
const onSend = () => {
try {
firestore().collection('messages').add({
userId: user.uid,
userPhone: user.phoneNumber,
createdAt: new Date().getMinutes(),
text,
});
} catch (error) {
console.log(error);
}
setText('');
};
return user ? (
<View style={{flex: 1}}>
<View style={styles.header}>
<View style={{alignItems: 'center', paddingTop: 30}}>
<Text>User:</Text>
<Text
style={{
fontWeight: '600',
fontSize: 16,
// marginBottom: 15,
}}>
{user.phoneNumber.slice(-8)}
</Text>
</View>
<Pressable onPress={signOut}>
<Text
style={{
paddingTop: 30,
fontWeight: 'bold',
fontSize: 16,
left: 40,
color: '#4169E1',
// marginBottom: 25,
}}>
Sign out
</Text>
</Pressable>
</View>
<View style={[{flex: 7}, styles.main]}>
<Messages />
<View
style={{
height: 70,
flexDirection: 'row',
justifyContent: 'space-around',
paddingTop: 10,
}}>
<TextInput
placeholder="Message..."
onChangeText={value => setText(value)}
clearButtonMode="always"
value={text}
style={{
flex: 5,
padding: 8,
height: 30,
backgroundColor: '#f5f5f5',
borderRadius: 8,
}}
/>
<Pressable onPress={onSend} style={{flex: 1}}>
<Text
style={{
fontWeight: 'bold',
fontSize: 16,
paddingLeft: 15,
paddingVertical: 5,
// marginLeft: ,
color: '#4169E1',
}}>
Send
</Text>
</Pressable>
</View>
</View>
</View>
) : (
<Login />
);
};
export default App;