From 6399eca3029b9373eecaec1cb31b7d37ff159ecf Mon Sep 17 00:00:00 2001 From: Laurent Date: Sun, 24 May 2026 11:14:05 +0200 Subject: [PATCH] feat: wire ShazamService into app and display results in alerts --- Music/ContentView.swift | 25 ++++++++++++++++++++++++- Music/MusicApp.swift | 2 ++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/Music/ContentView.swift b/Music/ContentView.swift index 5490aff..d542219 100644 --- a/Music/ContentView.swift +++ b/Music/ContentView.swift @@ -7,6 +7,7 @@ struct ContentView: View { var scanner: ScannerService var audio: AudioService var playlist: PlaylistViewModel + var shazam: ShazamService @Binding var showNewPlaylistAlert: Bool @State private var showRenameAlert = false @State private var playlistNameInput = "" @@ -21,7 +22,9 @@ struct ContentView: View { if playlist.selectedPlaylist != nil { playlist.search(text) } - } + }, + isShazamListening: shazam.isListening, + onShazam: { shazam.isListening ? shazam.stopListening() : shazam.startListening() } ) if scanner.isScanning { @@ -155,6 +158,26 @@ struct ContentView: View { playlistToRename = nil } } + .alert("Song Identified", isPresented: Binding( + get: { shazam.matchedTitle != nil }, + set: { if !$0 { shazam.clearResult() } } + )) { + Button("OK") { shazam.clearResult() } + } message: { + if let title = shazam.matchedTitle { + Text("\(title) — \(shazam.matchedArtist ?? "Unknown Artist")") + } + } + .alert("Shazam Error", isPresented: Binding( + get: { shazam.errorMessage != nil }, + set: { if !$0 { shazam.clearResult() } } + )) { + Button("OK") { shazam.clearResult() } + } message: { + if let error = shazam.errorMessage { + Text(error) + } + } } private func handleDrop(_ providers: [NSItemProvider]) { diff --git a/Music/MusicApp.swift b/Music/MusicApp.swift index 2534c1b..0020b33 100644 --- a/Music/MusicApp.swift +++ b/Music/MusicApp.swift @@ -7,6 +7,7 @@ struct MusicApp: App { @State private var playerVM: PlayerViewModel? @State private var scannerService: ScannerService? @State private var audioService = AudioService() + @State private var shazamService = ShazamService() @State private var playlistVM: PlaylistViewModel? @State private var showNewPlaylistAlert = false @State private var initError: String? @@ -25,6 +26,7 @@ struct MusicApp: App { scanner: scanner, audio: audioService, playlist: playlist, + shazam: shazamService, showNewPlaylistAlert: $showNewPlaylistAlert ) } else if let error = initError {