@@ -11,7 +11,12 @@ import { Button, CustomButton } from '../button';
11
11
import { ExternalLinkIcon , UserGroupIcon } from '../svgIcons' ;
12
12
import { useDebouncedCallback } from '../../hooks/UseThrottle' ;
13
13
import { createOSMTeamsLoginWindow } from '../../utils/login' ;
14
- import { useOSMTeamInfo , useOSMTeams , useOSMTeamUsers } from '../../hooks/UseOSMTeams' ;
14
+ import {
15
+ useOSMTeamInfo ,
16
+ useOSMTeamModerators ,
17
+ useOSMTeams ,
18
+ useOSMTeamUsers
19
+ } from '../../hooks/UseOSMTeams' ;
15
20
import { UserAvatar } from '../user/avatar' ;
16
21
import { OSM_TEAMS_API_URL } from '../../config' ;
17
22
import { fetchExternalJSONAPI } from '../../network/genericJSONRequest' ;
@@ -27,14 +32,21 @@ const OSMTeamsLink = () =>
27
32
28
33
const reSyncUsers = ( { tmTeamId, members, managers, osmTeamsId, osmteams_token, token, forceUpdate, setErrors } ) => {
29
34
setErrors ( false ) ;
30
- fetchExternalJSONAPI (
31
- new URL ( `/api/teams/${ osmTeamsId } /members` , OSM_TEAMS_API_URL ) ,
32
- `Bearer ${ osmteams_token } ` ,
33
- 'GET' ,
34
- ) . then ( ( osmTeamsUsers ) => {
35
+ Promise . all ( [
36
+ fetchExternalJSONAPI (
37
+ new URL ( `/api/teams/${ osmTeamsId } /members` , OSM_TEAMS_API_URL ) ,
38
+ `Bearer ${ osmteams_token } ` ,
39
+ 'GET' ,
40
+ ) ,
41
+ fetchExternalJSONAPI (
42
+ new URL ( `/api/teams/${ osmTeamsId } /moderators` , OSM_TEAMS_API_URL ) ,
43
+ `Bearer ${ osmteams_token } ` ,
44
+ 'GET' ,
45
+ )
46
+ ] ) . then ( ( [ osmTeamsUsers , osmTeamsModerators ] ) => {
35
47
const { members : osmTeamsMembers , managers : osmTeamsManagers } = filterOSMTeamsMembers (
36
- osmTeamsUsers . members ,
37
- osmTeamsUsers . moderators
48
+ osmTeamsUsers . members . data ,
49
+ osmTeamsModerators
38
50
) ;
39
51
const { usersAdded, usersRemoved } = getMembersDiff (
40
52
members ,
@@ -212,7 +224,6 @@ const TeamBasicInfo = ({ teamId }) => {
212
224
const TeamInfo = ( { members, managers, teamId, isLoadingMembers} ) => {
213
225
const intl = useIntl ( ) ;
214
226
const [ error , isLoading , team ] = useOSMTeamInfo ( teamId ) ;
215
- const { members : filteredMembers , managers : filteredManagers } = filterOSMTeamsMembers ( members , managers ) ;
216
227
if ( error ) return < div > < FormattedMessage { ...messages . osmTeamInfoError } /> </ div > ;
217
228
218
229
return (
@@ -242,7 +253,7 @@ const TeamInfo = ({members, managers, teamId, isLoadingMembers}) => {
242
253
< p > < i > { team . bio } </ i > </ p >
243
254
< h5 className = 'mb1' > < FormattedMessage { ...messages . managers } /> </ h5 >
244
255
< div >
245
- { filteredManagers . map ( ( user ) => (
256
+ { managers . map ( ( user ) => (
246
257
< UserAvatar
247
258
key = { user . id }
248
259
username = { user . name }
@@ -254,7 +265,7 @@ const TeamInfo = ({members, managers, teamId, isLoadingMembers}) => {
254
265
</ div >
255
266
< h5 className = 'mb1' > < FormattedMessage { ...messages . members } /> </ h5 >
256
267
< div >
257
- { filteredMembers . map ( ( user ) => (
268
+ { members . map ( ( user ) => (
258
269
< UserAvatar
259
270
key = { user . id }
260
271
username = { user . name }
@@ -275,16 +286,19 @@ export const SelectOSMTeamsModal = ({ osmTeamsId, setOsmTeamsId, setManagers, se
275
286
const [ error , isLoading , myTeams ] = useOSMTeams ( ) ;
276
287
const [ selectedTeamId , setSelectedTeamId ] = useState ( ) ;
277
288
const [ syncStatus , setSyncStatus ] = useState ( ) ;
278
- const [ teamError , teamIsLoading , teamUsers ] = useOSMTeamUsers ( osmTeamsId || selectedTeamId ) ;
289
+ const [ teamMembersError , teamMembersIsLoading , teamMembers ] = useOSMTeamUsers ( osmTeamsId || selectedTeamId ) ;
290
+ const [ teamModeratorsError , teamModeratorsIsLoading , teamModerators ] = useOSMTeamModerators (
291
+ osmTeamsId || selectedTeamId
292
+ ) ;
293
+ const { members, managers } = filterOSMTeamsMembers (
294
+ teamMembers ?. members ?. data || [ ] ,
295
+ teamModerators ?. length ? teamModerators : [ ]
296
+ ) ;
279
297
280
298
const syncToExistingTeam = ( ) => {
281
299
setSyncStatus ( 'started' ) ;
282
300
updateTeam ( selectedTeamId ) ;
283
301
setSyncStatus ( 'waiting' ) ;
284
- const { members, managers } = filterOSMTeamsMembers (
285
- teamUsers . members ,
286
- teamUsers . moderators
287
- ) ;
288
302
const errors = [ ] ;
289
303
managers . map ( ( user ) =>
290
304
joinTeamRequest ( tmTeamId , user . name , 'MANAGER' , token )
@@ -301,15 +315,8 @@ export const SelectOSMTeamsModal = ({ osmTeamsId, setOsmTeamsId, setManagers, se
301
315
const syncToNewTeam = ( ) => {
302
316
setSyncStatus ( 'started' ) ;
303
317
setOsmTeamsId ( selectedTeamId ) ;
304
- const managersIds = teamUsers . moderators . map ( ( user ) => user . osm_id ) ;
305
- const managers = teamUsers . members
306
- . filter ( ( user ) => managersIds . includes ( user . id ) )
307
- . map ( ( user ) => ( { username : user . name , pictureUrl : user . image } ) ) ;
308
- setManagers ( managers ) ;
309
- const members = teamUsers . members
310
- . filter ( ( user ) => ! managersIds . includes ( user . id ) )
311
- . map ( ( user ) => ( { username : user . name , pictureUrl : user . image } ) ) ;
312
- setMembers ( members ) ;
318
+ setManagers ( managers . map ( ( user ) => ( { username : user . name } ) ) ) ;
319
+ setMembers ( members . map ( ( user ) => ( { username : user . name } ) ) ) ;
313
320
setSyncStatus ( 'finished' ) ;
314
321
}
315
322
@@ -328,12 +335,14 @@ export const SelectOSMTeamsModal = ({ osmTeamsId, setOsmTeamsId, setManagers, se
328
335
? (
329
336
< div >
330
337
< TeamInfo
331
- members = { teamUsers ?. members || [ ] }
332
- managers = { teamUsers ?. moderators || [ ] }
338
+ members = { members || [ ] }
339
+ managers = { managers || [ ] }
333
340
teamId = { osmTeamsId || selectedTeamId }
334
- isLoadingMembers = { teamIsLoading }
341
+ isLoadingMembers = { teamMembersIsLoading || teamModeratorsIsLoading }
335
342
/>
336
- { teamError && < FormattedMessage { ...messages . osmTeamInfoError } /> }
343
+ { ( teamMembersError || teamModeratorsError ) &&
344
+ < FormattedMessage { ...messages . osmTeamInfoError } />
345
+ }
337
346
</ div >
338
347
) : (
339
348
< >
0 commit comments