import { useNavigation } from '@react-navigation/native';
import { useAtomValue } from 'jotai/utils';
import React, { useEffect, useState } from 'react';
import {
ActivityIndicator,
GestureResponderEvent,
Image,
Pressable,
Text,
useWindowDimensions,
View,
} from 'react-native';
import { useSetQueue } from '../../hooks/trackplayer';
import { albumAtomFamily } from '../../state/music';
import { currentTrackAtom } from '../../state/trackplayer';
import colors from '../../styles/colors';
import text from '../../styles/text';
import AlbumArt from './AlbumArt';
import Button from './Button';
import GradientBackground from './GradientBackground';
import ImageGradientScrollView from './ImageGradientScrollView';
const SongItem: React.FC<{
id: string;
title: string;
artist?: string;
track?: number;
onPress: (event: GestureResponderEvent) => void;
}> = ({ id, title, artist, onPress }) => {
const [opacity, setOpacity] = useState(1);
const currentTrack = useAtomValue(currentTrackAtom);
return (
setOpacity(0.6)}
onPressOut={() => setOpacity(1)}
onLongPress={() => setOpacity(1)}
style={{
flex: 1,
opacity,
}}>
{title}
{artist}
{/* {secondsToTime(duration || 0)} */}
);
};
const AlbumDetails: React.FC<{
id: string;
}> = ({ id }) => {
const album = useAtomValue(albumAtomFamily(id));
const layout = useWindowDimensions();
const setQueue = useSetQueue();
const coverSize = layout.width - layout.width / 2.5;
if (!album) {
return No Album;
}
return (
{album.name}
{album.artist}
{album.year ? ` • ${album.year}` : ''}
{album.songs
.sort((a, b) => {
if (b.track && a.track) {
return a.track - b.track;
} else {
return a.title.localeCompare(b.title);
}
})
.map(s => (
setQueue(album.songs, album.name, s.id)}
/>
))}
);
};
const AlbumViewFallback = () => {
const layout = useWindowDimensions();
const coverSize = layout.width - layout.width / 2.5;
return (
);
};
const AlbumView: React.FC<{
id: string;
title: string;
}> = ({ id, title }) => {
const navigation = useNavigation();
useEffect(() => {
navigation.setOptions({ title });
});
return (
}>
);
};
export default React.memo(AlbumView);