| 123456789101112131415161718192021222324252627282930313233343536 |
- import SwiftUI
- /// Displays album artwork for a track, loading from folder or embedded metadata.
- struct ArtworkView: View {
- let track: Track
- let size: CGFloat
- @State private var image: NSImage?
- @State private var isLoading = true
- var body: some View {
- Group {
- if let image {
- Image(nsImage: image)
- .resizable()
- .aspectRatio(contentMode: .fill)
- .frame(width: size, height: size)
- .clipShape(RoundedRectangle(cornerRadius: 4))
- } else {
- ZStack {
- RoundedRectangle(cornerRadius: 4)
- .fill(.quaternary)
- Image(systemName: "music.note")
- .font(.system(size: size * 0.4))
- .foregroundStyle(.tertiary)
- }
- .frame(width: size, height: size)
- }
- }
- .task(id: track.filePath) {
- isLoading = true
- image = await ArtworkService.shared.artwork(for: track)
- isLoading = false
- }
- }
- }
|