import { useNavigation } from '@react-navigation/native'; import { useAtomValue } from 'jotai/utils'; import React, { useEffect } from 'react'; import { FlatList, Pressable, Text, View } from 'react-native'; import FastImage from 'react-native-fast-image'; import LinearGradient from 'react-native-linear-gradient'; import { Album } from '../../models/music'; import { albumsAtom, albumsUpdatingAtom, useUpdateAlbums } from '../../state/music'; import colors from '../../styles/colors'; import textStyles from '../../styles/text'; import TopTabContainer from '../common/TopTabContainer'; const AlbumArt: React.FC<{ height: number, width: number, coverArtUri?: string }> = ({ height, width, coverArtUri }) => { const Placeholder = ( ); const CoverArt = ( ); return coverArtUri ? CoverArt : Placeholder; } const MemoAlbumArt = React.memo(AlbumArt); const AlbumItem: React.FC<{ id: string; name: string, artist?: string, coverArtUri?: string } > = ({ id, name, artist, coverArtUri }) => { const navigation = useNavigation(); const size = 125; return ( navigation.navigate('AlbumView', { id })} > {name} {artist} ); } const MemoAlbumItem = React.memo(AlbumItem); const AlbumListRenderItem: React.FC<{ item: Album }> = ({ item }) => ( ); const AlbumsList = () => { const albums = useAtomValue(albumsAtom); const updating = useAtomValue(albumsUpdatingAtom); const updateAlbums = useUpdateAlbums(); useEffect(() => { if (albums.length === 0) { updateAlbums(); } }); return ( item.id} numColumns={3} removeClippedSubviews={true} refreshing={updating} onRefresh={updateAlbums} /> ); } const AlbumsTab = () => ( Loading...}> ); export default React.memo(AlbumsTab);