Преглед на файлове

feat: add support for val.town embeds (#6821)

Achille Lacoin преди 2 години
родител
ревизия
1acc646534
променени са 1 файла, в които са добавени 12 реда и са изтрити 0 реда
  1. 12 0
      src/element/embeddable.ts

+ 12 - 0
src/element/embeddable.ts

@@ -40,6 +40,9 @@ const RE_TWITTER = /(?:http(?:s)?:\/\/)?(?:(?:w){3}.)?twitter.com/;
 const RE_TWITTER_EMBED =
 const RE_TWITTER_EMBED =
   /^<blockquote[\s\S]*?\shref=["'](https:\/\/twitter.com\/[^"']*)/i;
   /^<blockquote[\s\S]*?\shref=["'](https:\/\/twitter.com\/[^"']*)/i;
 
 
+const RE_VALTOWN =
+  /^https:\/\/(?:www\.)?val.town\/(v|embed)\/[a-zA-Z_$][0-9a-zA-Z_$]+\.[a-zA-Z_$][0-9a-zA-Z_$]+/;
+
 const RE_GENERIC_EMBED =
 const RE_GENERIC_EMBED =
   /^<(?:iframe|blockquote)[\s\S]*?\s(?:src|href)=["']([^"']*)["'][\s\S]*?>$/i;
   /^<(?:iframe|blockquote)[\s\S]*?\s(?:src|href)=["']([^"']*)["'][\s\S]*?>$/i;
 
 
@@ -53,6 +56,7 @@ const ALLOWED_DOMAINS = new Set([
   "gist.github.com",
   "gist.github.com",
   "twitter.com",
   "twitter.com",
   "stackblitz.com",
   "stackblitz.com",
+  "val.town",
 ]);
 ]);
 
 
 const createSrcDoc = (body: string) => {
 const createSrcDoc = (body: string) => {
@@ -122,6 +126,14 @@ export const getEmbedLink = (link: string | null | undefined): EmbeddedLink => {
     return { link, aspectRatio, type };
     return { link, aspectRatio, type };
   }
   }
 
 
+  const valLink = link.match(RE_VALTOWN);
+  if (valLink) {
+    link =
+      valLink[1] === "embed" ? valLink[0] : valLink[0].replace("/v", "/embed");
+    embeddedLinkCache.set(originalLink, { link, aspectRatio, type });
+    return { link, aspectRatio, type };
+  }
+
   if (RE_TWITTER.test(link)) {
   if (RE_TWITTER.test(link)) {
     let ret: EmbeddedLink;
     let ret: EmbeddedLink;
     // assume embed code
     // assume embed code