From cdb1e42f63c8acb3f8d5f77678dc348a3f9cf481 Mon Sep 17 00:00:00 2001 From: Savsis Date: Sat, 9 May 2026 00:32:30 +0500 Subject: [PATCH] Add files via upload --- app/(tabs)/library.tsx | 1 + components/Player.tsx | 27 ++++++++++++++------------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/app/(tabs)/library.tsx b/app/(tabs)/library.tsx index 7129795..befd21f 100644 --- a/app/(tabs)/library.tsx +++ b/app/(tabs)/library.tsx @@ -12,6 +12,7 @@ import { Colors, Font, Spacing, Radius, TAB_BAR_HEIGHT, MINI_PLAYER_HEIGHT } fro import { getTracks, Track, coverUrl } from '../../services/api'; import { usePlayer, useLikes, useHidden, usePlaylists, Playlist } from '../../store'; import { getMyWaveTracks } from '../../services/mywave'; +import TrackDownloadButton from '../../components/DownloadButton'; import WaveAnimation from '../../components/WaveAnimation'; import { LinearGradient } from 'expo-linear-gradient'; diff --git a/components/Player.tsx b/components/Player.tsx index b3a049b..a499dd9 100644 --- a/components/Player.tsx +++ b/components/Player.tsx @@ -30,18 +30,16 @@ const DISMISS_THRESHOLD = 120; const DISMISS_VELOCITY = 800; export default function Player() { - const { - queue, index, playing, progress, duration, - repeat, shuffle, setExpanded, cycleRepeat, toggleShuffle, - } = usePlayer(); + const { queue, index, expanded, setExpanded, progress, duration, playing, repeat, shuffle, setIndex, cycleRepeat, toggleShuffle } = usePlayer(); const { toggleLike, isLiked } = useLikes(); const insets = useSafeAreaInsets(); const track = queue[index]; - const [lyricsMode, setLyricsMode] = useState(false); - const [lrcLines, setLrcLines] = useState([]); - const [plainLyrics, setPlain] = useState(null); + const [lyricsMode, setLyricsMode] = useState(false); + const [lrcLines, setLrcLines] = useState([]); + const [plainLyrics, setPlainLyrics] = useState(''); const [lyricsLoading, setLyricsLoading] = useState(false); + const [immersionMode, setImmersionMode] = useState(false); const [isSeeking, setIsSeeking] = useState(false); const [shareOpen, setShareOpen] = useState(false); const lyricsScrollRef = useRef(null); @@ -95,7 +93,7 @@ export default function Player() { // Reset on track change useEffect(() => { - setLrcLines([]); setPlain(null); setLyricsMode(false); + setLrcLines([]); setPlainLyrics(''); setLyricsMode(false); translateY.value = 0; coverScale.value = withSpring(1, { damping: 18, stiffness: 120 }); }, [track?.id]); @@ -118,7 +116,7 @@ export default function Player() { try { const data = await fetchLyrics(track.id); if (data?.synced) setLrcLines(parseLrc(data.synced)); - else if (data?.plain) setPlain(data.plain); + else if (data?.plain) setPlainLyrics(data.plain); } catch {} setLyricsLoading(false); setLyricsMode(true); @@ -468,13 +466,16 @@ export default function Player() { { Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light); - Alert.alert('VST Эффекты', 'Плагины для обработки звука будут добавлены в следующем обновлении.'); + setImmersionMode(!immersionMode); + if (!immersionMode) { + Alert.alert('Погружение включено', 'Для применения аудио-фильтров (звук из соседней комнаты / 8D) потребуется нативный звуковой движок. Сейчас режим погружения активирует визуальный фокус.'); + } }}> - + - + - VST / Звук + Погружение