Skip to content

Commit

Permalink
fix(v2): DocSearch should keep working after a new release (#3393)
Browse files Browse the repository at this point in the history
* We should create an alias for searching last version of docs on DocSearch/Algolia, so that on new version publish, search still works even if new version is not already indexed (#3391)

* commit missing snapshot

* update after algolia changes

* put back facetFilters: [`version:${versions[0]}`] until latest facet is indexed
  • Loading branch information
slorber authored Sep 3, 2020
1 parent 3ace600 commit 9c34f68
Show file tree
Hide file tree
Showing 7 changed files with 57 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -291,6 +291,7 @@ Object {
"version-current-metadata-prop-751.json": "{
\\"version\\": \\"current\\",
\\"label\\": \\"Next\\",
\\"isLast\\": true,
\\"docsSidebars\\": {
\\"docs\\": [
{
Expand Down Expand Up @@ -615,6 +616,7 @@ Object {
"version-1-0-0-metadata-prop-608.json": "{
\\"version\\": \\"1.0.0\\",
\\"label\\": \\"1.0.0\\",
\\"isLast\\": true,
\\"docsSidebars\\": {
\\"version-1.0.0/community\\": [
{
Expand All @@ -631,6 +633,7 @@ Object {
"version-current-metadata-prop-751.json": "{
\\"version\\": \\"current\\",
\\"label\\": \\"Next\\",
\\"isLast\\": false,
\\"docsSidebars\\": {
\\"community\\": [
{
Expand Down Expand Up @@ -1073,6 +1076,7 @@ Object {
"version-1-0-0-metadata-prop-608.json": "{
\\"version\\": \\"1.0.0\\",
\\"label\\": \\"1.0.0\\",
\\"isLast\\": false,
\\"docsSidebars\\": {
\\"version-1.0.0/docs\\": [
{
Expand Down Expand Up @@ -1115,6 +1119,7 @@ Object {
"version-1-0-1-metadata-prop-e87.json": "{
\\"version\\": \\"1.0.1\\",
\\"label\\": \\"1.0.1\\",
\\"isLast\\": true,
\\"docsSidebars\\": {
\\"version-1.0.1/docs\\": [
{
Expand Down Expand Up @@ -1151,6 +1156,7 @@ Object {
"version-current-metadata-prop-751.json": "{
\\"version\\": \\"current\\",
\\"label\\": \\"Next\\",
\\"isLast\\": false,
\\"docsSidebars\\": {
\\"docs\\": [
{
Expand Down Expand Up @@ -1187,6 +1193,7 @@ Object {
"version-with-slugs-metadata-prop-2bf.json": "{
\\"version\\": \\"withSlugs\\",
\\"label\\": \\"withSlugs\\",
\\"isLast\\": false,
\\"docsSidebars\\": {
\\"version-1.0.1/docs\\": [
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ declare module '@docusaurus/plugin-content-docs-types' {
export type PropVersionMetadata = {
version: string;
label: string;
isLast: boolean;
docsSidebars: PropSidebars;
permalinkToSidebar: PermalinkToSidebar;
};
Expand Down
1 change: 1 addition & 0 deletions packages/docusaurus-plugin-content-docs/src/props.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ export function toVersionMetadataProp(
return {
version: loadedVersion.versionName,
label: loadedVersion.versionLabel,
isLast: loadedVersion.isLast,
docsSidebars: toSidebarsProp(loadedVersion),
permalinkToSidebar: loadedVersion.permalinkToSidebar,
};
Expand Down
66 changes: 47 additions & 19 deletions packages/docusaurus-theme-classic/src/theme/DocPage/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import NotFound from '@theme/NotFound';
import type {DocumentRoute} from '@theme/DocItem';
import type {Props} from '@theme/DocPage';
import {matchPath} from '@docusaurus/router';
import Head from '@docusaurus/Head';

import styles from './styles.module.css';

Expand All @@ -27,34 +28,61 @@ type DocPageContentProps = {
readonly children: ReactNode;
};

// This theme is not coupled to Algolia, but can we do something else?
// Note the last version is also indexed with "last", to avoid breaking search on new releases
// See https://github.com/facebook/docusaurus/issues/3391
function DocSearchVersionHeader({
version,
isLast,
}: {
version: string;
isLast: boolean;
}) {
const versions = isLast ? [version, 'latest'] : [version];
return (
<Head>
<meta
name="docsearch:version"
content={
// See https://github.com/facebook/docusaurus/issues/3391#issuecomment-685594160
versions.join(',')
}
/>
</Head>
);
}

function DocPageContent({
currentDocRoute,
versionMetadata,
children,
}: DocPageContentProps): JSX.Element {
const {siteConfig, isClient} = useDocusaurusContext();
const {permalinkToSidebar, docsSidebars, version} = versionMetadata;
const {permalinkToSidebar, docsSidebars, version, isLast} = versionMetadata;
const sidebarName = permalinkToSidebar[currentDocRoute.path];
const sidebar = docsSidebars[sidebarName];
return (
<Layout version={version} key={isClient}>
<div className={styles.docPage}>
{sidebar && (
<div className={styles.docSidebarContainer} role="complementary">
<DocSidebar
sidebar={sidebar}
path={currentDocRoute.path}
sidebarCollapsible={
siteConfig.themeConfig?.sidebarCollapsible ?? true
}
/>
</div>
)}
<main className={styles.docMainContainer}>
<MDXProvider components={MDXComponents}>{children}</MDXProvider>
</main>
</div>
</Layout>
<>
<DocSearchVersionHeader version={version} isLast={isLast} />
<Layout key={isClient}>
<div className={styles.docPage}>
{sidebar && (
<div className={styles.docSidebarContainer} role="complementary">
<DocSidebar
sidebar={sidebar}
path={currentDocRoute.path}
sidebarCollapsible={
siteConfig.themeConfig?.sidebarCollapsible ?? true
}
/>
</div>
)}
<main className={styles.docMainContainer}>
<MDXProvider components={MDXComponents}>{children}</MDXProvider>
</main>
</div>
</Layout>
</>
);
}

Expand Down
2 changes: 0 additions & 2 deletions packages/docusaurus-theme-classic/src/theme/Layout/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ function Layout(props: Props): JSX.Element {
image,
keywords,
permalink,
version,
} = props;
const metaTitle = title ? `${title} | ${siteTitle}` : siteTitle;
const metaImage = image || defaultImage;
Expand All @@ -63,7 +62,6 @@ function Layout(props: Props): JSX.Element {
{description && (
<meta property="og:description" content={description} />
)}
{version && <meta name="docsearch:version" content={version} />}
{keywords && keywords.length && (
<meta name="keywords" content={keywords.join(',')} />
)}
Expand Down
1 change: 0 additions & 1 deletion packages/docusaurus-theme-classic/src/types.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,6 @@ declare module '@theme/Layout' {
image?: string;
keywords?: string[];
permalink?: string;
version?: string;
};

const Layout: (props: Props) => JSX.Element;
Expand Down
1 change: 1 addition & 0 deletions website/docusaurus.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,7 @@ module.exports = {
apiKey: '47ecd3b21be71c5822571b9f59e52544',
indexName: 'docusaurus-2',
searchParameters: {
// facetFilters: [`version:latest`],
facetFilters: [`version:${versions[0]}`],
},
},
Expand Down

0 comments on commit 9c34f68

Please sign in to comment.