@@ -5,31 +5,22 @@ import { getMDXComponents } from '@/mdx-components';
55import type { Metadata } from 'next' ;
66import { createCustomRelativeLink } from '@/lib/mdx-link' ;
77import Link from 'next/link' ;
8- import { ViewOptions } from '../components/page-actions ' ;
8+ import { ViewOptions , generateMetadataForPlugin } from '@/app/docs/components ' ;
99
10- export default async function Page ( props : PageProps < '/docs/[...slug]' > ) {
10+ type CurrentPageProps = PageProps < '/docs/[plugin]/[version]/[...slug]' > ;
11+
12+ export default async function Page ( props : CurrentPageProps ) {
1113 const params = await props . params ;
14+ const pluginName = params . plugin ;
15+ const version = params . version ;
1216 const slugs = params . slug || [ ] ;
13- const pluginName = slugs [ 0 ] ;
14- const version = slugs [ 1 ] ?? null ;
15- const restSlugs = version ? slugs . slice ( 2 ) : slugs . slice ( 1 ) ;
16-
17- // If version is not specified, try redirect to latest version
18- if ( ! version ) {
19- const latestVersion = getLatestVersion ( pluginName ) ;
20- if ( ! latestVersion ) {
21- // Plugin doesn't exist, show 404
22- return notFound ( ) ;
23- }
24- return redirect ( `/docs/${ [ pluginName , latestVersion ] . join ( '/' ) } ` ) ;
25- }
2617
2718 // If missing which page to load, default to 'overview'
28- if ( restSlugs . length === 0 ) {
19+ if ( slugs . length === 0 ) {
2920 return redirect ( `/docs/${ [ pluginName , version , 'overview' ] . join ( '/' ) } ` ) ;
3021 }
3122
32- const finalSlugs = [ pluginName , version , ...restSlugs ] ;
23+ const finalSlugs = [ pluginName , version , ...slugs ] ;
3324 const page = source . getPage ( finalSlugs ) ;
3425
3526 // console.debug('Resolved final slugs for page:', finalSlugs, { pageExists: !!page });
@@ -72,24 +63,36 @@ export default async function Page(props: PageProps<'/docs/[...slug]'>) {
7263}
7364
7465export async function generateStaticParams ( ) {
75- return source . generateParams ( ) ;
66+ const slugs = source . generateParams ( ) ;
67+ const params : { plugin : string , version : string , slug : string [ ] } [ ] = [ ] ;
68+
69+ Array . from ( slugs ) . forEach ( ( array ) => {
70+ const slugArray = array [ 'slug' ] ;
71+ const plugin = slugArray [ 0 ] ;
72+ const version = slugArray [ 1 ] ;
73+ const rest = slugArray . slice ( 2 ) ;
74+ params . push ( { plugin, version, slug : rest } ) ;
75+ } ) ;
76+
77+ return params ;
7678}
7779
78- export async function generateMetadata ( props : PageProps < '/docs/[...slug]' > ) : Promise < Metadata > {
80+ export async function generateMetadata ( props : CurrentPageProps ) : Promise < Metadata > {
7981 const params = await props . params ;
80- const slugs = params . slug || [ ] ;
81- const pluginName = slugs [ 0 ] ;
82- const page = source . getPage ( slugs ) ;
83- if ( ! page ) notFound ( ) ;
82+ const pluginName = params . plugin ;
83+
84+ return generateMetadataForPlugin ( pluginName ) ?? notFound ( ) ;
85+ // const page = source.getPage([pluginName, version, ...slugs]);
86+ // if (!page) notFound();
8487
85- return {
86- title : page . data . title ,
87- description : page . data . description ,
88- openGraph : {
89- images : [
90- getPluginImage ( pluginName ) . url ,
91- // getPageImage(page).url,
92- ] ,
93- } ,
94- } ;
88+ // return {
89+ // title: page.data.title,
90+ // description: page.data.description,
91+ // openGraph: {
92+ // images: [
93+ // getPluginImage(pluginName).url,
94+ // // getPageImage(page).url,
95+ // ],
96+ // },
97+ // };
9598}
0 commit comments