rsnext/examples/with-iron-session/pages/profile-sg.tsx
Vincent Voyer 942c15129c
docs(examples): Update with-iron-session to latest iron-session API (#30956)
Co-authored-by: Lee Robinson <me@leerob.io>
2021-11-09 09:30:15 -06:00

50 lines
1.4 KiB
TypeScript

import React from 'react'
import Layout from 'components/Layout'
import useUser from 'lib/useUser'
import useEvents from 'lib/useEvents'
// Make sure to check https://nextjs.org/docs/basic-features/layouts for more info on how to use layouts
export default function SgProfile() {
const { user } = useUser({
redirectTo: '/login',
})
const { events } = useEvents(user)
return (
<Layout>
<h1>Your GitHub profile</h1>
<h2>
This page uses{' '}
<a href="https://nextjs.org/docs/basic-features/pages#static-generation-recommended">
Static Generation (SG)
</a>{' '}
and the <a href="/api/user">/api/user</a> route (using{' '}
<a href="https://github.com/vercel/swr">vercel/SWR</a>)
</h2>
{user && (
<>
<p style={{ fontStyle: 'italic' }}>
Public data, from{' '}
<a href={`https://github.com/${user.login}`}>
https://github.com/{user.login}
</a>
, reduced to `login` and `avatar_url`.
</p>
<pre>{JSON.stringify(user, null, 2)}</pre>
</>
)}
{events !== undefined && (
<p>
Number of GitHub events for user: <b>{events.length}</b>.{' '}
{events.length > 0 && (
<>
Last event type: <b>{events[0].type}</b>
</>
)}
</p>
)}
</Layout>
)
}