use mineral_protocol::{QueueContextWire, QueueOp};
pub(super) fn stats_queue_op(op: &QueueOp) -> mineral_stats::QueueOp {
match op {
QueueOp::Remove(..) => mineral_stats::QueueOp::Remove,
QueueOp::Move { .. } => mineral_stats::QueueOp::Move,
QueueOp::ClearAbove(..) => mineral_stats::QueueOp::ClearAbove,
QueueOp::ClearBelow(..) => mineral_stats::QueueOp::ClearBelow,
QueueOp::ApplyTransform { .. } => mineral_stats::QueueOp::Transform,
QueueOp::Undo => mineral_stats::QueueOp::Undo,
}
}
pub(super) fn edited_song_id(op: &QueueOp) -> Option<mineral_model::SongId> {
match op {
QueueOp::Remove(at) | QueueOp::ClearAbove(at) | QueueOp::ClearBelow(at) => {
Some(at.song_id.clone())
}
QueueOp::Move { at, .. } => Some(at.song_id.clone()),
QueueOp::ApplyTransform { .. } | QueueOp::Undo => None,
}
}
pub(super) fn queue_context_from_wire(wire: QueueContextWire) -> mineral_stats::QueueContext {
use mineral_stats::QueueContext;
match wire {
QueueContextWire::Search { query } => QueueContext::Search { query: Some(query) },
QueueContextWire::Playlist { id, name } => QueueContext::Playlist { id, name },
QueueContextWire::Album { id, name } => QueueContext::Album { id, name },
QueueContextWire::Artist { id, name } => QueueContext::Artist { id, name },
QueueContextWire::Manual => QueueContext::Manual,
QueueContextWire::Unknown => QueueContext::Unknown,
}
}