From 9e5fd4daeee114371b3630b0bccfe9afa528970e Mon Sep 17 00:00:00 2001 From: tomivm Date: Thu, 26 Jan 2023 21:24:56 -0300 Subject: [PATCH 1/3] Create method to get user data on API class --- src/api/api.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/api/api.js b/src/api/api.js index f17b46ff9..5a1b427dc 100644 --- a/src/api/api.js +++ b/src/api/api.js @@ -178,6 +178,18 @@ class API { return data; } + async getUserData(userId) { + const authToken = getAuthToken(); + const headers = { + Authorization: `Bearer ${authToken}` + }; + + const { data } = await this.axiosInstance.get(`/user/${userId}`, { + headers + }); + return data; + } + async getBoards({ page = 1, limit = 10, From 20065ee330a4a02845a374042f9231ea5a522d61 Mon Sep 17 00:00:00 2001 From: tomivm Date: Thu, 26 Jan 2023 21:28:26 -0300 Subject: [PATCH 2/3] Create action to update userData --- src/components/App/App.actions.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/components/App/App.actions.js b/src/components/App/App.actions.js index a3062fd69..8f2e325df 100644 --- a/src/components/App/App.actions.js +++ b/src/components/App/App.actions.js @@ -85,6 +85,23 @@ export function updateLoggedUserLocation() { }; } +export function updateUserDataFromAPI() { + return async (dispatch, getState) => { + const { + app: { userData } + } = getState(); + if (!userData) return; + try { + const { id } = userData; + const newUserData = await API.getUserData(id); + dispatch(updateUserData({ ...userData, ...newUserData })); + } catch (error) { + console.error(error); + //could show an alert and offer the posibility of rerun de update. + } + }; +} + export function updateUnloggedUserLocation() { return async (dispatch, getState) => { const { From 35bd1df709fb704ff7301a0bb4eca38cc23d614d Mon Sep 17 00:00:00 2001 From: tomivm Date: Thu, 26 Jan 2023 21:30:31 -0300 Subject: [PATCH 3/3] Implement the action on the mount of App container --- src/components/App/App.container.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/components/App/App.container.js b/src/components/App/App.container.js index 79d187001..0330dd8e3 100644 --- a/src/components/App/App.container.js +++ b/src/components/App/App.container.js @@ -11,6 +11,7 @@ import App from './App.component'; import { DISPLAY_SIZE_STANDARD } from '../Settings/Display/Display.constants'; import { + updateUserDataFromAPI, updateLoggedUserLocation, updateUnloggedUserLocation } from '../App/App.actions'; @@ -43,12 +44,18 @@ export class AppContainer extends Component { const localizeUser = () => { const { isLogged, + updateUserDataFromAPI, updateLoggedUserLocation, updateUnloggedUserLocation } = this.props; - if (isLogged) return updateLoggedUserLocation(); + if (isLogged) return loggedActions(); return updateUnloggedUserLocation(); + + async function loggedActions() { + await updateUserDataFromAPI(); + updateLoggedUserLocation(); + } }; registerServiceWorker( @@ -117,6 +124,7 @@ const mapStateToProps = state => ({ const mapDispatchToProps = { showNotification, + updateUserDataFromAPI, updateLoggedUserLocation, updateUnloggedUserLocation };