Favorites, Queue, Now Playing improved

This commit is contained in:
2026-04-06 11:45:32 +02:00
parent 3ebf1763ed
commit e7e9a59e70
6 changed files with 893 additions and 217 deletions
@@ -14,7 +14,6 @@ struct RadiosView: View {
@State private var isLoading = true
@State private var errorMessage: String?
@State private var showError = false
@State private var showPlayerPicker = false
@State private var selectedRadio: MAMediaItem?
private var players: [MAPlayer] {
@@ -25,13 +24,13 @@ struct RadiosView: View {
var body: some View {
List(radios) { radio in
RadioRow(radio: radio, service: service)
.contentShape(Rectangle())
.onTapGesture {
selectedRadio = radio
showPlayerPicker = true
}
.listRowSeparator(.visible)
Button {
handleRadioTap(radio)
} label: {
RadioRow(radio: radio)
}
.buttonStyle(.plain)
.listRowSeparator(.visible)
}
.listStyle(.plain)
.overlay {
@@ -56,15 +55,21 @@ struct RadiosView: View {
} message: {
if let errorMessage { Text(errorMessage) }
}
.sheet(isPresented: $showPlayerPicker) {
if let radio = selectedRadio {
EnhancedPlayerPickerView(
players: players,
onSelect: { player in
Task { await playRadio(radio, on: player) }
}
)
}
.sheet(item: $selectedRadio) { radio in
EnhancedPlayerPickerView(
players: players,
onSelect: { player in
Task { await playRadio(radio, on: player) }
}
)
}
}
private func handleRadioTap(_ radio: MAMediaItem) {
if players.count == 1 {
Task { await playRadio(radio, on: players.first!) }
} else {
selectedRadio = radio
}
}
@@ -95,8 +100,8 @@ struct RadiosView: View {
// MARK: - Radio Row
private struct RadioRow: View {
@Environment(MAService.self) private var service
let radio: MAMediaItem
let service: MAService
var body: some View {
HStack(spacing: 12) {