import { ref, watch } from 'vue' import type { Artist, Album, Track } from '../types' import { useSubsonicApi } from '../subsonicApi' import { useMainStore } from '../store/main' import { useFavouriteStore } from '../store/favourite' import { AlbumList } from '../components/AlbumList.vine' import { ArtistList } from '../components/ArtistList.vine' import { TrackList } from '../components/TrackList.vine' export const FavouritesView = ({ section = 'tracks' }: { section?: string }) => { const api = useSubsonicApi(), favouriteStore = useFavouriteStore(), state = ref< null | { artists: Artist[], albums: Album[], tracks: Track[], }>(null), fetchFavourites = async () => { const result = await api.getFavourites() state.value = { artists: result?.artists.filter((artist: Artist) => favouriteStore.artists[artist.id]), albums: result?.albums.filter((album: Album) => favouriteStore.albums[album.id]), tracks: result?.tracks.filter((track: Track) => favouriteStore.tracks[track.id]), } } watch( favouriteStore, fetchFavourites, { deep: true, immediate: true } ) return vine`
Favourites
`; }