-
Notifications
You must be signed in to change notification settings - Fork 42
/
Copy pathProfile.tsx
66 lines (62 loc) · 1.87 KB
/
Profile.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import { GridItem, SimpleGrid, Stack } from '@chakra-ui/react'
import { FC, PropsWithChildren } from 'react'
import type { TabsEnum } from '../components/User/Profile/Navigation'
import UserProfileNavigation from '../components/User/Profile/Navigation'
import { useFetchAccountDetailQuery } from '../graphql'
import useAccount from '../hooks/useAccount'
import { isSameAddress } from '../utils'
import Head from './Head'
import UserProfileBanner from './User/Profile/Banner'
import UserProfileInfo from './User/Profile/Info'
type Props = PropsWithChildren<{
address: string
currentTab: TabsEnum
loginUrlForReferral?: string
}>
const UserProfileTemplate: FC<Props> = ({
address,
currentTab,
loginUrlForReferral,
children,
}) => {
const { address: currentAccount } = useAccount()
const { data: accountData } = useFetchAccountDetailQuery({
variables: { address },
})
const account = accountData?.account
return (
<>
<Head
title={account?.name || address}
description={account?.description || undefined}
image={account?.image || undefined}
/>
<UserProfileBanner address={address} user={account} />
<SimpleGrid
mb={6}
spacingX={{ lg: 12 }}
spacingY={{ base: 12, lg: 0 }}
columns={{ base: 1, lg: 4 }}
>
<UserProfileInfo
address={address}
user={account}
loginUrlForReferral={loginUrlForReferral}
/>
<GridItem colSpan={{ lg: 3 }}>
<Stack spacing={6}>
<UserProfileNavigation
baseUrl={`/users/${address}`}
showPrivateTabs={
!!currentAccount && isSameAddress(currentAccount, address)
}
currentTab={currentTab}
/>
{children}
</Stack>
</GridItem>
</SimpleGrid>
</>
)
}
export default UserProfileTemplate