refactor: remove AudioService from ContentView — all playback state via PlayerViewModel

feat/music-streaming
Laurent 1 month ago
parent 4fa431e9bd
commit e5b5c249b4
  1. 28
      Music/ContentView.swift
  2. 1
      Music/MusicApp.swift

@ -5,7 +5,6 @@ struct ContentView: View {
var library: LibraryViewModel var library: LibraryViewModel
var player: PlayerViewModel var player: PlayerViewModel
var scanner: ScannerService var scanner: ScannerService
var audio: AudioService
var playlist: PlaylistViewModel var playlist: PlaylistViewModel
var shazam: ShazamService var shazam: ShazamService
var db: DatabaseService var db: DatabaseService
@ -204,9 +203,6 @@ struct ContentView: View {
handleDrop(providers) handleDrop(providers)
return true return true
} }
.onChange(of: audio.currentTime) { _, _ in
player.checkHalfway()
}
.onChange(of: library.trackCount) { _, _ in .onChange(of: library.trackCount) { _, _ in
if showHome { loadHomeData() } if showHome { loadHomeData() }
} }
@ -289,10 +285,10 @@ struct ContentView: View {
private var playerControls: some View { private var playerControls: some View {
PlayerControlsView( PlayerControlsView(
currentTrack: player.currentTrack, currentTrack: player.currentTrack,
isPlaying: audio.isPlaying, isPlaying: player.isPlaying,
currentTime: audio.currentTime, currentTime: player.currentTime,
duration: audio.duration, duration: player.duration,
volume: audio.volume, volume: player.volume,
isShuffled: player.isShuffled, isShuffled: player.isShuffled,
onPlayPause: { onPlayPause: {
if player.currentTrack == nil { if player.currentTrack == nil {
@ -302,23 +298,23 @@ struct ContentView: View {
player.play(first) player.play(first)
} }
} else { } else {
audio.togglePlayPause() player.togglePlayPause()
} }
}, },
onNext: { player.next() }, onNext: { player.next() },
onPrevious: { player.previous() }, onPrevious: { player.previous() },
onSeek: { audio.seek(to: $0) }, onSeek: { player.seek(to: $0) },
onScrubStart: { audio.beginScrubbing() }, onScrubStart: { player.beginScrubbing() },
onScrub: { audio.scrub(to: $0) }, onScrub: { player.scrub(to: $0) },
onScrubEnd: { audio.endScrubbing(at: $0) }, onScrubEnd: { player.endScrubbing(at: $0) },
onVolumeChange: { audio.volume = $0 }, onVolumeChange: { player.setVolume($0) },
onShuffleToggle: { player.toggleShuffle() }, onShuffleToggle: { player.toggleShuffle() },
onNowPlayingTap: { scrollToPlayingTrigger = UUID() } onNowPlayingTap: { scrollToPlayingTrigger = UUID() }
) )
} }
private func installKeyboardMonitor() { private func installKeyboardMonitor() {
keyMonitor = NSEvent.addLocalMonitorForEvents(matching: .keyDown) { [audio, player, library, playlist] event in keyMonitor = NSEvent.addLocalMonitorForEvents(matching: .keyDown) { [player, library, playlist] event in
guard event.modifierFlags.intersection([.command, .control, .option, .shift]).isEmpty else { guard event.modifierFlags.intersection([.command, .control, .option, .shift]).isEmpty else {
return event return event
} }
@ -335,7 +331,7 @@ struct ContentView: View {
player.play(first) player.play(first)
} }
} else { } else {
audio.togglePlayPause() player.togglePlayPause()
} }
return nil return nil
case 123: // left arrow case 123: // left arrow

@ -24,7 +24,6 @@ struct MusicApp: App {
library: library, library: library,
player: player, player: player,
scanner: scanner, scanner: scanner,
audio: audioService,
playlist: playlist, playlist: playlist,
shazam: shazamService, shazam: shazamService,
db: db, db: db,

Loading…
Cancel
Save