Queue mgmt, Podcast support, Favorites section.
This commit is contained in:
@@ -273,4 +273,31 @@ final class MAPlayerManager {
|
||||
}
|
||||
try await service.playIndex(playerId: playerId, index: index)
|
||||
}
|
||||
|
||||
func setShuffle(playerId: String, enabled: Bool) async throws {
|
||||
guard let service else { throw MAWebSocketClient.ClientError.notConnected }
|
||||
try await service.setQueueShuffle(playerId: playerId, enabled: enabled)
|
||||
}
|
||||
|
||||
func setRepeatMode(playerId: String, mode: RepeatMode) async throws {
|
||||
guard let service else { throw MAWebSocketClient.ClientError.notConnected }
|
||||
try await service.setQueueRepeatMode(playerId: playerId, mode: mode)
|
||||
}
|
||||
|
||||
func clearQueue(playerId: String) async throws {
|
||||
guard let service else { throw MAWebSocketClient.ClientError.notConnected }
|
||||
try await service.clearQueue(playerId: playerId)
|
||||
}
|
||||
|
||||
func moveQueueItem(playerId: String, queueItemId: String, posShift: Int) async throws {
|
||||
guard let service else { throw MAWebSocketClient.ClientError.notConnected }
|
||||
try await service.moveQueueItem(playerId: playerId, queueItemId: queueItemId, posShift: posShift)
|
||||
// Optimistic local update — move the item in our cached list
|
||||
if var items = queues[playerId], let idx = items.firstIndex(where: { $0.queueItemId == queueItemId }) {
|
||||
let item = items.remove(at: idx)
|
||||
let dest = max(0, min(items.count, idx + posShift))
|
||||
items.insert(item, at: dest)
|
||||
queues[playerId] = items
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user