1
1
import { useRouter } from 'next/router'
2
+ import { NextPageContext } from 'next'
3
+ import { graphql , usePreloadedQuery } from 'react-relay'
4
+ import { RelayProps , withRelay } from 'relay-nextjs'
5
+ import Layout from '../../components/Layout'
6
+ import { getClientEnvironment } from '../../lib/client_environment'
7
+ import Card from '../../components/Card'
8
+ import UserDetails from '../../components/UserDetails/UserDetails'
9
+ import { pages_UserQuery } from '../../queries/__generated__/pages_UserQuery.graphql'
10
+ import RelayModernEnvironment from 'relay-runtime/lib/store/RelayModernEnvironment'
11
+ import { UserDetails_user$key } from '../../queries/__generated__/UserDetails_user.graphql'
2
12
3
- const User = ( ) => {
13
+ const UserQuery = graphql `
14
+ query pages_UserQuery {
15
+ viewer {
16
+ handle
17
+ ...UserDetails_user
18
+ }
19
+ }
20
+ `
21
+
22
+ const User = ( {
23
+ preloadedQuery,
24
+ } : RelayProps < Record < string , never > , pages_UserQuery > ) => {
25
+ const query = usePreloadedQuery ( UserQuery , preloadedQuery )
4
26
const router = useRouter ( )
5
27
const { handle } = router . query
6
28
7
- return < h1 > Welcome { handle } </ h1 >
29
+ return (
30
+ < div >
31
+ < Layout
32
+ sidebarContentRight = { handle }
33
+ sidebarContentLeft = {
34
+ < Card >
35
+ < UserDetails user = { query . viewer as UserDetails_user$key } />
36
+ </ Card >
37
+ }
38
+ >
39
+ { handle }
40
+ </ Layout >
41
+ </ div >
42
+ )
8
43
}
9
44
10
- export default User
45
+ export default withRelay ( User , UserQuery , {
46
+ createClientEnvironment : ( ) =>
47
+ getClientEnvironment ( ) as RelayModernEnvironment ,
48
+ createServerEnvironment : async ( ctx : NextPageContext ) => {
49
+ const { createServerEnvironment } = await import (
50
+ '../../lib/server/server_environment'
51
+ )
52
+
53
+ return createServerEnvironment ( ctx )
54
+ } ,
55
+ } )
0 commit comments