Files
MobileMusicAssistant/Mobile Music Assistant/HelpersMANavigationDestination.swift
T
2026-04-05 19:44:30 +02:00

49 lines
1.5 KiB
Swift

//
// MANavigationDestination.swift
// Mobile Music Assistant
//
// Created by Sven Hanold on 26.03.26.
//
import SwiftUI
/// Central navigation destination enum for type-safe navigation throughout the app
enum MANavigationDestination: Hashable {
case artist(MAArtist)
case album(MAAlbum)
case playlist(MAPlaylist)
}
/// ViewModifier to apply all navigation destinations consistently
struct MANavigationDestinations: ViewModifier {
func body(content: Content) -> some View {
content
.navigationDestination(for: MAArtist.self) { artist in
ArtistDetailView(artist: artist)
}
.navigationDestination(for: MAAlbum.self) { album in
AlbumDetailView(album: album)
}
.navigationDestination(for: MAPlaylist.self) { playlist in
PlaylistDetailView(playlist: playlist)
}
.navigationDestination(for: MANavigationDestination.self) { destination in
switch destination {
case .artist(let artist):
ArtistDetailView(artist: artist)
case .album(let album):
AlbumDetailView(album: album)
case .playlist(let playlist):
PlaylistDetailView(playlist: playlist)
}
}
}
}
extension View {
/// Apply standard Music Assistant navigation destinations to any view
func withMANavigation() -> some View {
modifier(MANavigationDestinations())
}
}