diff options
Diffstat (limited to 'crates')
-rw-r--r-- | crates/yt/src/select/cmds/mod.rs | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/crates/yt/src/select/cmds/mod.rs b/crates/yt/src/select/cmds/mod.rs index 332010a..1713233 100644 --- a/crates/yt/src/select/cmds/mod.rs +++ b/crates/yt/src/select/cmds/mod.rs @@ -9,7 +9,10 @@ // You should have received a copy of the License along with this program. // If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. +use std::io::{Write, stderr}; + use crate::{ + ansi_escape_codes, app::App, cli::{SelectCommand, SharedSelectionCommandArgs}, storage::db::{ @@ -20,11 +23,12 @@ use crate::{ use anyhow::{Context, Result, bail}; -mod add; +pub(crate) mod add; pub(crate) async fn handle_select_cmd( app: &App, cmd: SelectCommand, + video: &mut Video, line_number: Option<i64>, ops: &mut Operations<Operation>, ) -> Result<()> { @@ -87,6 +91,7 @@ async fn handle_status_change( shared: SharedSelectionCommandArgs, line_number: Option<i64>, new_status: VideoStatus, + is_single: bool, ops: &mut Operations<Operation>, ) -> Result<()> { let priority = compute_priority(line_number, shared.priority); @@ -103,6 +108,18 @@ async fn handle_status_change( video.set_playback_speed(playback_speed, ops); } + if !is_single { + ansi_escape_codes::clear_whole_line(); + ansi_escape_codes::move_to_col(1); + } + + eprint!("{}", &video.to_line_display(app, None).await?); + + if is_single { + eprintln!(); + } else { + stderr().flush()?; + } Ok(()) } |