diff --git a/src/components/ArtistView/TopTracks.vue b/src/components/ArtistView/TopTracks.vue index ce439a79..fc027814 100644 --- a/src/components/ArtistView/TopTracks.vue +++ b/src/components/ArtistView/TopTracks.vue @@ -3,7 +3,6 @@

{{ title }} - SEE ALL

@@ -48,6 +47,7 @@ defineProps<{ h3 { display: flex; justify-content: space-between; + padding-left: 1rem !important; // applies to favorite page } .see-all { diff --git a/src/components/nav/NavBar.vue b/src/components/nav/NavBar.vue index fea7f3cb..a57321e1 100644 --- a/src/components/nav/NavBar.vue +++ b/src/components/nav/NavBar.vue @@ -16,6 +16,7 @@ v-if="$route.name == Routes.artistDiscography" /> + @@ -38,6 +39,7 @@ import SearchTitle from "./Titles/SearchTitle.vue"; import SettingsTitle from "./Titles/SettingsTitle.vue"; import ArtistDiscographyTitle from "./Titles/ArtistDiscographyTitle.vue"; import ArtistTracksTitle from "./Titles/ArtistTracksTitle.vue"; +import FavoritesNav from "./Titles/FavoritesNav.vue"; const route = useRoute(); diff --git a/src/components/nav/Titles/FavoritesNav.vue b/src/components/nav/Titles/FavoritesNav.vue new file mode 100644 index 00000000..f9512731 --- /dev/null +++ b/src/components/nav/Titles/FavoritesNav.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/shared/SongItem.vue b/src/components/shared/SongItem.vue index c84902a3..3971615d 100644 --- a/src/components/shared/SongItem.vue +++ b/src/components/shared/SongItem.vue @@ -14,7 +14,7 @@ {{ index }}
- +
@@ -120,10 +120,16 @@ function isCurrentPlaying() { return isCurrent() && queue.playing; } -const is_fav = ref(props.track.is_favorite); +// const is_fav = ref(props.track.is_favorite); function addToFav(trackhash: string) { - favoriteHandler(is_fav, favType.track, trackhash); + favoriteHandler( + props.track.is_favorite, + favType.track, + trackhash, + () => (props.track.is_favorite = true), + () => (props.track.is_favorite = false) + ); } diff --git a/src/composables/usePlayFrom.ts b/src/composables/usePlayFrom.ts index ec709aaf..4f188a1f 100644 --- a/src/composables/usePlayFrom.ts +++ b/src/composables/usePlayFrom.ts @@ -47,7 +47,7 @@ export default async function play( useQueue.playFromAlbum( a_store.info.title, a_store.info.albumhash, - a_store.allTracks + a_store.srcTracks ); useQueue.play(); break; diff --git a/src/stores/pages/album.ts b/src/stores/pages/album.ts index dc5f5981..228c21d3 100644 --- a/src/stores/pages/album.ts +++ b/src/stores/pages/album.ts @@ -47,6 +47,7 @@ export default defineStore("album", { srcTracks: [], albumArtists: <{ artisthash: string; albums: Album[] }[]>[], bio: null, + discs: {}, }), actions: { /** @@ -60,7 +61,17 @@ export default defineStore("album", { this.srcTracks = album.tracks; this.info = album.info; - this.srcTracks = sortByTrackNumber(this.srcTracks); + const tracks = sortByTrackNumber(this.srcTracks); + this.discs = createDiscs(tracks); + + this.srcTracks = Object.keys(this.discs).reduce( + (tracks: Track[], disc) => { + const disc_tracks = this.discs[disc]; + + return [...tracks, ...disc_tracks]; + }, + [] + ); this.srcTracks.forEach((t, index) => { t.master_index = index; @@ -91,19 +102,26 @@ export default defineStore("album", { }, }, getters: { - discs(): Disc { - return createDiscs(this.srcTracks); - }, + // discs(): Disc { + // return createDiscs(this.srcTracks); + // }, /** * All tracks ordered by disc and track number. */ - allTracks(): Track[] { - return Object.keys(this.discs).reduce((tracks: Track[], disc) => { - const disc_tracks = this.discs[disc]; + // allTracks(): Track[] { + // const tracks = Object.keys(this.discs).reduce((tracks: Track[], disc) => { + // const disc_tracks = this.discs[disc]; - return [...tracks, ...disc_tracks]; - }, []); - }, + // return [...tracks, ...disc_tracks]; + // }, []); + + // tracks.map((t, index) => { + // t.master_index = index; + // return t; + // }); + + // return tracks; + // }, filteredTracks(): ComputedRef { const discs = this.discs; let tracks: Track[] | AlbumDisc[] = []; diff --git a/src/views/AlbumView/index.vue b/src/views/AlbumView/index.vue index d1a6c2fd..a2aadc5a 100644 --- a/src/views/AlbumView/index.vue +++ b/src/views/AlbumView/index.vue @@ -118,7 +118,7 @@ const scrollerItems = computed(() => { function playFromAlbum(index: number) { const { title, albumartists, albumhash } = album.info; - queue.playFromAlbum(title, albumhash, album.allTracks); + queue.playFromAlbum(title, albumhash, album.srcTracks); queue.play(index); } diff --git a/src/views/ArtistView/Main.vue b/src/views/ArtistView/Main.vue index a7309620..f71cd51b 100644 --- a/src/views/ArtistView/Main.vue +++ b/src/views/ArtistView/Main.vue @@ -180,5 +180,9 @@ onBeforeRouteLeave(async () => { margin: 1rem; padding-left: 1rem; } + + .see-all { + opacity: 0.75; + } } diff --git a/src/views/Favorites.vue b/src/views/Favorites.vue index 2e398cc3..88784d96 100644 --- a/src/views/Favorites.vue +++ b/src/views/Favorites.vue @@ -1,30 +1,24 @@ @@ -60,8 +54,6 @@ onMounted(() => { }); async function handlePlay(index: number) { - console.log(index); - const tracks = await getFavTracks(0); queue.playFromFav(tracks); queue.play(index); @@ -69,69 +61,37 @@ async function handlePlay(index: number) {