diff --git a/front/components/V2/TabNavigationDesktop.tsx b/front/components/V2/TabNavigationDesktop.tsx index e903576..c211a5f 100644 --- a/front/components/V2/TabNavigationDesktop.tsx +++ b/front/components/V2/TabNavigationDesktop.tsx @@ -4,7 +4,10 @@ import TabNavigationButton from './TabNavigationButton'; import TabNavigationList from './TabNavigationList'; import { useAssets } from 'expo-asset'; import useColorScheme from '../../hooks/colorScheme'; +import { useQuery, useQueries } from '../../Queries'; import { NaviTab } from './TabNavigation'; +import API from '../../API'; +import Song from '../../models/Song'; type TabNavigationDesktopProps = { tabs: NaviTab[]; @@ -22,19 +25,13 @@ const TabNavigationDesktop = (props: TabNavigationDesktopProps) => { ? require('../../assets/icon_light.png') : require('../../assets/icon_dark.png') ); + const playHistoryQuery = useQuery(API.getUserPlayHistory); + const songHistory = useQueries( + playHistoryQuery.data?.map(({ songID }) => API.getSong(songID)) ?? [] + ); // settings is displayed separately (with logout) const buttons = props.tabs.filter((tab) => tab.id !== 'settings'); - const others = [ - { - label: 'Recently played', - }, - { - label: 'Short', - }, - { label: 'Twinkle Twinkle' }, - ]; - return ( { - {others.map((other, index) => ( - + Recently played + + {songHistory.length === 0 && ( + - {other.label} - - ))} + No songs played yet + + )} + {songHistory + .map((h) => h.data) + .filter((data): data is Song => data !== undefined) + .filter( + (song, i, array) => + array.map((s) => s.id).findIndex((id) => id == song.id) == i + ) + .slice(0, 4) + .map((histoItem, index) => ( + + {histoItem.name} + + ))}