diff --git a/src/components/event/textNote/AudioDisplay.tsx b/src/components/event/textNote/AudioDisplay.tsx new file mode 100644 index 0000000..dc0298b --- /dev/null +++ b/src/components/event/textNote/AudioDisplay.tsx @@ -0,0 +1,42 @@ +import { Component, createSignal, Show } from 'solid-js'; + +import LazyLoad from '@/components/utils/LazyLoad'; +import SafeLink from '@/components/utils/SafeLink'; +import { useTranslation } from '@/i18n/useTranslation'; + +type AudioDisplayProps = { + url: string; + initialHidden: boolean; +}; + +const AudioDisplay: Component = (props) => { + const i18n = useTranslation(); + const [hidden, setHidden] = createSignal(props.initialHidden); + + return ( + setHidden(false)} + > + {i18n.t('post.showAudio')} + + } + > + }> + {() => ( + + {/* eslint-disable-next-line jsx-a11y/media-has-caption */} + + + )} + + + ); +}; + +export default AudioDisplay; diff --git a/src/components/event/textNote/TextNoteContentDisplay.tsx b/src/components/event/textNote/TextNoteContentDisplay.tsx index 9875f2d..d30b6c3 100644 --- a/src/components/event/textNote/TextNoteContentDisplay.tsx +++ b/src/components/event/textNote/TextNoteContentDisplay.tsx @@ -5,6 +5,7 @@ import * as Kind from 'nostr-tools/kinds'; // eslint-disable-next-line import/no-cycle import EventDisplayById from '@/components/event/EventDisplayById'; // import ParameterizedReplaceableEventDisplayById from '@/components/event/ParameterizedReplaceableEventDisplayById'; +import AudioDisplay from '@/components/event/textNote/AudioDisplay'; import ImageDisplay from '@/components/event/textNote/ImageDisplay'; import MentionedEventDisplay from '@/components/event/textNote/MentionedEventDisplay'; import MentionedUserDisplay from '@/components/event/textNote/MentionedUserDisplay'; @@ -15,7 +16,7 @@ import { createRelaysColumn, createSearchColumn } from '@/core/column'; import useConfig from '@/core/useConfig'; import { useRequestCommand } from '@/hooks/useCommandBus'; import { ParsedTextNoteResolvedNode, type ParsedTextNoteResolved } from '@/nostr/parseTextNote'; -import { isImageUrl, isVideoUrl, isWebSocketUrl } from '@/utils/url'; +import { isImageUrl, isVideoUrl, isAudioUrl, isWebSocketUrl } from '@/utils/url'; export type TextNoteContentDisplayProps = { parsed: ParsedTextNoteResolved; @@ -54,6 +55,9 @@ const TextNoteContentDisplay = (props: TextNoteContentDisplayProps) => { if (isVideoUrl(item.content)) { return ; } + if (isAudioUrl(item.content)) { + return ; + } if (isWebSocketUrl(item.content)) { return (