import { useState, useEffect } from 'react' import { createPortal } from 'react-dom' import { X, Search, Music, Heart } from 'lucide-react' import { searchMusic, getFavorites } from '../utils/musicApi' import { hapticFeedback } from '../utils/telegram' import './MusicPickerModal.css' export default function MusicPickerModal({ onClose, onSelect }) { const [activeTab, setActiveTab] = useState('favorites') const [query, setQuery] = useState('') const [searchResults, setSearchResults] = useState([]) const [favorites, setFavorites] = useState([]) const [loading, setLoading] = useState(false) useEffect(() => { if (activeTab === 'favorites') { loadFavorites() } }, [activeTab]) const loadFavorites = async () => { try { setLoading(true) const data = await getFavorites({ limit: 50 }) setFavorites(data.tracks || []) } catch (error) { console.error('Ошибка загрузки избранного:', error) } finally { setLoading(false) } } const handleSearch = async () => { if (!query.trim()) return try { setLoading(true) hapticFeedback('light') const results = await searchMusic(query.trim(), 'tracks') setSearchResults(results.tracks || []) hapticFeedback('success') } catch (error) { console.error('Ошибка поиска:', error) hapticFeedback('error') } finally { setLoading(false) } } const handleSelectTrack = (track) => { hapticFeedback('light') onSelect(track) onClose() } const renderTrack = (track) => (
Поиск...
Ничего не найдено
Введите запрос для поиска
Загрузка...
Нет избранных треков