@ -178,20 +178,7 @@ struct ContentView: View {
player . setQueue ( trackList )
player . play ( track )
} ,
playlists : playlist . playlists ,
lastUsedPlaylistName : playlist . lastUsedPlaylistName ,
selectedPlaylist : playlist . selectedPlaylist ,
onAddToPlaylist : { track , targetPlaylist in
try ? playlist . addTrack ( track , to : targetPlaylist )
} ,
onAddToLastPlaylist : { track in
try ? playlist . addTrackToLastUsedPlaylist ( track )
} ,
onRemoveFromPlaylist : playlist . selectedPlaylist != nil ? { track in
if let selected = playlist . selectedPlaylist {
try ? playlist . removeTrack ( track , from : selected )
}
} : nil ,
contextMenuConfig : trackContextMenuConfig ,
onReorder : playlist . selectedPlaylist != nil ? { from , to in
if let selected = playlist . selectedPlaylist {
try ? playlist . moveTrack ( in : selected , from : from , to : to )
@ -368,6 +355,25 @@ struct ContentView: View {
}
}
private var trackContextMenuConfig : TrackContextMenuConfig {
TrackContextMenuConfig (
playlists : playlist . playlists ,
lastUsedPlaylistName : playlist . lastUsedPlaylistName ,
selectedPlaylist : playlist . selectedPlaylist ,
onAddToPlaylist : { track , targetPlaylist in
try ? playlist . addTrack ( track , to : targetPlaylist )
} ,
onAddToLastPlaylist : { track in
try ? playlist . addTrackToLastUsedPlaylist ( track )
} ,
onRemoveFromPlaylist : playlist . selectedPlaylist != nil ? { track in
if let selected = playlist . selectedPlaylist {
try ? playlist . removeTrack ( track , from : selected )
}
} : nil
)
}
private var playerControls : some View {
PlayerControlsView (
currentTrack : player . currentTrack ,
@ -397,7 +403,8 @@ struct ContentView: View {
onScrubEnd : { player . endScrubbing ( at : $0 ) } ,
onVolumeChange : { player . setVolume ( $0 ) } ,
onShuffleToggle : { player . toggleShuffle ( ) } ,
onNowPlayingTap : { scrollToPlayingTrigger = UUID ( ) }
onNowPlayingTap : { scrollToPlayingTrigger = UUID ( ) } ,
contextMenuConfig : trackContextMenuConfig
)
}