import React, { useEffect, useState, useCallback, useRef } from 'react'; import { RefreshCw } from 'lucide-react'; import { getAlbumList, SubsonicAlbum } from '../api/subsonic'; import AlbumCard from '../components/AlbumCard'; import { useTranslation } from 'react-i18next'; const ALBUM_COUNT = 30; export default function RandomAlbums() { const { t } = useTranslation(); const [albums, setAlbums] = useState([]); const [loading, setLoading] = useState(true); const loadingRef = useRef(false); const load = useCallback(async () => { if (loadingRef.current) return; loadingRef.current = true; setLoading(true); try { const data = await getAlbumList('random', ALBUM_COUNT); setAlbums(data); } catch (e) { console.error(e); } finally { loadingRef.current = false; setLoading(false); } }, []); useEffect(() => { load(); }, [load]); return (

{t('randomAlbums.title')}

{loading && albums.length === 0 ? (
) : (
{albums.map(a => )}
)}
); }