| import { GetServerSideProps } from 'next' |
|
|
| import { GraphqlPage } from '@/graphql/components/GraphqlPage' |
| import { |
| MainContextT, |
| MainContext, |
| getMainContext, |
| addUINamespaces, |
| } from '@/frame/components/context/MainContext' |
| import type { ObjectT, GraphqlT } from '@/graphql/components/types' |
| import { AutomatedPage } from '@/automated-pipelines/components/AutomatedPage' |
| import { |
| AutomatedPageContext, |
| AutomatedPageContextT, |
| getAutomatedPageContextFromRequest, |
| } from '@/automated-pipelines/components/AutomatedPageContext' |
|
|
| type Props = { |
| mainContext: MainContextT |
| automatedPageContext: AutomatedPageContextT |
| schema: object |
| language: string |
| graphqlPageName: string |
| objects?: ObjectT[] |
| } |
|
|
| export default function GraphqlReferencePage({ |
| mainContext, |
| automatedPageContext, |
| schema, |
| graphqlPageName, |
| objects, |
| }: Props) { |
| const content = ( |
| <GraphqlPage schema={schema} pageName={graphqlPageName} objects={objects || undefined} /> |
| ) |
| return ( |
| <MainContext.Provider value={mainContext}> |
| <AutomatedPageContext.Provider value={automatedPageContext}> |
| <AutomatedPage>{content}</AutomatedPage> |
| </AutomatedPageContext.Provider> |
| </MainContext.Provider> |
| ) |
| } |
|
|
| export const getServerSideProps: GetServerSideProps<Props> = async (context) => { |
| const { getGraphqlSchema, getMiniToc } = await import('@/graphql/lib/index') |
|
|
| const req = context.req as any |
| const res = context.res as any |
| const language = req.context.currentLanguage as string |
| const currentVersion = req.context.currentVersion as string |
| const page = context.query.page as string |
| const graphqlPageName = page === 'input-objects' ? 'inputObjects' : page |
|
|
| const schema = getGraphqlSchema(currentVersion, graphqlPageName) |
| |
| |
| const objects = |
| graphqlPageName === 'interfaces' ? getGraphqlSchema(currentVersion, 'objects') : null |
|
|
| |
| |
| |
| const automatedPageContext = getAutomatedPageContextFromRequest(req) |
|
|
| const items = schema.map((item: GraphqlT) => item.name) |
| const graphqlMiniTocItems = await getMiniToc(req.context, graphqlPageName, items) |
| |
| automatedPageContext.miniTocItems.push(...graphqlMiniTocItems) |
|
|
| const mainContext = await getMainContext(req, res) |
| addUINamespaces(req, mainContext.data.ui, ['graphql']) |
|
|
| return { |
| props: { |
| mainContext, |
| automatedPageContext, |
| schema, |
| language, |
| graphqlPageName, |
| objects, |
| }, |
| } |
| } |
|
|