File tree 9 files changed +45
-72
lines changed
9 files changed +45
-72
lines changed Original file line number Diff line number Diff line change @@ -20,7 +20,7 @@ const AdminPage = () => (
20
20
) ;
21
21
22
22
const condition = authUser =>
23
- authUser && authUser . roles . includes ( ROLES . ADMIN ) ;
23
+ authUser && ! ! authUser . roles [ ROLES . ADMIN ] ;
24
24
25
25
export default compose (
26
26
withEmailVerification ,
Original file line number Diff line number Diff line change @@ -73,7 +73,7 @@ class Firebase {
73
73
74
74
// default empty roles
75
75
if ( ! dbUser . roles ) {
76
- dbUser . roles = [ ] ;
76
+ dbUser . roles = { } ;
77
77
}
78
78
79
79
// merge auth and db user
Original file line number Diff line number Diff line change 1
- import React , { Component } from 'react' ;
2
- import { connect } from 'react-redux' ;
1
+ import React from 'react' ;
3
2
import { compose } from 'recompose' ;
4
3
5
4
import { withAuthorization , withEmailVerification } from '../Session' ;
6
- import { withFirebase } from '../Firebase' ;
7
5
import Messages from '../Messages' ;
8
6
9
- class HomePage extends Component {
10
- componentDidMount ( ) {
11
- this . props . firebase . users ( ) . on ( 'value' , snapshot => {
12
- this . props . onSetUsers ( snapshot . val ( ) ) ;
13
- } ) ;
14
- }
7
+ const HomePage = ( ) => (
8
+ < div >
9
+ < h1 > Home Page</ h1 >
10
+ < p > The Home Page is accessible by every signed in user.</ p >
15
11
16
- componentWillUnmount ( ) {
17
- this . props . firebase . users ( ) . off ( ) ;
18
- }
19
-
20
- render ( ) {
21
- return (
22
- < div >
23
- < h1 > Home Page</ h1 >
24
- < p > The Home Page is accessible by every signed in user.</ p >
25
-
26
- < Messages users = { this . props . users } />
27
- </ div >
28
- ) ;
29
- }
30
- }
31
-
32
- const mapStateToProps = state => ( {
33
- users : state . userState . users ,
34
- } ) ;
35
-
36
- const mapDispatchToProps = dispatch => ( {
37
- onSetUsers : users => dispatch ( { type : 'USERS_SET' , users } ) ,
38
- } ) ;
12
+ < Messages />
13
+ </ div >
14
+ ) ;
39
15
40
16
const condition = authUser => ! ! authUser ;
41
17
42
18
export default compose (
43
- withFirebase ,
44
- connect (
45
- mapStateToProps ,
46
- mapDispatchToProps ,
47
- ) ,
48
19
withEmailVerification ,
49
20
withAuthorization ( condition ) ,
50
21
) ( HomePage ) ;
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 @@ -62,8 +62,10 @@ class Messages extends Component {
62
62
} ;
63
63
64
64
onEditMessage = ( message , text ) => {
65
+ const { uid, ...messageSnapshot } = message ;
66
+
65
67
this . props . firebase . message ( message . uid ) . set ( {
66
- ...message ,
68
+ ...messageSnapshot ,
67
69
text,
68
70
editedAt : this . props . firebase . serverValue . TIMESTAMP ,
69
71
} ) ;
@@ -78,7 +80,7 @@ class Messages extends Component {
78
80
} ;
79
81
80
82
render ( ) {
81
- const { users , messages } = this . props ;
83
+ const { messages } = this . props ;
82
84
const { text, loading } = this . state ;
83
85
84
86
return (
@@ -93,12 +95,8 @@ class Messages extends Component {
93
95
94
96
{ messages && (
95
97
< MessageList
96
- messages = { messages . map ( message => ( {
97
- ...message ,
98
- user : users
99
- ? users [ message . userId ]
100
- : { userId : message . userId } ,
101
- } ) ) }
98
+ authUser = { this . props . authUser }
99
+ messages = { messages }
102
100
onEditMessage = { this . onEditMessage }
103
101
onRemoveMessage = { this . onRemoveMessage }
104
102
/>
Original file line number Diff line number Diff line change @@ -24,7 +24,7 @@ const NavigationAuth = ({ authUser }) => (
24
24
< li >
25
25
< Link to = { ROUTES . ACCOUNT } > Account</ Link >
26
26
</ li >
27
- { authUser . roles . includes ( ROLES . ADMIN ) && (
27
+ { ! ! authUser . roles [ ROLES . ADMIN ] && (
28
28
< li >
29
29
< Link to = { ROUTES . ADMIN } > Admin</ Link >
30
30
</ li >
Original file line number Diff line number Diff line change @@ -108,7 +108,7 @@ class SignInGoogleBase extends Component {
108
108
return this . props . firebase . user ( socialAuthUser . user . uid ) . set ( {
109
109
username : socialAuthUser . user . displayName ,
110
110
email : socialAuthUser . user . email ,
111
- roles : [ ] ,
111
+ roles : { } ,
112
112
} ) ;
113
113
} )
114
114
. then ( ( ) => {
@@ -154,7 +154,7 @@ class SignInFacebookBase extends Component {
154
154
return this . props . firebase . user ( socialAuthUser . user . uid ) . set ( {
155
155
username : socialAuthUser . additionalUserInfo . profile . name ,
156
156
email : socialAuthUser . additionalUserInfo . profile . email ,
157
- roles : [ ] ,
157
+ roles : { } ,
158
158
} ) ;
159
159
} )
160
160
. then ( ( ) => {
@@ -200,7 +200,7 @@ class SignInTwitterBase extends Component {
200
200
return this . props . firebase . user ( socialAuthUser . user . uid ) . set ( {
201
201
username : socialAuthUser . additionalUserInfo . profile . name ,
202
202
email : socialAuthUser . additionalUserInfo . profile . email ,
203
- roles : [ ] ,
203
+ roles : { } ,
204
204
} ) ;
205
205
} )
206
206
. then ( ( ) => {
Original file line number Diff line number Diff line change @@ -40,10 +40,10 @@ class SignUpFormBase extends Component {
40
40
41
41
onSubmit = event => {
42
42
const { username, email, passwordOne, isAdmin } = this . state ;
43
- const roles = [ ] ;
43
+ const roles = { } ;
44
44
45
45
if ( isAdmin ) {
46
- roles . push ( ROLES . ADMIN ) ;
46
+ roles [ ROLES . ADMIN ] = ROLES . ADMIN ;
47
47
}
48
48
49
49
this . props . firebase
You can’t perform that action at this time.
0 commit comments