Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions src/enums.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,9 @@ export interface DBSettings {
removeRemasterInfo: boolean;
mergeAlbums: boolean;
showAlbumsAsSingles: boolean;
enablePeriodicScans: boolean
scanInterval: number
enablePeriodicScans: boolean;
scanInterval: number;
autoShuffle: boolean;
plugins: Plugin[];
version: string;
}
10 changes: 10 additions & 0 deletions src/helpers/usePlayFrom.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ export async function utilPlayFromArtist(index: number = 0) {
const tracks = await getArtistTracks(artist.info.artisthash)

tracklist.setFromArtist(artist.info.artisthash, artist.info.name, tracks)
tracklist.shuffleListIfAutoShuffle()
queue.play(index)
}

Expand All @@ -48,6 +49,7 @@ export async function playFromAlbumCard(albumhash: string, albumname: string) {
}

tracklist.setFromAlbum(albumname, albumhash, tracks)
tracklist.shuffleListIfAutoShuffle()
queue.play()
}

Expand All @@ -62,6 +64,7 @@ export async function playFromArtistCard(artisthash: string, artistname: string)
}

tracklist.setFromArtist(artisthash, artistname, tracks)
tracklist.shuffleListIfAutoShuffle()
queue.play()
}

Expand All @@ -78,6 +81,7 @@ export async function playFromFolderCard(folderpath: string) {
}

tracklist.setFromFolder(folderpath, tracks)
tracklist.shuffleListIfAutoShuffle()
queue.play()
}

Expand All @@ -98,6 +102,9 @@ export async function playFromFavorites(track: Track | undefined) {
if (track) {
index = tracklist.tracklist.findIndex(t => t.trackhash === track?.trackhash)
}
else {
tracklist.shuffleListIfAutoShuffle()
}

console.log(tracklist.tracklist)
queue.play(index)
Expand All @@ -118,6 +125,7 @@ export async function playFromPlaylist(id: string, track?: Track) {
const index = tracks.findIndex(t => t.trackhash === track.trackhash)
queue.play(index)
} else {
tracklist.shuffleListIfAutoShuffle()
queue.play()
}
}
Expand All @@ -131,6 +139,7 @@ export const playFrom = async (source: playSources) => {
const album = useAlbum()

tracklist.setFromAlbum(album.info.title, album.info.albumhash, album.srcTracks)
tracklist.shuffleListIfAutoShuffle()
queue.play()
break
}
Expand All @@ -144,6 +153,7 @@ export const playFrom = async (source: playSources) => {
await playlist.fetchAll(playlist.info.id, false, true)
}
tracklist.setFromPlaylist(playlist.info.name, playlist.info.id, playlist.tracks)
tracklist.shuffleListIfAutoShuffle()
queue.play()

break
Expand Down
10 changes: 9 additions & 1 deletion src/settings/audio/groups.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,14 @@ const crossfade: Setting = {
show_if: () => settings().use_crossfade,
}

const auto_shuffle: Setting = {
title: 'Auto shuffle tracklist',
desc: 'Shuffle tracklist before start playing Playlist / Artist / Album',
type: SettingType.binary,
state: () => settings().auto_shuffle,
action: () => settings().toggleAutoShuffle(),
}

// const streaming_quality_options = [
// {
// title: 'Original',
Expand Down Expand Up @@ -79,4 +87,4 @@ const crossfade: Setting = {
// options: streaming_quality_options as any,
// }

export default [use_silence, use_crossfade, crossfade]
export default [use_silence, use_crossfade, crossfade, auto_shuffle]
6 changes: 6 additions & 0 deletions src/stores/queue/tracklist.ts
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,12 @@ export default defineStore('tracklist', {
shuffleList() {
this.tracklist = shuffle(this.tracklist)
},
shuffleListIfAutoShuffle() {
const settings = useSettings()
if (settings.auto_shuffle) {
this.shuffleList()
}
},
removeByIndex(index: number) {
const {
currentindex,
Expand Down
4 changes: 4 additions & 0 deletions src/stores/settings/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ export default defineStore('settings', {
use_crossfade: false,
crossfade_duration: 2000, // milliseconds
use_legacy_streaming_endpoint: false,
auto_shuffle: true,

// layout
layout: '',
Expand Down Expand Up @@ -204,6 +205,9 @@ export default defineStore('settings', {
toggleUseLegacyStreamingEndpoint() {
this.use_legacy_streaming_endpoint = !this.use_legacy_streaming_endpoint
},
toggleAutoShuffle() {
this.auto_shuffle = !this.auto_shuffle
},

// layout 👇
toggleLayout() {
Expand Down