@@ -12,8 +12,52 @@ import {
1212 fetchAllResourceRoles ,
1313 fetchChallengeResouces ,
1414} from '../services/resources.service'
15- import { BackendResourceRole , BackendSubmission , ChallengeRealtiveInfosMapping } from '../models'
1615import { fetchSubmissions } from '../services'
16+ import { BackendResourceRole , BackendSubmission , ChallengeRealtiveInfosMapping } from '../models'
17+
18+ const FALLBACK_RESOURCE_ROLES : BackendResourceRole [ ] = [
19+ {
20+ fullReadAccess : false ,
21+ fullWriteAccess : false ,
22+ id : 'fd672cca-556e-4d16-b0a2-718218edd412' ,
23+ isActive : true ,
24+ legacyId : 19 ,
25+ name : 'Checkpoint Screener' ,
26+ selfObtainable : false ,
27+ } ,
28+ {
29+ fullReadAccess : true ,
30+ fullWriteAccess : false ,
31+ id : '3970272b-85b4-48d8-8439-672b4f6031bd' ,
32+ isActive : true ,
33+ legacyId : 20 ,
34+ name : 'Checkpoint Reviewer' ,
35+ selfObtainable : false ,
36+ } ,
37+ ]
38+
39+ const ensureResourceRoleMapping = (
40+ mapping : { [ key : string ] : BackendResourceRole } | undefined ,
41+ ) : { [ key : string ] : BackendResourceRole } => {
42+ const base = { ...( mapping ?? { } ) }
43+
44+ FALLBACK_RESOURCE_ROLES . forEach ( role => {
45+ const existing = base [ role . id ]
46+ if ( ! existing ) {
47+ base [ role . id ] = role
48+ return
49+ }
50+
51+ if ( ! existing . name ) {
52+ base [ role . id ] = {
53+ ...existing ,
54+ name : role . name ,
55+ }
56+ }
57+ } )
58+
59+ return base
60+ }
1761
1862export interface useFetchChallengeRelativeDatasProps {
1963 challengeRelativeInfosMapping : ChallengeRealtiveInfosMapping // from challenge id to list of my role
@@ -57,20 +101,21 @@ export function useFetchChallengeRelativeDatas(
57101 setResourceRoleReviewer ( find ( results . data , {
58102 name : 'Reviewer' ,
59103 } ) )
60- setResourceRoleMapping (
61- reduce (
62- results . data ,
63- ( mappingResult , resourceRole : BackendResourceRole ) => ( {
64- ... mappingResult ,
65- [ resourceRole . id ] : resourceRole ,
66- } ) ,
67- { } ,
68- ) ,
69- )
104+ const mapping = ensureResourceRoleMapping ( reduce (
105+ results . data ,
106+ ( mappingResult , resourceRole : BackendResourceRole ) => ( {
107+ ... mappingResult ,
108+ [ resourceRole . id ] : resourceRole ,
109+ } ) ,
110+ { } ,
111+ ) )
112+
113+ setResourceRoleMapping ( mapping )
70114 setIsLoadingResourceRoles ( false )
71115 } )
72116 . catch ( e => {
73117 handleError ( e )
118+ setResourceRoleMapping ( current => ensureResourceRoleMapping ( current ) )
74119 setIsLoadingResourceRoles ( false )
75120 } )
76121 } )
0 commit comments