Live Activities fix

This commit is contained in:
2026-04-19 16:57:57 +02:00
parent 053c743c41
commit c41b58d837
24 changed files with 1079 additions and 7 deletions
@@ -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)")