Implement clear queue in tui
stable / fmt Details
stable / cross-${{ matrix.target }} (aarch64-unknown-linux-gnu) Details
stable / cross-${{ matrix.target }} (armv7-unknown-linux-gnueabihf) Details
stable / cross-${{ matrix.target }} (x86_64-unknown-linux-gnu) Details

This commit is contained in:
chmanie 2023-06-12 22:07:41 +02:00
parent 6ac13a710c
commit 02f47d682b
4 changed files with 19 additions and 3 deletions

View File

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
echo "$(echo $GITHUB_REF| cut -d'/' -f2)"
if [ "$(echo $GITHUB_REF| cut -d'/' -f2)" != "tags" ]; then if [ "$(echo $GITHUB_REF| cut -d'/' -f2)" != "tags" ]; then
echo "Not a tag"
exit 1; exit 1;
fi fi

View File

@ -65,6 +65,7 @@ pub enum MessageFromUi {
InsertTracks(Vec<String>, usize), InsertTracks(Vec<String>, usize),
RemoveTracks(Vec<usize>), RemoveTracks(Vec<usize>),
ReplaceQueue(Vec<String>), ReplaceQueue(Vec<String>),
ClearQueue(bool),
NextTrack, NextTrack,
PrevTrack, PrevTrack,
RestartTrack, RestartTrack,

View File

@ -123,6 +123,9 @@ async fn poll(
MessageFromUi::ToggleRepeat => { MessageFromUi::ToggleRepeat => {
rpc_client.toggle_repeat().await? rpc_client.toggle_repeat().await?
} }
MessageFromUi::ClearQueue(exclude_current) => {
rpc_client.clear_queue(exclude_current).await?
}
} }
} }
Some(resp) = rpc_client.update_stream.next() => { Some(resp) = rpc_client.update_stream.next() => {
@ -306,6 +309,12 @@ fn run_ui(tx: Sender<MessageFromUi>, rx: Receiver<MessageToUi>) {
(UiFocus::Queue, KeyModifiers::NONE, KeyCode::Char('d')) => { (UiFocus::Queue, KeyModifiers::NONE, KeyCode::Char('d')) => {
app.queue.remove_track(); app.queue.remove_track();
} }
(UiFocus::Queue, KeyModifiers::NONE, KeyCode::Char('c')) => {
tx.send(MessageFromUi::ClearQueue(true));
}
(UiFocus::Queue, KeyModifiers::SHIFT, KeyCode::Char('C')) => {
tx.send(MessageFromUi::ClearQueue(false));
}
_ => {} _ => {}
} }
} }

View File

@ -1,7 +1,7 @@
use crabidy_core::proto::crabidy::{ use crabidy_core::proto::crabidy::{
crabidy_service_client::CrabidyServiceClient, AppendRequest, ChangeVolumeRequest, crabidy_service_client::CrabidyServiceClient, AppendRequest, ChangeVolumeRequest,
GetLibraryNodeRequest, GetUpdateStreamRequest, GetUpdateStreamResponse, InitRequest, ClearQueueRequest, GetLibraryNodeRequest, GetUpdateStreamRequest, GetUpdateStreamResponse,
InitResponse, InsertRequest, LibraryNode, NextRequest, PrevRequest, QueueRequest, InitRequest, InitResponse, InsertRequest, LibraryNode, NextRequest, PrevRequest, QueueRequest,
RemoveRequest, ReplaceRequest, RestartTrackRequest, SetCurrentRequest, ToggleMuteRequest, RemoveRequest, ReplaceRequest, RestartTrackRequest, SetCurrentRequest, ToggleMuteRequest,
TogglePlayRequest, ToggleRepeatRequest, ToggleShuffleRequest, TogglePlayRequest, ToggleRepeatRequest, ToggleShuffleRequest,
}; };
@ -128,6 +128,12 @@ impl RpcClient {
Ok(()) Ok(())
} }
pub async fn clear_queue(&mut self, exclude_current: bool) -> Result<(), Box<dyn Error>> {
let clear_queue_request = Request::new(ClearQueueRequest { exclude_current });
self.client.clear_queue(clear_queue_request).await?;
Ok(())
}
pub async fn replace_queue(&mut self, uuids: Vec<String>) -> Result<(), Box<dyn Error>> { pub async fn replace_queue(&mut self, uuids: Vec<String>) -> Result<(), Box<dyn Error>> {
let replace_request = Request::new(ReplaceRequest { uuids }); let replace_request = Request::new(ReplaceRequest { uuids });
self.client.replace(replace_request).await?; self.client.replace(replace_request).await?;