From ef3a95affc3aac7d625e3b7e10642c23381f453a Mon Sep 17 00:00:00 2001 From: Echo Date: Wed, 5 Nov 2025 16:33:26 +0100 Subject: [PATCH] Add default visualizer for audio upload without poster (#36734) --- .../mastodon/features/audio/index.tsx | 94 +--------------- .../mastodon/features/audio/visualizer.tsx | 100 ++++++++++++++++++ .../features/compose/components/upload.tsx | 35 ++++-- .../material-icons/400-24px/audio.svg | 1 + .../styles/mastodon/components.scss | 31 +++++- 5 files changed, 160 insertions(+), 101 deletions(-) create mode 100644 app/javascript/mastodon/features/audio/visualizer.tsx create mode 100644 app/javascript/material-icons/400-24px/audio.svg diff --git a/app/javascript/mastodon/features/audio/index.tsx b/app/javascript/mastodon/features/audio/index.tsx index a6a131c0d..c16fd9eab 100644 --- a/app/javascript/mastodon/features/audio/index.tsx +++ b/app/javascript/mastodon/features/audio/index.tsx @@ -1,4 +1,4 @@ -import { useEffect, useRef, useCallback, useState, useId } from 'react'; +import { useEffect, useRef, useCallback, useState } from 'react'; import { defineMessages, useIntl, FormattedMessage } from 'react-intl'; @@ -22,6 +22,8 @@ import { useAudioVisualizer } from 'mastodon/hooks/useAudioVisualizer'; import { displayMedia, useBlurhash } from 'mastodon/initial_state'; import { playerSettings } from 'mastodon/settings'; +import { AudioVisualizer } from './visualizer'; + const messages = defineMessages({ play: { id: 'video.play', defaultMessage: 'Play' }, pause: { id: 'video.pause', defaultMessage: 'Pause' }, @@ -116,7 +118,6 @@ export const Audio: React.FC<{ const seekRef = useRef(null); const volumeRef = useRef(null); const hoverTimeoutRef = useRef | null>(); - const accessibilityId = useId(); const { audioContextRef, sourceRef, gainNodeRef, playAudio, pauseAudio } = useAudioContext({ audioElementRef: audioRef }); @@ -538,19 +539,6 @@ export const Audio: React.FC<{ [togglePlay, toggleMute], ); - const springForBand0 = useSpring({ - to: { r: 50 + (frequencyBands[0] ?? 0) * 10 }, - config: config.wobbly, - }); - const springForBand1 = useSpring({ - to: { r: 50 + (frequencyBands[1] ?? 0) * 10 }, - config: config.wobbly, - }); - const springForBand2 = useSpring({ - to: { r: 50 + (frequencyBands[2] ?? 0) * 10 }, - config: config.wobbly, - }); - const progress = Math.min((currentTime / loadedDuration) * 100, 100); const effectivelyMuted = muted || volume === 0; @@ -641,81 +629,7 @@ export const Audio: React.FC<{
- - - - - - - - - - - - - - - - - - - - - - +