Version 1.3 für App Store
This commit is contained in:
@@ -48,12 +48,21 @@ struct ProviderBadge: View {
|
||||
var body: some View {
|
||||
HStack(spacing: 4) {
|
||||
ForEach(providers, id: \.self) { provider in
|
||||
Image(systemName: provider.icon)
|
||||
.font(.system(size: 9, weight: .bold))
|
||||
.foregroundStyle(.white)
|
||||
.frame(width: 20, height: 20)
|
||||
.background(.black.opacity(0.55))
|
||||
.clipShape(Circle())
|
||||
if let assetName = provider.logoAssetName {
|
||||
Image(assetName)
|
||||
.resizable()
|
||||
.aspectRatio(contentMode: .fill)
|
||||
.frame(width: 30, height: 30)
|
||||
.background(.black.opacity(0.55))
|
||||
.clipShape(Circle())
|
||||
} else {
|
||||
Image(systemName: provider.icon)
|
||||
.font(.system(size: 14, weight: .bold))
|
||||
.foregroundStyle(.white)
|
||||
.frame(width: 30, height: 30)
|
||||
.background(.black.opacity(0.55))
|
||||
.clipShape(Circle())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -76,24 +85,35 @@ enum MusicProvider: Hashable {
|
||||
case filesystem
|
||||
case jellyfin
|
||||
case dlna
|
||||
case ardAudiothek
|
||||
|
||||
/// SF Symbol name for this provider.
|
||||
/// Asset catalog image name for providers that have a custom logo.
|
||||
/// Returns `nil` when the provider uses an SF Symbol instead.
|
||||
var logoAssetName: String? {
|
||||
switch self {
|
||||
case .subsonic: return "SubsonicLogo"
|
||||
default: return nil
|
||||
}
|
||||
}
|
||||
|
||||
/// SF Symbol name for this provider (used when `logoAssetName` is nil).
|
||||
var icon: String {
|
||||
switch self {
|
||||
case .library: return "building.columns.fill"
|
||||
case .subsonic: return "ferry.fill"
|
||||
case .spotify: return "antenna.radiowaves.left.and.right.circle.fill"
|
||||
case .tidal: return "water.waves"
|
||||
case .qobuz: return "hifispeaker.fill"
|
||||
case .plex: return "play.square.stack.fill"
|
||||
case .ytmusic: return "play.rectangle.fill"
|
||||
case .appleMusic: return "applelogo"
|
||||
case .deezer: return "waveform"
|
||||
case .soundcloud: return "cloud.fill"
|
||||
case .tunein: return "radio.fill"
|
||||
case .filesystem: return "folder.fill"
|
||||
case .jellyfin: return "server.rack"
|
||||
case .dlna: return "wifi"
|
||||
case .library: return "building.columns.fill"
|
||||
case .subsonic: return "ferry.fill"
|
||||
case .spotify: return "antenna.radiowaves.left.and.right.circle.fill"
|
||||
case .tidal: return "water.waves"
|
||||
case .qobuz: return "hifispeaker.fill"
|
||||
case .plex: return "play.square.stack.fill"
|
||||
case .ytmusic: return "play.rectangle.fill"
|
||||
case .appleMusic: return "applelogo"
|
||||
case .deezer: return "waveform"
|
||||
case .soundcloud: return "cloud.fill"
|
||||
case .tunein: return "radio.fill"
|
||||
case .filesystem: return "folder.fill"
|
||||
case .jellyfin: return "server.rack"
|
||||
case .dlna: return "wifi"
|
||||
case .ardAudiothek: return "antenna.radiowaves.left.and.right"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -115,6 +135,8 @@ enum MusicProvider: Hashable {
|
||||
if scheme.hasPrefix("filesystem") { return .filesystem }
|
||||
if scheme.hasPrefix("jellyfin") { return .jellyfin }
|
||||
if scheme.hasPrefix("dlna") { return .dlna }
|
||||
if scheme.hasPrefix("ard_audiothek") { return .ardAudiothek }
|
||||
if scheme.hasPrefix("ard") { return .ardAudiothek }
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -134,8 +156,10 @@ enum MusicProvider: Hashable {
|
||||
if k.hasPrefix("soundcloud") { return .soundcloud }
|
||||
if k.hasPrefix("tunein") { return .tunein }
|
||||
if k.hasPrefix("filesystem") { return .filesystem }
|
||||
if k.hasPrefix("jellyfin") { return .jellyfin }
|
||||
if k.hasPrefix("dlna") { return .dlna }
|
||||
if k.hasPrefix("jellyfin") { return .jellyfin }
|
||||
if k.hasPrefix("dlna") { return .dlna }
|
||||
if k.hasPrefix("ard_audiothek") { return .ardAudiothek }
|
||||
if k.hasPrefix("ard") { return .ardAudiothek }
|
||||
// Image-only metadata providers — not a music source
|
||||
if k == "lastfm" || k == "musicbrainz" || k == "fanarttv" { return nil }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user