From be170b40f05de26d57a5b97bb6ad71e43b724e35 Mon Sep 17 00:00:00 2001 From: 409 Date: Tue, 3 Dec 2024 02:21:48 +0100 Subject: [PATCH] feat(playlists): optional start rank for `play_playlist` --- proto/player.proto | 1 + src/player.rs | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/proto/player.proto b/proto/player.proto index 15a5fae..0cfb3ff 100644 --- a/proto/player.proto +++ b/proto/player.proto @@ -78,4 +78,5 @@ message TracksRequest { message PlayPlaylistRequest { uint32 id = 1; + optional uint32 starting_rank = 2; } diff --git a/src/player.rs b/src/player.rs index ef7cb63..dc5c9ef 100644 --- a/src/player.rs +++ b/src/player.rs @@ -259,8 +259,11 @@ impl Player for PlayerService { let tracks = playlist.tracks.iter().map(|t| t.clone().into()); - let tracks_and_paths: Vec<(Track, PathBuf)> = - tracks.into_iter().zip(track_paths.into_iter()).collect(); + let tracks_and_paths: Vec<(Track, PathBuf)> = tracks + .into_iter() + .zip(track_paths.into_iter()) + .skip(input.starting_rank.unwrap_or(0) as usize) + .collect(); if let Err(_) = player.add_tracks_to_queue(tracks_and_paths, true).await { return Err(tonic::Status::internal(""));