Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 34 additions & 12 deletions pages/_app.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import { urlQlient } from "../src/graphql/urql";
import { isAuthenticatedAtom } from "../src/helpers/auth";
import { GlobalStyles } from "../styles/globalStyles";
import { jsconfTheme } from "../styles/theme";
import { PublicTicketPageMetaTags } from "../src/Components/PublicTicketMetatag";

const WebSchema = dynamic(
async () => await import("../src/Components/schema/webpage"),
Expand Down Expand Up @@ -130,19 +131,40 @@ const AppWithQueryClients = ({
);
};

function AppWithDataStorage({ Component, pageProps }: AppPropsWithLayout) {
const ticketApiUrl = process.env.NEXT_PUBLIC_WORKER_IMAGE_API!;

function AppWithDataStorage({
Component,
pageProps,
router,
}: AppPropsWithLayout) {
const ticketId = router.query.id as string;
const isPublicTicketPage =
router.pathname.startsWith("/p/ticket/") && ticketId;
return (
<JotaiProvider>
<FlagsmithProvider
options={{
environmentID: process.env.NEXT_PUBLIC_FLAGSMITH_KEY,
cacheFlags: true,
}}
flagsmith={flagsmith}
>
<AppWithQueryClients Component={Component} pageProps={pageProps} />
</FlagsmithProvider>
</JotaiProvider>
<>
{isPublicTicketPage && (
// En Facebook, los meta-tags tienen que poder verse dentro de los
// primero 50kb del HTML descargado. Considerando la cantidad de
// componentes q tenemos, facebook no lee los metatags creados en `/pages/p/ticket/[id]`.
// Por eso, los generamos acá como un 'Best Effort'
<PublicTicketPageMetaTags
ticketApiUrl={ticketApiUrl}
ticketId={ticketId}
/>
)}
<JotaiProvider>
<FlagsmithProvider
options={{
environmentID: process.env.NEXT_PUBLIC_FLAGSMITH_KEY,
cacheFlags: true,
}}
flagsmith={flagsmith}
>
<AppWithQueryClients Component={Component} pageProps={pageProps} />
</FlagsmithProvider>
</JotaiProvider>
</>
);
}

Expand Down
40 changes: 40 additions & 0 deletions src/Components/PublicTicketMetatag/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import Head from "next/head";

export const PublicTicketPageMetaTags = ({
ticketApiUrl,
ticketId,
}: {
ticketApiUrl: string;
ticketId: string;
}) => {
return (
<Head>
<meta
name="description"
content="Mi Ticket para la JSConf Chile. Obtén tu ticket acá!"
/>
<meta property="og:url" content="https://jsconf.cl/tickets" />
<meta property="og:type" content="website" />
<meta
property="og:description"
content="Mi Ticket para la JSConf Chile. Obtén tu ticket acá!"
/>
<meta
property="og:image"
content={`${ticketApiUrl}/ticket/image/${ticketId}`}
/>

<meta name="twitter:card" content="summary_large_image" />
<meta property="twitter:domain" content="jsconf.cl" />
<meta property="twitter:url" content="https://jsconf.cl/tickets" />
<meta
name="twitter:description"
content="Mi Ticket para la JSConf Chile. Obtén tu ticket acá!"
/>
<meta
name="twitter:image"
content={`${ticketApiUrl}/ticket/image/${ticketId}`}
/>
</Head>
);
};