Skip to content

Commit 485a147

Browse files
committed
update welcome user name
1 parent 779e25a commit 485a147

File tree

12 files changed

+113
-31
lines changed

12 files changed

+113
-31
lines changed

public/js/bundle-fe171d326137a0373d66.js public/js/bundle-6cfad603b189059b2723.js

+24-18
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

resources/app/actions/index.js

+13
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,17 @@ export const updateLoader = (progress) => {
6666
type: 'UPDATE_LOADER',
6767
progress
6868
}
69+
};
70+
71+
export const saveUserData = (payload) => {
72+
return {
73+
type: 'SAVE_USER_DATA',
74+
payload
75+
}
76+
};
77+
78+
export const removeUserData = () => {
79+
return {
80+
type: 'REMOVE_USER_DATA'
81+
}
6982
};

resources/app/components/App.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ export default class App extends React.Component {
66
render() {
77
return (
88
<div className="container">
9-
<Header pageTemplate={this.props.pageTemplate} logoutLink={this.props.logoutLink}/>
9+
<Header pageTemplate={this.props.pageTemplate} logoutLink={this.props.logoutLink} user={this.props.user}/>
1010
{this.props.children}
1111
<Footer/>
1212
</div>

resources/app/components/Header.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export default class Header extends React.Component {
77
return (
88
<div className="header clearfix">
99
<NavBar pageTemplate={this.props.pageTemplate} logoutLink={this.props.logoutLink}/>
10-
<SiteLogo pageTemplate={this.props.pageTemplate}/>
10+
<SiteLogo pageTemplate={this.props.pageTemplate} user={this.props.user}/>
1111
</div>
1212
);
1313
}

resources/app/components/SiteLogo.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,11 @@ export default class SiteLogo extends React.Component {
77
if (this.props.pageTemplate == 'public') {
88
logoTitle = 'My TODOs';
99
} else {
10-
logoTitle = 'Welcome, User';
10+
if (this.props.user.name == undefined) {
11+
logoTitle = 'Welcome, User';
12+
} else {
13+
logoTitle = 'Welcome, ' + this.props.user.name;
14+
}
1115
}
1216

1317
return (

resources/app/containers/AppContainer.js

+9-2
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,27 @@ class AppContainer extends React.Component {
2222
}
2323

2424
return (
25-
<App pageTemplate={pageTemplate} {...this.props}/>
25+
<App pageTemplate={pageTemplate} user={this.props.user} {...this.props}/>
2626
)
2727
}
2828
}
2929

30+
const mapStateToProps = (state) => {
31+
return {
32+
user: state.user
33+
}
34+
};
35+
3036
const mapDispatchToProps = (dispatch) => {
3137
return {
3238
logoutLink: (e) => {
3339
e.preventDefault();
3440
dispatch(actionCreators.resetTodo());
41+
dispatch(actionCreators.removeUserData());
3542
dispatch(actionCreators.logout());
3643
browserHistory.push('/');
3744
}
3845
};
3946
};
4047

41-
export default connect(null, mapDispatchToProps)(AppContainer);
48+
export default connect(mapStateToProps, mapDispatchToProps)(AppContainer);

resources/app/containers/AuthRequiredContainer.js

+18-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import React from 'react';
1010
import {connect} from 'react-redux';
1111
import {browserHistory} from 'react-router';
1212
import * as actionCreators from './../actions';
13-
import {refreshToken} from './../helpers/sdk';
13+
import {refreshToken, getUserData} from './../helpers/sdk';
1414

1515
/**
1616
* class AuthRequiredContainer
@@ -30,6 +30,12 @@ class AuthRequiredContainer extends React.Component {
3030
this.props.refreshToken(this.props.clientAccessToken, this.props.refreshTokenStr);
3131
}
3232
}
33+
34+
// Check if user data exists
35+
if (this.props.user.id == undefined) {
36+
// Fetch user data
37+
this.props.getUserData(this.props.accessToken);
38+
}
3339
}
3440

3541
render() {
@@ -42,7 +48,9 @@ const mapStateToProps = (state) => {
4248
isAuthenticated: state.auth.isAuthenticated,
4349
tokenExpiresAt: state.auth.tokenExpiresAt,
4450
clientAccessToken: state.auth.clientAccessToken,
45-
refreshTokenStr: state.auth.refreshToken
51+
accessToken: state.auth.accessToken,
52+
refreshTokenStr: state.auth.refreshToken,
53+
user: state.user
4654
}
4755
};
4856

@@ -55,6 +63,14 @@ const mapDispatchToProps = (dispatch) => {
5563
console.log('Failed refreshing access token. Please try again');
5664
console.log(error);
5765
});
66+
},
67+
getUserData: (accessToken) => {
68+
getUserData(accessToken).then(function (response) {
69+
dispatch(actionCreators.saveUserData(response));
70+
}).catch(function (error) {
71+
console.log('Failed getting user data');
72+
console.log(error);
73+
});
5874
}
5975
};
6076
};

resources/app/helpers/sdk.js

+10
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,16 @@ export function signup(clientAccessToken, email, password, name) {
6767
}, config(clientAccessToken));
6868
}
6969

70+
/**
71+
* Get user data
72+
*
73+
* @param accessToken
74+
* @returns AxiosPromise
75+
*/
76+
export function getUserData(accessToken) {
77+
return axios.get(Constant.apiUrl + '/account', config(accessToken));
78+
}
79+
7080
/**
7181
* Refresh existing user access token
7282
*

resources/app/index.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,9 @@ let store = createStore(TodoApp, persistedState);
2525
store.subscribe(throttle(() => {
2626
saveState({
2727
// Add more state objects as required for persistence
28-
todos: store.getState().todos,
29-
auth: store.getState().auth
28+
auth: store.getState().auth,
29+
user: store.getState().user,
30+
todos: store.getState().todos
3031
})
3132
}, 1000));
3233

resources/app/reducers/index.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,18 @@
1010
*/
1111

1212
import {combineReducers} from 'redux';
13+
import auth from './auth';
14+
import user from './user';
1315
import todos from './todos';
1416
import visibilityFilter from './visibilityFilter';
15-
import auth from './auth';
1617
import loading from './loading';
1718

1819
const TodoApp = combineReducers({
20+
auth,
21+
user,
1922
todos,
2023
visibilityFilter,
21-
auth,
22-
loading
24+
loading,
2325
});
2426

2527
export default TodoApp;

resources/app/reducers/user.js

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* user
3+
*
4+
* @date 28/10/2016
5+
* @author Mosufy <[email protected]>
6+
* @copyright Copyright (c) Mosufy
7+
*/
8+
9+
const user = (state = {}, action) => {
10+
switch (action.type) {
11+
case 'SAVE_USER_DATA':
12+
return {
13+
id: action.payload.data.data[0].attributes.uid,
14+
name: action.payload.data.data[0].attributes.name
15+
};
16+
case 'REMOVE_USER_DATA':
17+
return {};
18+
default:
19+
return state
20+
}
21+
};
22+
23+
export default user;

webpack.manifest.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"bundle":{"js":"bundle-fe171d326137a0373d66.js"}}
1+
{"bundle":{"js":"bundle-6cfad603b189059b2723.js"}}

0 commit comments

Comments
 (0)