From e9280ac84c5151fcb8d76b04b746d80e6850e0a8 Mon Sep 17 00:00:00 2001 From: "Tom (plebeius.eth)" Date: Sat, 12 Oct 2024 17:10:13 +0200 Subject: [PATCH] fix(post): a non-direct link could be marked as media instead of webpage --- src/lib/utils/media-utils.ts | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/lib/utils/media-utils.ts b/src/lib/utils/media-utils.ts index 4c2c59c0..fc83061f 100644 --- a/src/lib/utils/media-utils.ts +++ b/src/lib/utils/media-utils.ts @@ -80,20 +80,21 @@ export const getLinkMediaInfo = memoize( } try { - const fileName = url.pathname.split('/').pop() || ''; - if (fileName.includes('.')) { - mime = extName(fileName)[0]?.mime; - if (mime) { - if (mime.startsWith('image')) { - type = mime === 'image/gif' ? 'gif' : 'image'; - } else if (mime.startsWith('video')) { - type = 'video'; - } else if (mime.startsWith('audio')) { - type = 'audio'; - } + mime = extName(new URL(link).pathname.toLowerCase().replace('/', ''))[0]?.mime; + if (mime) { + if (mime.startsWith('image')) { + type = mime === 'image/gif' ? 'gif' : 'image'; + } else if (mime.startsWith('video')) { + type = 'video'; + } else if (mime.startsWith('audio')) { + type = 'audio'; } } + if (!url.pathname.includes('.')) { + type = 'webpage'; + } + if (canEmbed(url) || url.host.startsWith('yt.')) { type = 'iframe'; patternThumbnailUrl = getPatternThumbnailUrl(url);