about summary refs log tree commit diff
diff options
context:
space:
mode:
authorHailey <me@haileyok.com>2024-08-13 17:35:05 -0700
committerGitHub <noreply@github.com>2024-08-13 17:35:05 -0700
commit26d3777ecc7192835f4b14a9fad775d8044e29f9 (patch)
treecb3a7e2721175d45952b678472acc1d5eac20b8a
parent630ebf523d2e70db295ef1dc1705ea38c05104af (diff)
downloadvoidsky-26d3777ecc7192835f4b14a9fad775d8044e29f9.tar.zst
Add `/live/` to supported YouTube embed URLs (#4932)
-rw-r--r--__tests__/lib/string.test.ts8
-rw-r--r--src/lib/strings/embed-player.ts15
2 files changed, 18 insertions, 5 deletions
diff --git a/__tests__/lib/string.test.ts b/__tests__/lib/string.test.ts
index 0da9551e3..f226de992 100644
--- a/__tests__/lib/string.test.ts
+++ b/__tests__/lib/string.test.ts
@@ -340,12 +340,14 @@ describe('parseEmbedPlayerFromUrl', () => {
     'https://youtube.com/watch?v=videoId',
     'https://youtube.com/watch?v=videoId&feature=share',
     'https://youtube.com/shorts/videoId',
+    'https://youtube.com/live/videoId',
     'https://m.youtube.com/watch?v=videoId',
     'https://music.youtube.com/watch?v=videoId',
 
     'https://youtube.com/shorts/',
     'https://youtube.com/',
     'https://youtube.com/random',
+    'https://youtube.com/live/',
 
     'https://twitch.tv/channelName',
     'https://www.twitch.tv/channelName',
@@ -475,10 +477,16 @@ describe('parseEmbedPlayerFromUrl', () => {
       source: 'youtube',
       playerUri: 'https://bsky.app/iframe/youtube.html?videoId=videoId&start=0',
     },
+    {
+      type: 'youtube_video',
+      source: 'youtube',
+      playerUri: 'https://bsky.app/iframe/youtube.html?videoId=videoId&start=0',
+    },
 
     undefined,
     undefined,
     undefined,
+    undefined,
 
     {
       type: 'twitch_video',
diff --git a/src/lib/strings/embed-player.ts b/src/lib/strings/embed-player.ts
index 44e42fae1..3bae771c0 100644
--- a/src/lib/strings/embed-player.ts
+++ b/src/lib/strings/embed-player.ts
@@ -103,16 +103,21 @@ export function parseEmbedPlayerFromUrl(
     urlp.hostname === 'm.youtube.com' ||
     urlp.hostname === 'music.youtube.com'
   ) {
-    const [_, page, shortVideoId] = urlp.pathname.split('/')
+    const [_, page, shortOrLiveVideoId] = urlp.pathname.split('/')
+
+    const isShorts = page === 'shorts'
+    const isLive = page === 'live'
     const videoId =
-      page === 'shorts' ? shortVideoId : (urlp.searchParams.get('v') as string)
+      isShorts || isLive
+        ? shortOrLiveVideoId
+        : (urlp.searchParams.get('v') as string)
     const seek = encodeURIComponent(urlp.searchParams.get('t') ?? 0)
 
     if (videoId) {
       return {
-        type: page === 'shorts' ? 'youtube_short' : 'youtube_video',
-        source: page === 'shorts' ? 'youtubeShorts' : 'youtube',
-        hideDetails: page === 'shorts' ? true : undefined,
+        type: isShorts ? 'youtube_short' : 'youtube_video',
+        source: isShorts ? 'youtubeShorts' : 'youtube',
+        hideDetails: isShorts ? true : undefined,
         playerUri: `${IFRAME_HOST}/iframe/youtube.html?videoId=${videoId}&start=${seek}`,
       }
     }