fix: handle URL parsing error in imageUrl

This commit is contained in:
Shusui MOYATANI
2023-04-06 19:31:44 +09:00
parent cbabcf1487
commit a532d5ebf5
3 changed files with 10 additions and 3 deletions

View File

@@ -3,6 +3,7 @@ import parseTextNote, { resolveTagReference, type ParsedTextNoteNode } from '@/c
import type { Event as NostrEvent } from 'nostr-tools'; import type { Event as NostrEvent } from 'nostr-tools';
import PlainTextDisplay from '@/components/textNote/PlainTextDisplay'; import PlainTextDisplay from '@/components/textNote/PlainTextDisplay';
import MentionedUserDisplay from '@/components/textNote/MentionedUserDisplay'; import MentionedUserDisplay from '@/components/textNote/MentionedUserDisplay';
// eslint-disable-next-line import/no-cycle
import MentionedEventDisplay from '@/components/textNote/MentionedEventDisplay'; import MentionedEventDisplay from '@/components/textNote/MentionedEventDisplay';
import ImageDisplay from '@/components/textNote/ImageDisplay'; import ImageDisplay from '@/components/textNote/ImageDisplay';
import SafeLink from '@/components/utils/SafeLink'; import SafeLink from '@/components/utils/SafeLink';
@@ -59,7 +60,7 @@ const TextNoteContentDisplay = (props: TextNoteContentDisplayProps) => {
return <span class="text-blue-500 underline">{item.content}</span>; return <span class="text-blue-500 underline">{item.content}</span>;
} }
if (item.type === 'URL') { if (item.type === 'URL') {
if (isImageUrl(new URL(item.content))) { if (isImageUrl(item.content)) {
return ( return (
<ImageDisplay <ImageDisplay
url={item.content} url={item.content}

View File

@@ -1,5 +1,6 @@
import { Switch, Match, type Component } from 'solid-js'; import { Switch, Match, type Component } from 'solid-js';
// eslint-disable-next-line import/no-cycle
import TextNoteDisplay, { type TextNoteDisplayProps } from '@/components/textNote/TextNoteDisplay'; import TextNoteDisplay, { type TextNoteDisplayProps } from '@/components/textNote/TextNoteDisplay';
import useConfig from '@/nostr/useConfig'; import useConfig from '@/nostr/useConfig';

View File

@@ -1,5 +1,10 @@
export const isImageUrl = (url: URL): boolean => { export const isImageUrl = (urlString: string): boolean => {
try {
const url = new URL(urlString);
return /\.(jpeg|jpg|png|gif|webp)$/i.test(url.pathname); return /\.(jpeg|jpg|png|gif|webp)$/i.test(url.pathname);
} catch {
return false;
}
}; };
export const fixUrl = (urlString: string): string => { export const fixUrl = (urlString: string): string => {