File tree Expand file tree Collapse file tree 3 files changed +49
-13
lines changed Expand file tree Collapse file tree 3 files changed +49
-13
lines changed Original file line number Diff line number Diff line change @@ -32,23 +32,41 @@ export const getStaticProps: GetStaticProps = async ({ params }) => {
32
32
{ { { lc} } } : await fetch ( `/{{{name}}}/${ params . id } ` ) ,
33
33
} ,
34
34
revalidate : 1 ,
35
- }
35
+ } ;
36
36
}
37
37
38
38
export const getStaticPaths : GetStaticPaths = async ( ) = > {
39
39
try {
40
40
const response = await fetch ( "/{{{name}}}" ) ;
41
+ } catch ( e ) {
42
+ console . error ( e ) ;
41
43
42
44
return {
43
- paths : response . data [ "hydra:member" ] . map ( ( { { { lc } } } ) => ` ${ { { ~ lc } }['@id'] }/edit` ) ,
45
+ paths : [ ] ,
44
46
fallback : true ,
45
47
} ;
46
- } catch ( e ) {
47
- console . error ( e ) ;
48
+ }
49
+
50
+ const view = response . data [ '{{{hydraPrefix}}}view' ] ;
51
+ const paths = response . data [ "{{{hydraPrefix}}}member" ] . map ( ( { { { lc} } } ) => `${ { { ~ lc } }['@id'] }/edit` ) ;
52
+
53
+ if ( view ) {
54
+ try {
55
+ const {
56
+ '{{{hydraPrefix}}}last' : last
57
+ } = view ;
58
+ for ( let page = 2 ; page <= parseInt ( last . replace ( / ^ \/ { { { n a m e } } } \? p a g e = ( \d + ) / , '$1' ) ) ; page ++ ) {
59
+ paths . concat (
60
+ await fetch ( `/{{{name}}}?page=${ page } ` ) . data [ "{{{hydraPrefix}}}member" ] . map ( ( { { { lc} } } ) => `${ { { ~ lc } }['@id'] }/edit` )
61
+ ) ;
62
+ }
63
+ } catch ( e ) {
64
+ console. error ( e ) ;
65
+ }
48
66
}
49
67
50
68
return {
51
- paths : [ ] ,
69
+ paths,
52
70
fallback : true ,
53
71
} ;
54
72
}
Original file line number Diff line number Diff line change @@ -8,11 +8,11 @@ import { useMercure } from "../../../utils/mercure";
8
8
9
9
interface Props {
10
10
{ { { lc } } } : { { { ucf } } } ;
11
- hubURL: string ;
11
+ hubURL: ? string ;
12
12
} ;
13
13
14
14
const Page : NextComponentType < NextPageContext , Props , Props > = ( props ) => {
15
- const { { { lc} } } = useMercure ( props . { { { lc } } } , props . hubURL ) ;
15
+ const { { { lc} } } = props . hubURL === null ? props . { { { lc } } } : useMercure ( props . { { { lc } } } , props . hubURL ) ;
16
16
17
17
if ( ! { { { lc} } } ) {
18
18
return < DefaultErrorPage statusCode = { 404 } /> ;
@@ -39,23 +39,41 @@ export const getStaticProps: GetStaticProps = async ({ params }) => {
39
39
hubURL : response . hubURL ,
40
40
} ,
41
41
revalidate : 1 ,
42
- }
42
+ } ;
43
43
}
44
44
45
45
export const getStaticPaths : GetStaticPaths = async ( ) => {
46
46
try {
47
47
const response = await fetch ( "/{{{name}}}" ) ;
48
+ } catch ( e ) {
49
+ console . error ( e ) ;
48
50
49
51
return {
50
- paths : response . data [ "{{{hydraPrefix}}}member" ] . map ( ( { { { lc } } } ) => { { ~ lc } } [ '@id' ] ) ,
52
+ paths : [ ] ,
51
53
fallback : true ,
52
54
} ;
53
- } catch ( e ) {
54
- console . error ( e ) ;
55
+ }
56
+
57
+ const view = response . data [ '{{{hydraPrefix}}}view' ] ;
58
+ const paths = response . data [ "{{{hydraPrefix}}}member" ] . map ( ( { { { lc} } } ) => `${ { { ~ lc } }['@id'] }` ) ;
59
+
60
+ if ( view ) {
61
+ try {
62
+ const {
63
+ '{{{hydraPrefix}}}last' : last
64
+ } = view ;
65
+ for ( let page = 2 ; page <= parseInt ( last . replace ( / ^ \/ { { { n a m e } } } \? p a g e = ( \d + ) / , '$1' ) ) ; page ++ ) {
66
+ paths . concat (
67
+ await fetch ( `/{{{name}}}?page=${ page } ` ) . data [ "{{{hydraPrefix}}}member" ] . map ( ( { { { lc} } } ) => `${ { { ~ lc } }['@id'] }` )
68
+ ) ;
69
+ }
70
+ } catch ( e ) {
71
+ console . error ( e ) ;
72
+ }
55
73
}
56
74
57
75
return {
58
- paths : [ ] ,
76
+ paths,
59
77
fallback : true ,
60
78
} ;
61
79
}
Original file line number Diff line number Diff line change @@ -39,7 +39,7 @@ export const fetch = async (id: string, init: RequestInit = {}) => {
39
39
const json = await resp . json ( ) ;
40
40
if ( resp . ok ) {
41
41
return {
42
- hubURL : extractHubURL ( resp ) . toString ( ) , // URL cannot be serialized as JSON, must be sent as string
42
+ hubURL : extractHubURL ( resp ) ? .toString ( ) , // URL cannot be serialized as JSON, must be sent as string
43
43
data : normalize ( json ) ,
44
44
} ;
45
45
}
You can’t perform that action at this time.
0 commit comments