diff --git a/src/Const.js b/src/Const.js index cc7c7ed5..13ba72ee 100644 --- a/src/Const.js +++ b/src/Const.js @@ -56,4 +56,9 @@ export const MentionRegex = /(#\[\d+\])/gi; /** * Simple lightning invoice regex */ -export const InvoiceRegex = /(lnbc\w+)/i; \ No newline at end of file +export const InvoiceRegex = /(lnbc\w+)/i; + +/** + * YouTube URL regex + */ +export const YoutubeUrlRegex = /^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/ diff --git a/src/Text.js b/src/Text.js index 8107d3d6..2dc7723a 100644 --- a/src/Text.js +++ b/src/Text.js @@ -1,53 +1,63 @@ import { Link } from "react-router-dom"; import Invoice from "./element/Invoice"; -import { UrlRegex, FileExtensionRegex, MentionRegex, InvoiceRegex } from "./Const"; +import { UrlRegex, FileExtensionRegex, MentionRegex, InvoiceRegex, YoutubeUrlRegex } from "./Const"; import { eventLink, profileLink } from "./Util"; +function transformHttpLink(a) { + try { + const url = new URL(a); + const vParam = url.searchParams.get('v') + const youtubeId = YoutubeUrlRegex.test(a) && RegExp.$1 + const extension = FileExtensionRegex.test(url.pathname.toLowerCase()) && RegExp.$1 + if (extension) { + switch (extension) { + case "gif": + case "jpg": + case "jpeg": + case "png": + case "bmp": + case "webp": { + return ; + } + case "mp4": + case "mov": + case "mkv": + case "avi": + case "m4v": { + return