1
0
mirror of synced 2025-12-21 19:06:49 -05:00
Files
docs/components/context/ArticleContext.tsx
Grace Park 27aa5d92ea Remove FEATURE_NEXTJS Flag Part 1 (#20176)
* cleanup FEATURE_NEXTJS

* fixing some server tests

* updating article a for server tests

* update h2 to h4 map topic tests

* data off on TOCs

* updating dropdown article versions links

* Update so markdown renders in intros

* updating typo and all server tests are now passing

* remove nextjs feature flag

* head.js tests pass

* updating article-version-picker

* remove nextjs feature flag browser test

* update header.js tests

* fix page-titles.js test

* fix deprecated-enterprise versions

* adding early access

* testing

* getting childTocItem

* fixing table of contents to show child toc items

* updated to 2 because the sidebar article also has the same link

* remove comment

* updating pick

* Update TocLandingContext.tsx

* update package.json and change className to h4 for h2

* updating with mikes feedback

* remove a.active test

* React clean up: Delete unnecessary layouts/includes Part 2 (#20143)

* Delete unnecessary layouts

* setting back tests failing :(

* update layouts

* delete unnecessary includes

* remove github-ae-release-notes and updating layouts

* remove a.active test
2021-07-16 14:54:25 -07:00

62 lines
1.7 KiB
TypeScript

import { createContext, useContext } from 'react'
export type LearningTrack = {
trackName?: string
prevGuide?: { href: string; title: string }
nextGuide?: { href: string; title: string }
}
export type MiniTocItem = {
indentationLevel: number
platform: string
contents: string
}
export type ArticleContextT = {
title: string
intro: string
renderedPage: string
miniTocItems: Array<MiniTocItem>
contributor: { name: string; URL: string } | null
permissions?: string
includesPlatformSpecificContent: boolean
defaultPlatform?: string
product?: string
currentLearningTrack?: LearningTrack
}
export const ArticleContext = createContext<ArticleContextT | null>(null)
export const useArticleContext = (): ArticleContextT => {
const context = useContext(ArticleContext)
if (!context) {
throw new Error('"useArticleContext" may only be used inside "ArticleContext.Provider"')
}
return context
}
export const getArticleContextFromRequest = (req: any): ArticleContextT => {
const page = req.context.page
return {
title: page.titlePlainText,
intro: page.intro,
renderedPage: req.context.renderedPage || '',
miniTocItems:
(req.context.miniTocItems || []).map((item: any) => {
return {
indentationLevel: item.indentationLevel || 0,
platform: item.platform || '',
contents: item.contents || '',
}
}) || [],
contributor: page.contributor || null,
permissions: page.permissions || '',
includesPlatformSpecificContent: page.includesPlatformSpecificContent || false,
defaultPlatform: page.defaultPlatform || '',
product: page.product || '',
currentLearningTrack: req.context.currentLearningTrack,
}
}