Skip to content

Commit abe4048

Browse files
committed
1 parent 29fe857 commit abe4048

File tree

9 files changed

+43
-73
lines changed

9 files changed

+43
-73
lines changed

src/components/Admin/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ const AdminPage = () => (
2020
);
2121

2222
const condition = authUser =>
23-
authUser && authUser.roles.includes(ROLES.ADMIN);
23+
authUser && !!authUser.roles[ROLES.ADMIN];
2424

2525
export default compose(
2626
withEmailVerification,

src/components/Firebase/firebase.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ class Firebase {
7474

7575
// default empty roles
7676
if (!dbUser.roles) {
77-
dbUser.roles = [];
77+
dbUser.roles = {};
7878
}
7979

8080
// merge auth and db user

src/components/Home/index.js

+8-39
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,21 @@
1-
import React, { Component } from 'react';
1+
import React from 'react';
22
import { compose } from 'recompose';
33

44
import { withAuthorization, withEmailVerification } from '../Session';
5-
import { withFirebase } from '../Firebase';
65
import Messages from '../Messages';
76

8-
class HomePage extends Component {
9-
constructor(props) {
10-
super(props);
7+
const HomePage = () => (
8+
<div>
9+
<h1>Home Page</h1>
10+
<p>The Home Page is accessible by every signed in user.</p>
1111

12-
this.state = {
13-
users: null,
14-
};
15-
}
16-
17-
componentDidMount() {
18-
this.unsubscribe = this.props.firebase
19-
.users()
20-
.onSnapshot(snapshot => {
21-
let users = {};
22-
snapshot.forEach(doc => (users[doc.id] = doc.data()));
23-
24-
this.setState({
25-
users,
26-
});
27-
});
28-
}
29-
30-
componentWillUnmount() {
31-
this.unsubscribe();
32-
}
33-
34-
render() {
35-
return (
36-
<div>
37-
<h1>Home Page</h1>
38-
<p>The Home Page is accessible by every signed in user.</p>
39-
40-
<Messages users={this.state.users} />
41-
</div>
42-
);
43-
}
44-
}
12+
<Messages />
13+
</div>
14+
);
4515

4616
const condition = authUser => !!authUser;
4717

4818
export default compose(
49-
withFirebase,
5019
withEmailVerification,
5120
withAuthorization(condition),
5221
)(HomePage);

src/components/Messages/MessageItem.js

+21-19
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class MessageItem extends Component {
2828
};
2929

3030
render() {
31-
const { message, onRemoveMessage } = this.props;
31+
const { authUser, message, onRemoveMessage } = this.props;
3232
const { editMode, editText } = this.state;
3333

3434
return (
@@ -41,29 +41,31 @@ class MessageItem extends Component {
4141
/>
4242
) : (
4343
<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>}
4846
</span>
4947
)}
5048

51-
{editMode ? (
49+
{authUser.uid === message.userId && (
5250
<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+
)}
5959

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>
6769
)}
6870
</li>
6971
);

src/components/Messages/MessageList.js

+2
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@ import React from 'react';
33
import MessageItem from './MessageItem';
44

55
const MessageList = ({
6+
authUser,
67
messages,
78
onEditMessage,
89
onRemoveMessage,
910
}) => (
1011
<ul>
1112
{messages.map(message => (
1213
<MessageItem
14+
authUser={authUser}
1315
key={message.uid}
1416
message={message}
1517
onEditMessage={onEditMessage}

src/components/Messages/Messages.js

+4-7
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ class Messages extends Component {
6565
};
6666

6767
onEditMessage = (message, text) => {
68+
console.log(message);
69+
6870
this.props.firebase.message(message.uid).update({
6971
...message,
7072
text,
@@ -84,7 +86,6 @@ class Messages extends Component {
8486
};
8587

8688
render() {
87-
const { users } = this.props;
8889
const { text, messages, loading } = this.state;
8990

9091
return (
@@ -101,12 +102,8 @@ class Messages extends Component {
101102

102103
{messages && (
103104
<MessageList
104-
messages={messages.map(message => ({
105-
...message,
106-
user: users
107-
? users[message.userId]
108-
: { userId: message.userId },
109-
}))}
105+
authUser={authUser}
106+
messages={messages}
110107
onEditMessage={this.onEditMessage}
111108
onRemoveMessage={this.onRemoveMessage}
112109
/>

src/components/Navigation/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ const NavigationAuth = ({ authUser }) => (
2929
<li>
3030
<Link to={ROUTES.ACCOUNT}>Account</Link>
3131
</li>
32-
{authUser.roles.includes(ROLES.ADMIN) && (
32+
{!!authUser.roles[ROLES.ADMIN] && (
3333
<li>
3434
<Link to={ROUTES.ADMIN}>Admin</Link>
3535
</li>

src/components/SignIn/index.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ class SignInGoogleBase extends Component {
109109
{
110110
username: socialAuthUser.user.displayName,
111111
email: socialAuthUser.user.email,
112-
roles: [],
112+
roles: {},
113113
},
114114
{ merge: true },
115115
);
@@ -158,7 +158,7 @@ class SignInFacebookBase extends Component {
158158
{
159159
username: socialAuthUser.additionalUserInfo.profile.name,
160160
email: socialAuthUser.additionalUserInfo.profile.email,
161-
roles: [],
161+
roles: {},
162162
},
163163
{ merge: true },
164164
);
@@ -207,7 +207,7 @@ class SignInTwitterBase extends Component {
207207
{
208208
username: socialAuthUser.additionalUserInfo.profile.name,
209209
email: socialAuthUser.additionalUserInfo.profile.email,
210-
roles: [],
210+
roles: {},
211211
},
212212
{ merge: true },
213213
);

src/components/SignUp/index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,10 @@ class SignUpFormBase extends Component {
4040

4141
onSubmit = event => {
4242
const { username, email, passwordOne, isAdmin } = this.state;
43-
const roles = [];
43+
const roles = {};
4444

4545
if (isAdmin) {
46-
roles.push(ROLES.ADMIN);
46+
roles[ROLES.ADMIN] = ROLES.ADMIN;
4747
}
4848

4949
this.props.firebase

0 commit comments

Comments
 (0)