From 0be1d0b72fdc092cc9edae64796f865aeaf05dbf Mon Sep 17 00:00:00 2001
From: khalilcodes
Date: Wed, 18 May 2022 18:59:05 +0300
Subject: [PATCH] [site/mdx][xs]: refactor code for youtube regex
---
site/components/MDX.js | 112 +++++++++++++++++++++++++----------------
1 file changed, 70 insertions(+), 42 deletions(-)
diff --git a/site/components/MDX.js b/site/components/MDX.js
index fe906ff..c704c05 100644
--- a/site/components/MDX.js
+++ b/site/components/MDX.js
@@ -1,37 +1,49 @@
-import Head from 'next/head'
-import ReactPlayer from 'react-player/lazy'
-import { Paragraph } from './Link'
-import { NextSeo } from 'next-seo'
-import siteConfig from "../config/siteConfig"
+import Head from "next/head";
+import ReactPlayer from "react-player/lazy";
+import { Paragraph } from "./Link";
+import { NextSeo } from "next-seo";
+import siteConfig from "../config/siteConfig";
+import { YOUTUBE_REGEX } from "../lib/constants";
const components = {
Head,
- p: Paragraph
-}
+ p: Paragraph,
+};
export default function MdxPage({ children, editUrl }) {
- const { Component, frontmatter: {
- title, description, date, authors, youtube, podcast, image, _raw
- }} = children
+ const {
+ Component,
+ frontmatter: {
+ title,
+ description,
+ date,
+ authors,
+ youtube,
+ podcast,
+ image,
+ _raw,
+ },
+ } = children;
- let youtubeThumnbnail
- let podcastEmbed
+ let youtubeThumnbnail;
+ let podcastEmbed;
- if (youtube && !image) {
+ if (youtube && YOUTUBE_REGEX.test(youtube) && !image) {
// get the youtube thumbnail image from https://img.youtube.com/vi//maxresdefault.jpg
- const regex =
- /\www.youtube.com\/\embed\/|youtube.com\/\embed\/|youtu.be\/|\www.youtube.com\/\watch\?v=|\youtube.com\/\watch\?v=/;
- youtubeThumnbnail =
- youtube.replace(regex, "img.youtube.com/vi/") + "/maxresdefault.jpg";
+ const youtubeId = youtube.split(/^|=|\//).pop();
+ youtubeThumnbnail = youtube.replace(
+ YOUTUBE_REGEX,
+ `https://img.youtube.com/vi/${youtubeId}/maxresdefault.jpg`
+ );
}
if (podcast && podcast.includes("life-itself")) {
- const podcastUrl = podcast
- podcastEmbed = ([
+ const podcastUrl = podcast;
+ podcastEmbed = [
podcastUrl.slice(0, "https://anchor.fm/life-itself".length),
"/embed",
- podcastUrl.slice("https://anchor.fm/life-itself".length)
- ].join(""))
+ podcastUrl.slice("https://anchor.fm/life-itself".length),
+ ].join("");
}
const titleFromUrl = _raw.flattenedPath
@@ -44,7 +56,9 @@ export default function MdxPage({ children, editUrl }) {
const SeoTitle = title ?? titleFromUrl;
const imageUrl = image
? siteConfig.url + image
- : youtubeThumnbnail ? youtubeThumnbnail : null
+ : youtubeThumnbnail
+ ? youtubeThumnbnail
+ : null;
return (
<>
@@ -56,15 +70,15 @@ export default function MdxPage({ children, editUrl }) {
title: SeoTitle,
description: description,
images: imageUrl
- ? ([
+ ? [
{
url: imageUrl,
width: 1200,
height: 627,
alt: title,
- type: "image/png"
+ type: "image/png",
},
- ])
+ ]
: siteConfig.nextSeo.openGraph.images,
}}
/>
@@ -82,10 +96,8 @@ export default function MdxPage({ children, editUrl }) {
on {date}
)}
- {description && (
- {description}
- )}
- {youtube && (
+ {description && {description}
}
+ {youtube && YOUTUBE_REGEX.test(youtube) && (
-
-
- {editUrl && (
- )}
+
+
+ {editUrl && (
+
+ )}
>