@@ -114,7 +114,7 @@ export const setAuthDetails = (username, token, osm_oauth_token) => (dispatch) =
114114// UPDATES OSM INFORMATION OF THE USER
115115export const setUserDetails =
116116 ( username , encodedToken , update = false ) =>
117- ( dispatch ) => {
117+ async ( dispatch ) => {
118118 // only trigger the loader if this function is not being triggered to update the user information
119119 if ( ! update ) dispatch ( setLoader ( true ) ) ;
120120 fetchLocalJSONAPI ( `users/${ username } /openstreetmap/` , encodedToken )
@@ -123,36 +123,75 @@ export const setUserDetails =
123123 console . log ( error ) ;
124124 dispatch ( setLoader ( false ) ) ;
125125 } ) ;
126- // GET USER DETAILS
127- fetchLocalJSONAPI ( `users/queries/${ username } /` , encodedToken )
128- . then ( ( userDetails ) => {
129- dispatch ( updateUserDetails ( userDetails ) ) ;
130- // GET USER ORGS INFO
131- fetchLocalJSONAPI (
132- `organisations/?omitManagerList=true&manager_user_id=${ userDetails . id } ` ,
133- encodedToken ,
134- )
135- . then ( ( orgs ) =>
136- dispatch ( updateOrgsInfo ( orgs . organisations . map ( ( org ) => org . organisationId ) ) ) ,
137- )
138- . catch ( ( error ) => dispatch ( updateOrgsInfo ( [ ] ) ) ) ;
139- fetchLocalJSONAPI (
140- `teams/?omitMemberList=true&team_role=PROJECT_MANAGER&member=${ userDetails . id } ` ,
141- encodedToken ,
142- )
143- . then ( ( teams ) => dispatch ( updatePMsTeams ( teams . teams . map ( ( team ) => team . teamId ) ) ) )
144- . catch ( ( error ) => dispatch ( updatePMsTeams ( [ ] ) ) ) ;
145- dispatch ( setLoader ( false ) ) ;
146126
147- fetchLocalJSONAPI ( `teams/?fullMemberList=false&manager=${ userDetails . id } ` , encodedToken )
148- . then ( ( teams ) => dispatch ( updateTMsTeams ( teams . teams . map ( ( team ) => team . teamId ) ) ) )
149- . catch ( ( error ) => dispatch ( updateTMsTeams ( [ ] ) ) ) ;
150- dispatch ( setLoader ( false ) ) ;
151- } )
152- . catch ( ( error ) => {
153- if ( error . message === 'InvalidToken' ) dispatch ( logout ( ) ) ;
154- dispatch ( setLoader ( false ) ) ;
155- } ) ;
127+ try {
128+ const userDetails = await fetchLocalJSONAPI ( `users/queries/${ username } /` , encodedToken ) ;
129+
130+ dispatch ( updateUserDetails ( userDetails ) ) ;
131+
132+ const userId = userDetails . id ;
133+
134+ const orgsPromise = fetchLocalJSONAPI (
135+ `organisations/?omitManagerList=true&manager_user_id=${ userId } ` ,
136+ encodedToken ,
137+ )
138+ . then ( ( orgs ) => dispatch ( updateOrgsInfo ( orgs . organisations . map ( ( o ) => o . organisationId ) ) ) )
139+ . catch ( ( ) => dispatch ( updateOrgsInfo ( [ ] ) ) ) ;
140+
141+ const pmsTeamsPromise = fetchLocalJSONAPI (
142+ `teams/?omitMemberList=true&team_role=PROJECT_MANAGER&member=${ userId } ` ,
143+ encodedToken ,
144+ )
145+ . then ( ( teams ) => dispatch ( updatePMsTeams ( teams . teams . map ( ( t ) => t . teamId ) ) ) )
146+ . catch ( ( ) => dispatch ( updatePMsTeams ( [ ] ) ) ) ;
147+
148+ const tmsTeamsPromise = fetchLocalJSONAPI (
149+ `teams/?fullMemberList=false&manager=${ userId } ` ,
150+ encodedToken ,
151+ )
152+ . then ( ( teams ) => dispatch ( updateTMsTeams ( teams . teams . map ( ( t ) => t . teamId ) ) ) )
153+ . catch ( ( ) => dispatch ( updateTMsTeams ( [ ] ) ) ) ;
154+
155+ // Run all parallel requests at once
156+ await Promise . all ( [ orgsPromise , pmsTeamsPromise , tmsTeamsPromise ] ) ;
157+ } catch ( error ) {
158+ if ( error . message === 'InvalidToken' ) {
159+ dispatch ( logout ( ) ) ;
160+ }
161+ } finally {
162+ dispatch ( setLoader ( false ) ) ;
163+ }
164+
165+ // GET USER DETAILS
166+ // fetchLocalJSONAPI(`users/queries/${username}/`, encodedToken)
167+ // .then((userDetails) => {
168+ // dispatch(updateUserDetails(userDetails));
169+ // // GET USER ORGS INFO
170+ // fetchLocalJSONAPI(
171+ // `organisations/?omitManagerList=true&manager_user_id=${userDetails.id}`,
172+ // encodedToken,
173+ // )
174+ // .then((orgs) =>
175+ // dispatch(updateOrgsInfo(orgs.organisations.map((org) => org.organisationId))),
176+ // )
177+ // .catch((error) => dispatch(updateOrgsInfo([])));
178+ // fetchLocalJSONAPI(
179+ // `teams/?omitMemberList=true&team_role=PROJECT_MANAGER&member=${userDetails.id}`,
180+ // encodedToken,
181+ // )
182+ // .then((teams) => dispatch(updatePMsTeams(teams.teams.map((team) => team.teamId))))
183+ // .catch((error) => dispatch(updatePMsTeams([])));
184+ // dispatch(setLoader(false));
185+
186+ // fetchLocalJSONAPI(`teams/?fullMemberList=false&manager=${userDetails.id}`, encodedToken)
187+ // .then((teams) => dispatch(updateTMsTeams(teams.teams.map((team) => team.teamId))))
188+ // .catch((error) => dispatch(updateTMsTeams([])));
189+ // dispatch(setLoader(false));
190+ // })
191+ // .catch((error) => {
192+ // if (error.message === 'InvalidToken') dispatch(logout());
193+ // dispatch(setLoader(false));
194+ // });
156195 } ;
157196
158197export const getUserDetails = ( state ) => ( dispatch ) => {
0 commit comments