@@ -16,57 +16,51 @@ import parseHydraDocumentation from "@api-platform/api-doc-parser/lib/hydra/pars
16
16
import authProvider from " ./authProvider" ;
17
17
18
18
const entrypoint = process .env .REACT_APP_API_ENTRYPOINT ;
19
- const fetchHeaders = () => ( {
20
- Authorization: ` Bearer ${ window . localStorage .getItem (" token" )} ` ,
21
- }) ;
19
+ const getHeaders = () => localStorage . getItem ( " token " ) ? {
20
+ Authorization: ` Bearer ${ localStorage .getItem (" token" )} ` ,
21
+ } : {} ;
22
22
const fetchHydra = (url , options = {}) =>
23
- localStorage .getItem (" token" )
24
- ? baseFetchHydra (url, {
25
- ... options,
26
- headers: new Headers (fetchHeaders ()),
27
- })
28
- : baseFetchHydra (url, options);
23
+ baseFetchHydra (url, {
24
+ ... options,
25
+ headers: getHeaders,
26
+ });
29
27
const RedirectToLogin = () => {
30
28
const introspect = useIntrospection ();
31
29
32
- if (localStorage .getItem (' token' )) {
30
+ if (localStorage .getItem (" token" )) {
33
31
introspect ();
34
32
return <>< / > ;
35
33
}
36
- return < Redirect to= ' /login' / > ;
37
- }
38
- const apiDocumentationParser = (entrypoint ) =>
39
- parseHydraDocumentation (
40
- entrypoint,
41
- localStorage .getItem (" token" )
42
- ? { headers: new Headers (fetchHeaders ()) }
43
- : {}
44
- ).then (
45
- ({ api }) => ({ api }),
46
- (result ) => {
47
- if (result .status === 401 ) {
48
- // Prevent infinite loop if the token is expired
49
- localStorage .removeItem (" token" );
34
+ return < Redirect to= " /login" / > ;
35
+ };
36
+ const apiDocumentationParser = async (entrypoint ) => {
37
+ try {
38
+ const { api } = await parseHydraDocumentation (entrypoint, { headers: getHeaders });
39
+ return { api };
40
+ } catch (result) {
41
+ if (result .status === 401 ) {
42
+ // Prevent infinite loop if the token is expired
43
+ localStorage .removeItem (" token" );
50
44
51
- return Promise . resolve ( {
52
- api: result .api ,
53
- customRoutes: [
54
- < Route path= " /" component= {RedirectToLogin} / >
55
- ],
56
- }) ;
57
- }
45
+ return {
46
+ api: result .api ,
47
+ customRoutes: [
48
+ < Route path= " /" component= {RedirectToLogin} / >
49
+ ],
50
+ } ;
51
+ }
58
52
59
- return Promise . reject ( result) ;
60
- },
61
- ) ;
53
+ throw result;
54
+ }
55
+ } ;
62
56
const dataProvider = baseHydraDataProvider (entrypoint, fetchHydra, apiDocumentationParser);
63
57
64
58
export default () => (
65
- < HydraAdmin
66
- dataProvider= { dataProvider }
67
- authProvider= { authProvider }
68
- entrypoint= { entrypoint }
69
- / >
59
+ < HydraAdmin
60
+ dataProvider= { dataProvider }
61
+ authProvider= { authProvider }
62
+ entrypoint= { entrypoint }
63
+ / >
70
64
);
71
65
```
72
66
0 commit comments