diff --git a/Music/ContentView.swift b/Music/ContentView.swift index 5264381..f70abd5 100644 --- a/Music/ContentView.swift +++ b/Music/ContentView.swift @@ -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 ) }