Open
Description
I am trying to implement Authentication on my simple Gatsby App. When I try to wrap the class component with withAuthenticator , the GraphQL query no longer executes. When i remove the withAuthenticator it works fine. Can you please take a look and suggest an alternative.
import React, { Component } from 'react';
import Helmet from 'react-helmet';
import { graphql } from 'gatsby';
import MDXRenderer from 'gatsby-plugin-mdx/mdx-renderer';
import { Layout, Link } from '$components';
import NextPrevious from '../components/NextPrevious';
import config from '../../config';
import { Edit, StyledHeading, StyledMainWrapper } from '../components/styles/Docs';
import { withAuthenticator } from '@aws-amplify/ui-react';
const forcedNavOrder = config.sidebar.forcedNavOrder;
class MDXRuntimeTest extends Component {
render() {
const { data } = this.props;
if (!data) {
return null;
}
const {
allMdx,
mdx,
site: {
siteMetadata: { docsLocation, title },
},
} = data;
const gitHub = require('../components/images/github.svg');
const navItems = allMdx.edges
.map(({ node }) => node.fields.slug)
.filter(slug => slug !== '/')
.sort()
.reduce(
(acc, cur) => {
if (forcedNavOrder.find(url => url === cur)) {
return { ...acc, [cur]: [cur] };
}
let prefix = cur.split('/')[1];
if (config.gatsby && config.gatsby.trailingSlash) {
prefix = prefix + '/';
}
if (prefix && forcedNavOrder.find(url => url === `/${prefix}`)) {
return { ...acc, [`/${prefix}`]: [...acc[`/${prefix}`], cur] };
} else {
return { ...acc, items: [...acc.items, cur] };
}
},
{ items: [] }
);
const nav = forcedNavOrder
.reduce((acc, cur) => {
return acc.concat(navItems[cur]);
}, [])
.concat(navItems.items)
.map(slug => {
if (slug) {
const { node } = allMdx.edges.find(({ node }) => node.fields.slug === slug);
return { title: node.fields.title, url: node.fields.slug };
}
});
// meta tags
const metaTitle = mdx.frontmatter.metaTitle;
const metaDescription = mdx.frontmatter.metaDescription;
let canonicalUrl = config.gatsby.siteUrl;
canonicalUrl =
config.gatsby.pathPrefix !== '/' ? canonicalUrl + config.gatsby.pathPrefix : canonicalUrl;
canonicalUrl = canonicalUrl + mdx.fields.slug;
return (
<Layout {...this.props}>
<Helmet>
{metaTitle ? <title>{metaTitle}</title> : null}
{metaTitle ? <meta name="title" content={metaTitle} /> : null}
{metaDescription ? <meta name="description" content={metaDescription} /> : null}
{metaTitle ? <meta property="og:title" content={metaTitle} /> : null}
{metaDescription ? <meta property="og:description" content={metaDescription} /> : null}
{metaTitle ? <meta property="twitter:title" content={metaTitle} /> : null}
{metaDescription ? (
<meta property="twitter:description" content={metaDescription} />
) : null}
<link rel="canonical" href={canonicalUrl} />
</Helmet>
<div className={'titleWrapper'}>
<StyledHeading>{mdx.fields.title}</StyledHeading>
<Edit className={'mobileView'}>
{docsLocation && (
<Link className={'gitBtn'} to={`${docsLocation}/${mdx.parent.relativePath}`}>
<img src={gitHub} alt={'Github logo'} /> Edit on GitHub
</Link>
)}
</Edit>
</div>
<StyledMainWrapper>
<MDXRenderer>{mdx.body}</MDXRenderer>
</StyledMainWrapper>
<div className={'addPaddTopBottom'}>
<NextPrevious mdx={mdx} nav={nav} />
</div>
</Layout>
);
}
}
export default withAuthenticator(MDXRuntimeTest);
export const pageQuery = graphql`
query($id: String!) {
site {
siteMetadata {
title
docsLocation
}
}
mdx(fields: { id: { eq: $id } }) {
fields {
id
title
slug
}
body
tableOfContents
parent {
... on File {
relativePath
}
}
frontmatter {
metaTitle
metaDescription
}
}
allMdx {
edges {
node {
fields {
slug
title
}
}
}
}
}
`;
Metadata
Metadata
Assignees
Labels
No labels