Files
furumi_macos/furumi_macos/ArtistDetailViewModel.swift
T
Ultradesu 2f8cff528c init
2026-06-08 16:50:16 +01:00

41 lines
919 B
Swift

//
// ArtistDetailViewModel.swift
// furumi_macos
//
import Foundation
import Observation
@MainActor
@Observable
final class ArtistDetailViewModel {
private var service: CatalogService
private(set) var detail: ArtistDetail?
private(set) var isLoading = false
private(set) var error: String?
init(service: CatalogService) {
self.service = service
}
func reset(service: CatalogService) {
self.service = service
self.detail = nil
self.error = nil
self.isLoading = false
}
func load(artistId: Int64) async {
guard !isLoading else { return }
isLoading = true
error = nil
defer { isLoading = false }
do {
detail = try await service.artistDetail(id: artistId)
} catch {
self.error = (error as NSError).localizedDescription
self.detail = nil
}
}
}