Ajout de la fonctionnalité de transfert de queue entre renderers
Implémentation complète de la fonctionnalité de transfert de queue entre renderers :
- Ajout d'une nouvelle API POST /renderers/{id}/queue/transfer
- Intégration dans le backend avec la méthode transfer_queue dans ControlPoint
- Mise à jour des structures de données pour inclure l'ID de playlist dans les snapshots
- Ajout d'une interface utilisateur dans RendererDrawer avec menu déroulant pour le transfert
- Gestion des écouteurs d'événements pour fermer le menu en dehors
- Support du transfert de la queue avec préservation de la playlist binding
- Ajout de tests et documentation OpenAPI
This commit is contained in:
@@ -166,6 +166,7 @@ pub trait QueueBackend {
|
||||
let QueueSnapshot {
|
||||
items,
|
||||
current_index,
|
||||
..
|
||||
} = snapshot;
|
||||
|
||||
if items.is_empty() {
|
||||
@@ -198,6 +199,7 @@ pub trait QueueBackend {
|
||||
let QueueSnapshot {
|
||||
items,
|
||||
current_index,
|
||||
..
|
||||
} = snapshot;
|
||||
|
||||
if items.is_empty() {
|
||||
|
||||
@@ -97,6 +97,7 @@ impl QueueBackend for InternalQueue {
|
||||
Ok(QueueSnapshot {
|
||||
items,
|
||||
current_index: self.current_index,
|
||||
playlist_id: None,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -549,6 +549,7 @@ impl QueueBackend for OpenHomeQueue {
|
||||
Ok(QueueSnapshot {
|
||||
items: items,
|
||||
current_index: current_index,
|
||||
playlist_id: None,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -63,7 +63,6 @@ impl PlaybackItem {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// Logical snapshot of a renderer queue.
|
||||
///
|
||||
/// This is the canonical view used by the ControlPoint and the REST/API
|
||||
@@ -76,6 +75,10 @@ pub struct QueueSnapshot {
|
||||
/// Index (0-based) of the current item in `items`, or `None` if
|
||||
/// no item is currently selected.
|
||||
pub current_index: Option<usize>,
|
||||
/// Optional playlist ID if the queue is bound to a specific playlist.
|
||||
/// This allows reconstructing a queue from a snapshot by referencing
|
||||
/// the source playlist, enabling transfer between renderers.
|
||||
pub playlist_id: Option<String>,
|
||||
}
|
||||
|
||||
impl QueueSnapshot {
|
||||
|
||||
Reference in New Issue
Block a user