Skip to content

Commit 4733ea6

Browse files
committed
userData changes
1 parent 4b04ecb commit 4733ea6

File tree

5 files changed

+37
-37
lines changed

5 files changed

+37
-37
lines changed

src/components/UserForm/index.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,7 @@ UserForm.propTypes = {
402402
id: PropTypes.string,
403403
isAdmin: PropTypes.bool.isRequired,
404404
name: PropTypes.string.isRequired,
405-
location: PropTypes.string.isRequired,
405+
location: PropTypes.string,
406406
logoUrl: PropTypes.string,
407407
createdAt: PropTypes.string.isRequired
408408
}),

src/pages/User/index.jsx

Lines changed: 13 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -11,49 +11,37 @@ import { useFormatMessage } from 'hooks';
1111
const User = () => {
1212
const { id } = useParams();
1313

14-
const { success, usersList } = useSelector(
14+
const { success, usersList, userData, error } = useSelector(
1515
(state) => ({
1616
success: state.users.success,
17-
usersList: state.users.data,
17+
usersList: state.users.list,
18+
userData: state.users.user,
19+
error: state.users.error
1820
}),
1921
shallowEqual
2022
);
2123

22-
const [user, setUser] = useState({
23-
name: '',
24-
email: '',
25-
location: '',
26-
isAdmin: false,
27-
file: null,
28-
createdAt: new Date().toDateString(),
29-
});
24+
const [user, setUser] = useState(userData);
3025

3126
const dispatch = useDispatch();
3227

3328
useEffect(() => {
3429
if (id) {
35-
const thisUser = usersList
36-
?.filter((fetchedUser) => fetchedUser.id === id)
37-
.pop();
38-
if (thisUser) {
39-
setUser(thisUser);
30+
const userFetched = usersList?.find((fetchedUser) => fetchedUser.id === id);
31+
if (userFetched) {
32+
setUser(userFetched);
33+
} else if(userData.id === id) {
34+
setUser(userData);
4035
} else {
4136
dispatch(fetchUsers(id));
4237
}
4338
}
44-
}, [id]);
45-
46-
useEffect(() => {
47-
const thisUser = usersList
48-
?.filter((fetchedUser) => fetchedUser.id === id)
49-
.pop();
50-
setUser(thisUser);
51-
}, [usersList]);
39+
}, [id, userData]);
5240

5341
const isEditing = !!id;
5442

5543
const userForm =
56-
!user.name && id ? (
44+
!user && id ? (
5745
<ClipLoader />
5846
) : (
5947
<UserForm
@@ -63,7 +51,7 @@ const User = () => {
6351
/>
6452
);
6553

66-
const redirect = (user.error || success) && <Redirect to={paths.USERS} />;
54+
const redirect = (error || success) && <Redirect to={paths.USERS} />;
6755

6856
const editUserMessage = useFormatMessage('User.editUser');
6957

src/pages/Users/index.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import classes from './Users.module.scss';
1414
const Users = () => {
1515
const { usersList, isAdmin, error, loading, deleted } = useSelector(
1616
state => ({
17-
usersList: state.users.data,
17+
usersList: state.users.list,
1818
isAdmin: state.auth.userData.isAdmin,
1919
error: state.users.error,
2020
loading: state.users.loading,

src/state/actions/users.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ export const fetchUsers = (userId = '') => {
5454
const user = { ...userData, id: userId };
5555
return dispatch(
5656
USERS_FETCH_DATA_SUCCESS({
57-
users: [user],
57+
list: getState().users.list,
58+
user
5859
})
5960
);
6061
}
@@ -79,7 +80,8 @@ export const fetchUsers = (userId = '') => {
7980

8081
return dispatch(
8182
USERS_FETCH_DATA_SUCCESS({
82-
users: usersData.filter((user) => user.id !== id),
83+
list: usersData.filter((user) => user.id !== id),
84+
user: getState().users.user
8385
})
8486
);
8587
};
@@ -98,7 +100,7 @@ export const deleteUser = (id) => {
98100
dispatch(USERS_DELETE_USER_INIT());
99101
const { locale } = getState().preferences;
100102
const { logoUrl } = getState()
101-
.users.data.filter((user) => user.id === id)
103+
.users.list.filter((user) => user.id === id)
102104
.pop();
103105

104106
const deleteLogoTask = logoUrl ? deleteLogo(logoUrl) : null;
@@ -241,7 +243,7 @@ export const modifyUser = ({
241243
const { logoUrl } = isProfile
242244
? getState().auth.userData
243245
: getState()
244-
.users.data.filter((user) => user.id === id)
246+
.users.list.filter((user) => user.id === id)
245247
.pop();
246248

247249
let deleteLogoTask;

src/state/reducers/users/index.js

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,15 @@ import {
1919
} from 'state/actions/users';
2020

2121
const initialState = {
22-
data: [],
22+
list: [],
23+
user: {
24+
name: '',
25+
email: '',
26+
location: '',
27+
isAdmin: false,
28+
file: null,
29+
createdAt: new Date().toDateString()
30+
},
2331
loading: false,
2432
error: null,
2533
success: false,
@@ -34,7 +42,8 @@ export const usersReducer = createReducer(
3442
}),
3543
[USERS_FETCH_DATA_SUCCESS]: (state, payload) => ({
3644
...state,
37-
data: payload.users,
45+
list: payload.list,
46+
user: payload.user,
3847
loading: false,
3948
error: null
4049
}),
@@ -49,7 +58,7 @@ export const usersReducer = createReducer(
4958
}),
5059
[USERS_DELETE_USER_SUCCESS]: (state, payload) => ({
5160
...state,
52-
data: state.data.filter(elem => elem.id !== payload.id),
61+
list: state.list.filter(elem => elem.id !== payload.id),
5362
loading: false,
5463
error: null,
5564
deleted: true
@@ -61,15 +70,15 @@ export const usersReducer = createReducer(
6170
}),
6271
[USERS_CLEAR_DATA]: state => ({
6372
...initialState,
64-
data: state.data
73+
list: state.list
6574
}),
6675
[USERS_CREATE_USER_INIT]: state => ({
6776
...state,
6877
loading: true
6978
}),
7079
[USERS_CREATE_USER_SUCCESS]: (state, payload) => ({
7180
...state,
72-
data: state.data.concat(payload.user),
81+
list: state.list.concat(payload.user),
7382
loading: false,
7483
error: null,
7584
success: true
@@ -85,7 +94,7 @@ export const usersReducer = createReducer(
8594
}),
8695
[USERS_MODIFY_USER_SUCCESS]: (state, payload) => ({
8796
...state,
88-
data: state.data.map(elem => {
97+
list: state.list.map(elem => {
8998
if (elem.id === payload.id) {
9099
return {
91100
name: payload.user.name,
@@ -98,6 +107,7 @@ export const usersReducer = createReducer(
98107
}
99108
return elem;
100109
}),
110+
user: payload,
101111
loading: false,
102112
error: null,
103113
success: true

0 commit comments

Comments
 (0)