1
- import React , { Component } from 'react' ;
1
+ import React , { Component , useEffect , useState } from 'react' ;
2
2
import { Text , StyleSheet , View , FlatList , Image } from 'react-native' ;
3
3
import FontAwesome5 from 'react-native-vector-icons/FontAwesome5' ;
4
4
import moment from 'moment' ;
5
+ import firebase from 'firebase' ;
5
6
6
- posts = [
7
- {
8
- id : '1' ,
9
- name : 'Joe McKay' ,
10
- text :
11
- 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.' ,
12
- timestamp : 1569109273726 ,
13
- avatar : require ( '../assets/avatar/image1.png' ) ,
14
- image : require ( '../assets/onboarding/image1.gif' ) ,
15
- } ,
16
- {
17
- id : '2' ,
18
- name : 'Karyn Kim' ,
19
- text :
20
- 'Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.' ,
21
- timestamp : 1569109273726 ,
22
- avatar : require ( '../assets/avatar/image1.png' ) ,
23
- image : require ( '../assets/onboarding/image2.gif' ) ,
24
- } ,
25
- {
26
- id : '3' ,
27
- name : 'Emerson Parsons' ,
28
- text :
29
- 'Amet mattis vulputate enim nulla aliquet porttitor lacus luctus. Vel elit scelerisque mauris pellentesque pulvinar pellentesque habitant.' ,
30
- timestamp : 1569109273726 ,
31
- avatar : require ( '../assets/avatar/image1.png' ) ,
32
- image : require ( '../assets/onboarding/image3.gif' ) ,
33
- } ,
34
- {
35
- id : '4' ,
36
- name : 'Kathie Malone' ,
37
- text :
38
- 'At varius vel pharetra vel turpis nunc eget lorem. Lorem mollis aliquam ut porttitor leo a diam sollicitudin tempor. Adipiscing tristique risus nec feugiat in fermentum.' ,
39
- timestamp : 1569109273726 ,
40
- avatar : require ( '../assets/avatar/image1.png' ) ,
41
- image : require ( '../assets/onboarding/image1.gif' ) ,
42
- } ,
43
- ] ;
7
+ // posts = [
8
+ // {
9
+ // id: '1',
10
+ // name: 'Joe McKay',
11
+ // text:
12
+ // 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',
13
+ // timestamp: 1569109273726,
14
+ // avatar: require('../assets/avatar/image1.png'),
15
+ // image: require('../assets/onboarding/image1.gif'),
16
+ // },
17
+ // {
18
+ // id: '2',
19
+ // name: 'Karyn Kim',
20
+ // text:
21
+ // 'Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
22
+ // timestamp: 1569109273726,
23
+ // avatar: require('../assets/avatar/image1.png'),
24
+ // image: require('../assets/onboarding/image2.gif'),
25
+ // },
26
+ // {
27
+ // id: '3',
28
+ // name: 'Emerson Parsons',
29
+ // text:
30
+ // 'Amet mattis vulputate enim nulla aliquet porttitor lacus luctus. Vel elit scelerisque mauris pellentesque pulvinar pellentesque habitant.',
31
+ // timestamp: 1569109273726,
32
+ // avatar: require('../assets/avatar/image1.png'),
33
+ // image: require('../assets/onboarding/image3.gif'),
34
+ // },
35
+ // {
36
+ // id: '4',
37
+ // name: 'Kathie Malone',
38
+ // text:
39
+ // 'At varius vel pharetra vel turpis nunc eget lorem. Lorem mollis aliquam ut porttitor leo a diam sollicitudin tempor. Adipiscing tristique risus nec feugiat in fermentum.',
40
+ // timestamp: 1569109273726,
41
+ // avatar: require('../assets/avatar/image1.png'),
42
+ // image: require('../assets/onboarding/image1.gif'),
43
+ // },
44
+ // ];
45
+
46
+ export default function HomeScreen ( ) {
47
+ const [ posts , setPosts ] = useState ( [ ] ) ;
48
+ useEffect ( ( ) => {
49
+ firebase
50
+ . firestore ( )
51
+ . collection ( 'posts' )
52
+ . get ( )
53
+ . then ( snapshot => {
54
+ if ( snapshot . empty ) {
55
+ console . log ( 'No matching documents.' ) ;
56
+ return ;
57
+ }
58
+
59
+ // snapshot.forEach(doc => {
60
+ // console.log(doc.id, '=>', doc.data());
61
+ // return {...doc.id, ...doc.data()};
62
+ // });
63
+
64
+ var returnArray = [ ] ;
65
+
66
+ snapshot . forEach ( function ( doc ) {
67
+ let item = { } ;
68
+ item = doc . data ( ) ;
69
+ item . id = doc . id ;
70
+ item . avatar = require ( '../assets/avatar/image1.png' ) ;
71
+ returnArray . push ( item ) ;
72
+ } ) ;
73
+
74
+ // console.log(returnArray);
75
+
76
+ setPosts ( returnArray ) ;
77
+ } )
78
+ . catch ( err => {
79
+ console . log ( 'Error getting documents' , err ) ;
80
+ } ) ;
81
+ } ) ;
44
82
45
- export default class BirthdayScreen extends Component {
46
83
renderPost = post => {
47
84
return (
48
- < View style = { styles . feedItem } >
85
+ < View key = { post . id } style = { styles . feedItem } >
49
86
< Image source = { post . avatar } style = { styles . avatar } />
50
87
< View style = { { flex : 1 } } >
51
88
< View
@@ -55,7 +92,7 @@ export default class BirthdayScreen extends Component {
55
92
alignItems : 'center' ,
56
93
} } >
57
94
< View >
58
- < Text style = { styles . name } > { post . name } </ Text >
95
+ < Text style = { styles . name } > { post . uid } </ Text >
59
96
< Text style = { styles . timestamp } >
60
97
{ moment ( post . timestamp ) . fromNow ( ) }
61
98
</ Text >
@@ -65,7 +102,7 @@ export default class BirthdayScreen extends Component {
65
102
</ View >
66
103
< Text style = { styles . post } > { post . text } </ Text >
67
104
< Image
68
- source = { post . image }
105
+ source = { { uri : post . image } }
69
106
style = { styles . postImage }
70
107
resizeMode = "cover"
71
108
/>
@@ -83,22 +120,20 @@ export default class BirthdayScreen extends Component {
83
120
) ;
84
121
} ;
85
122
86
- render ( ) {
87
- return (
88
- < View style = { styles . container } >
89
- < View style = { styles . header } >
90
- < Text style = { styles . headerTitle } > Feed</ Text >
91
- </ View >
92
-
93
- < FlatList
94
- style = { styles . feed }
95
- data = { posts }
96
- renderItem = { ( { item} ) => this . renderPost ( item ) }
97
- keyExtractor = { item => item . id }
98
- showsVerticalScrollIndicator = { false } > </ FlatList >
123
+ return (
124
+ < View style = { styles . container } >
125
+ < View style = { styles . header } >
126
+ < Text style = { styles . headerTitle } > Feed</ Text >
99
127
</ View >
100
- ) ;
101
- }
128
+
129
+ < FlatList
130
+ style = { styles . feed }
131
+ data = { posts }
132
+ renderItem = { ( { item} ) => renderPost ( item ) }
133
+ keyExtractor = { item => item . id }
134
+ showsVerticalScrollIndicator = { false } > </ FlatList >
135
+ </ View >
136
+ ) ;
102
137
}
103
138
104
139
const styles = StyleSheet . create ( {
0 commit comments