Live Activities fix
This commit is contained in:
@@ -23,6 +23,7 @@ final class MALibraryManager {
|
||||
private(set) var albums: [MAAlbum] = []
|
||||
private(set) var playlists: [MAPlaylist] = []
|
||||
private(set) var podcasts: [MAPodcast] = []
|
||||
private(set) var genres: [MAGenre] = []
|
||||
|
||||
// Pagination
|
||||
private var artistsOffset = 0
|
||||
@@ -39,6 +40,7 @@ final class MALibraryManager {
|
||||
private(set) var isLoadingAlbums = false
|
||||
private(set) var isLoadingPlaylists = false
|
||||
private(set) var isLoadingPodcasts = false
|
||||
private(set) var isLoadingGenres = false
|
||||
|
||||
/// URIs currently marked as favorites — source of truth for UI.
|
||||
/// Populated from decoded model data, then mutated optimistically on toggle.
|
||||
@@ -152,6 +154,7 @@ final class MALibraryManager {
|
||||
albums = []
|
||||
playlists = []
|
||||
podcasts = []
|
||||
genres = []
|
||||
favoriteURIs = []
|
||||
artistsOffset = 0
|
||||
albumArtistsOffset = 0
|
||||
@@ -397,6 +400,27 @@ final class MALibraryManager {
|
||||
logger.info("Loaded \(loaded.count) podcasts")
|
||||
}
|
||||
|
||||
// MARK: - Genres
|
||||
|
||||
func loadGenres(refresh: Bool = false) async throws {
|
||||
guard !isLoadingGenres else { return }
|
||||
guard genres.isEmpty || refresh else { return }
|
||||
guard let service else { throw MAWebSocketClient.ClientError.notConnected }
|
||||
|
||||
isLoadingGenres = true
|
||||
defer { isLoadingGenres = false }
|
||||
|
||||
logger.info("Loading genres")
|
||||
let loaded = try await service.getGenres()
|
||||
genres = loaded.sorted { $0.name < $1.name }
|
||||
logger.info("Loaded \(loaded.count) genres")
|
||||
}
|
||||
|
||||
func browseGenre(genreUri: String) async throws -> [MAMediaItem] {
|
||||
guard let service else { throw MAWebSocketClient.ClientError.notConnected }
|
||||
return try await service.browseGenre(genreUri: genreUri)
|
||||
}
|
||||
|
||||
func getPodcastEpisodes(podcastUri: String) async throws -> [MAMediaItem] {
|
||||
guard let service else { throw MAWebSocketClient.ClientError.notConnected }
|
||||
logger.info("Loading episodes for podcast \(podcastUri)")
|
||||
|
||||
Reference in New Issue
Block a user