Queue, Favorites, Providers, Now playing

This commit is contained in:
2026-04-06 11:46:04 +02:00
parent e7e9a59e70
commit 56199db301
12 changed files with 462 additions and 58 deletions
@@ -119,8 +119,25 @@ final class MAPlayerManager {
}
private func handleQueueItemsUpdated(_ event: MAEvent) async {
// Similar to queue_updated
// Update queue state (current item, current index)
await handleQueueUpdated(event)
// Reload the items list if we already have it cached (i.e., queue view was opened)
guard let data = event.data,
let dict = data.value as? [String: Any],
let queueId = dict["queue_id"] as? String,
queues[queueId] != nil,
let service else { return }
do {
let items = try await service.getQueue(playerId: queueId)
await MainActor.run {
queues[queueId] = items
logger.debug("Reloaded queue items for player \(queueId): \(items.count) items")
}
} catch {
logger.error("Failed to reload queue items: \(error.localizedDescription)")
}
}
// MARK: - Data Loading
@@ -235,6 +252,13 @@ final class MAPlayerManager {
}
try await service.playMedia(playerId: playerId, uri: uri)
}
func enqueueMedia(playerId: String, uri: String) async throws {
guard let service else {
throw MAWebSocketClient.ClientError.notConnected
}
try await service.enqueueMedia(playerId: playerId, uri: uri)
}
func playIndex(playerId: String, index: Int) async throws {
guard let service else {