File tree 9 files changed +49
-89
lines changed 9 files changed +49
-89
lines changed Original file line number Diff line number Diff line change @@ -69,7 +69,7 @@ class Firebase {
69
69
70
70
// default empty roles
71
71
if ( ! dbUser . roles ) {
72
- dbUser . roles = [ ] ;
72
+ dbUser . roles = { } ;
73
73
}
74
74
75
75
// merge auth and db user
Original file line number Diff line number Diff line change @@ -28,7 +28,7 @@ class MessageItem extends Component {
28
28
} ;
29
29
30
30
render ( ) {
31
- const { message, onRemoveMessage } = this . props ;
31
+ const { authUser , message, onRemoveMessage } = this . props ;
32
32
const { editMode, editText } = this . state ;
33
33
34
34
return (
@@ -41,29 +41,31 @@ class MessageItem extends Component {
41
41
/>
42
42
) : (
43
43
< span >
44
- < strong >
45
- { message . user . username || message . user . userId }
46
- </ strong > { ' ' }
47
- { message . text } { message . editedAt && < span > (Edited)</ span > }
44
+ < strong > { message . userId } </ strong > { message . text }
45
+ { message . editedAt && < span > (Edited)</ span > }
48
46
</ span >
49
47
) }
50
48
51
- { editMode ? (
49
+ { authUser . uid === message . userId && (
52
50
< span >
53
- < button onClick = { this . onSaveEditText } > Save</ button >
54
- < button onClick = { this . onToggleEditMode } > Reset</ button >
55
- </ span >
56
- ) : (
57
- < button onClick = { this . onToggleEditMode } > Edit</ button >
58
- ) }
51
+ { editMode ? (
52
+ < span >
53
+ < button onClick = { this . onSaveEditText } > Save</ button >
54
+ < button onClick = { this . onToggleEditMode } > Reset</ button >
55
+ </ span >
56
+ ) : (
57
+ < button onClick = { this . onToggleEditMode } > Edit</ button >
58
+ ) }
59
59
60
- { ! editMode && (
61
- < button
62
- type = "button"
63
- onClick = { ( ) => onRemoveMessage ( message . uid ) }
64
- >
65
- Delete
66
- </ button >
60
+ { ! editMode && (
61
+ < button
62
+ type = "button"
63
+ onClick = { ( ) => onRemoveMessage ( message . uid ) }
64
+ >
65
+ Delete
66
+ </ button >
67
+ ) }
68
+ </ span >
67
69
) }
68
70
</ li >
69
71
) ;
Original file line number Diff line number Diff line change @@ -3,13 +3,15 @@ import React from 'react';
3
3
import MessageItem from './MessageItem' ;
4
4
5
5
const MessageList = ( {
6
+ authUser,
6
7
messages,
7
8
onEditMessage,
8
9
onRemoveMessage,
9
10
} ) => (
10
11
< ul >
11
12
{ messages . map ( message => (
12
13
< MessageItem
14
+ authUser = { authUser }
13
15
key = { message . uid }
14
16
message = { message }
15
17
onEditMessage = { onEditMessage }
Original file line number Diff line number Diff line change @@ -81,8 +81,10 @@ class Messages extends Component {
81
81
} ;
82
82
83
83
onEditMessage = ( message , text ) => {
84
+ const { uid, ...messageSnapshot } = message ;
85
+
84
86
this . props . firebase . message ( message . uid ) . set ( {
85
- ...message ,
87
+ ...messageSnapshot ,
86
88
text,
87
89
editedAt : this . props . firebase . serverValue . TIMESTAMP ,
88
90
} ) ;
@@ -100,30 +102,24 @@ class Messages extends Component {
100
102
} ;
101
103
102
104
render ( ) {
103
- const { users } = this . props ;
104
105
const { text, messages, loading } = this . state ;
105
106
106
107
return (
107
108
< AuthUserContext . Consumer >
108
109
{ authUser => (
109
110
< div >
110
- { ! loading &&
111
- messages && (
112
- < button type = "button" onClick = { this . onNextPage } >
113
- More
114
- </ button >
115
- ) }
111
+ { ! loading && messages && (
112
+ < button type = "button" onClick = { this . onNextPage } >
113
+ More
114
+ </ button >
115
+ ) }
116
116
117
117
{ loading && < div > Loading ...</ div > }
118
118
119
119
{ messages && (
120
120
< MessageList
121
- messages = { messages . map ( message => ( {
122
- ...message ,
123
- user : users
124
- ? users [ message . userId ]
125
- : { userId : message . userId } ,
126
- } ) ) }
121
+ authUser = { authUser }
122
+ messages = { messages }
127
123
onEditMessage = { this . onEditMessage }
128
124
onRemoveMessage = { this . onRemoveMessage }
129
125
/>
Original file line number Diff line number Diff line change @@ -29,7 +29,7 @@ const NavigationAuth = ({ authUser }) => (
29
29
< li >
30
30
< Link to = { ROUTES . ACCOUNT } > Account</ Link >
31
31
</ li >
32
- { authUser . roles . includes ( ROLES . ADMIN ) && (
32
+ { ! ! authUser . roles [ ROLES . ADMIN ] && (
33
33
< li >
34
34
< Link to = { ROUTES . ADMIN } > Admin</ Link >
35
35
</ li >
Original file line number Diff line number Diff line change @@ -93,7 +93,7 @@ class SignInGoogleBase extends Component {
93
93
return this . props . firebase . user ( socialAuthUser . user . uid ) . set ( {
94
94
username : socialAuthUser . user . displayName ,
95
95
email : socialAuthUser . user . email ,
96
- roles : [ ] ,
96
+ roles : { } ,
97
97
} ) ;
98
98
} )
99
99
. then ( ( ) => {
@@ -139,7 +139,7 @@ class SignInFacebookBase extends Component {
139
139
return this . props . firebase . user ( socialAuthUser . user . uid ) . set ( {
140
140
username : socialAuthUser . additionalUserInfo . profile . name ,
141
141
email : socialAuthUser . additionalUserInfo . profile . email ,
142
- roles : [ ] ,
142
+ roles : { } ,
143
143
} ) ;
144
144
} )
145
145
. then ( ( ) => {
@@ -185,7 +185,7 @@ class SignInTwitterBase extends Component {
185
185
return this . props . firebase . user ( socialAuthUser . user . uid ) . set ( {
186
186
username : socialAuthUser . additionalUserInfo . profile . name ,
187
187
email : socialAuthUser . additionalUserInfo . profile . email ,
188
- roles : [ ] ,
188
+ roles : { } ,
189
189
} ) ;
190
190
} )
191
191
. then ( ( ) => {
Original file line number Diff line number Diff line change @@ -33,10 +33,10 @@ class SignUpFormBase extends Component {
33
33
34
34
onSubmit = event => {
35
35
const { username, email, passwordOne, isAdmin } = this . state ;
36
- const roles = [ ] ;
36
+ const roles = { } ;
37
37
38
38
if ( isAdmin ) {
39
- roles . push ( ROLES . ADMIN ) ;
39
+ roles [ ROLES . ADMIN ] = ROLES . ADMIN ;
40
40
}
41
41
42
42
this . props . firebase
Original file line number Diff line number Diff line change @@ -19,7 +19,7 @@ const AdminPageBase = () => (
19
19
) ;
20
20
21
21
const condition = authUser =>
22
- authUser && authUser . roles . includes ( ROLES . ADMIN ) ;
22
+ authUser && ! ! authUser . roles [ ROLES . ADMIN ] ;
23
23
24
24
const AdminPage = compose (
25
25
withEmailVerification ,
Original file line number Diff line number Diff line change 1
- import React , { Component , Fragment } from 'react' ;
1
+ import React from 'react' ;
2
2
import { compose } from 'recompose' ;
3
3
4
4
import Layout from '../components/layout' ;
5
5
import {
6
6
withAuthorization ,
7
7
withEmailVerification ,
8
8
} from '../components/Session' ;
9
- import { withFirebase } from '../components/Firebase' ;
10
9
import Messages from '../components/Messages' ;
11
10
12
- class HomePageBase extends Component {
13
- _initFirebase = false ;
11
+ const HomePageBase = ( ) => (
12
+ < div >
13
+ < h1 > Home Page</ h1 >
14
+ < p > The Home Page is accessible by every signed in user.</ p >
14
15
15
- constructor ( props ) {
16
- super ( props ) ;
17
-
18
- this . state = {
19
- users : null ,
20
- } ;
21
- }
22
-
23
- firebaseInit = ( ) => {
24
- if ( this . props . firebase && ! this . _initFirebase ) {
25
- this . _initFirebase = true ;
26
-
27
- this . props . firebase . users ( ) . on ( 'value' , snapshot => {
28
- this . setState ( {
29
- users : snapshot . val ( ) ,
30
- } ) ;
31
- } ) ;
32
- }
33
- } ;
34
-
35
- componentDidMount ( ) {
36
- this . firebaseInit ( ) ;
37
- }
38
-
39
- componentDidUpdate ( ) {
40
- this . firebaseInit ( ) ;
41
- }
42
-
43
- componentWillUnmount ( ) {
44
- this . props . firebase . users ( ) . off ( ) ;
45
- }
46
-
47
- render ( ) {
48
- return (
49
- < Fragment >
50
- < h1 > Home Page</ h1 >
51
- < p > The Home Page is accessible by every signed in user.</ p >
52
-
53
- < Messages users = { this . state . users } />
54
- </ Fragment >
55
- ) ;
56
- }
57
- }
16
+ < Messages />
17
+ </ div >
18
+ ) ;
58
19
59
20
const condition = authUser => ! ! authUser ;
60
21
61
22
const HomePage = compose (
62
- withFirebase ,
63
23
withEmailVerification ,
64
24
withAuthorization ( condition ) ,
65
25
) ( HomePageBase ) ;
You can’t perform that action at this time.
0 commit comments