Queue, Favorites, Providers, Now playing
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user