import { useEffect } from 'react'; import { getAverageFromBlurhash } from 'mastodon/blurhash'; import type { RGB } from 'mastodon/blurhash'; import { Audio } from 'mastodon/features/audio'; import { Footer } from 'mastodon/features/picture_in_picture/components/footer'; import type { MediaAttachment } from 'mastodon/models/media_attachment'; import { useAppSelector } from 'mastodon/store'; const AudioModal: React.FC<{ media: MediaAttachment; statusId: string; options: { autoPlay: boolean; }; onClose: () => void; onChangeBackgroundColor: (color: RGB | null) => void; }> = ({ media, statusId, options, onClose, onChangeBackgroundColor }) => { const status = useAppSelector((state) => state.statuses.get(statusId)); const accountId = status?.get('account') as string | undefined; const accountStaticAvatar = useAppSelector((state) => accountId ? state.accounts.get(accountId)?.avatar_static : undefined, ); useEffect(() => { const backgroundColor = getAverageFromBlurhash( media.get('blurhash') as string | null, ); onChangeBackgroundColor(backgroundColor ?? { r: 255, g: 255, b: 255 }); return () => { onChangeBackgroundColor(null); }; }, [media, onChangeBackgroundColor]); const language = (status?.getIn(['translation', 'language']) ?? status?.get('language')) as string; const description = (media.getIn(['translation', 'description']) ?? media.get('description')) as string; return (
{status && (
); }; // eslint-disable-next-line import/no-default-export export default AudioModal;