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
@@ -351,6 +351,50 @@ final class MAService {
)
}
/// Get genres
func getGenres() async throws -> [MAGenre] {
logger.debug("Fetching genres")
return try await webSocketClient.sendCommand(
"music/genres/library_items",
resultType: [MAGenre].self
)
}
/// Browse items under a genre URI.
/// MA returns provider sub-folders at the first level, so we auto-expand
/// them with a second browse pass to surface actual artists/albums.
func browseGenre(genreUri: String) async throws -> [MAMediaItem] {
logger.debug("Browsing genre \(genreUri)")
let firstLevel = try await webSocketClient.sendCommand(
"music/browse",
args: ["uri": genreUri],
resultType: [MAMediaItem].self
)
// If first level already contains real media items, return them.
let realItems = firstLevel.filter {
guard let t = $0.mediaType else { return false }
return t != .unknown
}
if !realItems.isEmpty { return realItems }
// Otherwise these are sub-folders (providers) browse each one.
var allItems: [MAMediaItem] = []
var seen = Set<String>()
for folder in firstLevel {
let items = (try? await webSocketClient.sendCommand(
"music/browse",
args: ["uri": folder.uri],
resultType: [MAMediaItem].self
)) ?? []
for item in items where seen.insert(item.uri).inserted {
allItems.append(item)
}
}
logger.debug("Genre browse returned \(allItems.count) items after expanding \(firstLevel.count) folders")
return allItems
}
/// Get radio stations
func getRadios() async throws -> [MAMediaItem] {
logger.debug("Fetching radios")