From f8c808e8f311601bd4fc018d2fb3cbc417fc11d0 Mon Sep 17 00:00:00 2001 From: chris west Date: Sat, 23 May 2020 12:48:28 -0700 Subject: [PATCH] prompt before opening media player --- src/ui.rs | 33 ++++++--------------------------- src/utils.rs | 27 +++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 27 deletions(-) diff --git a/src/ui.rs b/src/ui.rs index 57127d3..c3064c6 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -190,7 +190,12 @@ impl UI { #[cfg(feature = "media")] if typ.is_media() { - return self.open_media(url); + self.dirty = true; + return if self.confirm(&format!("Open in media player? {}", url)) { + utils::open_media(url) + } else { + Ok(()) + }; } if typ.is_download() { @@ -494,32 +499,6 @@ impl UI { } } - #[cfg(feature = "media")] - /// Opens a media file with `mpv`. - fn open_media(&mut self, url: &str) -> Result<()> { - // mpv only supports /9/ - let url = url.replace("/;/", "/9/").replace("/s/", "/9/"); - - // support URL: selectors - let url = if let Some (idx) = url.find("URL:") { - url.split_at(idx).1.trim_start_matches("URL:") - } else { - &url - }; - - terminal::disable_raw_mode()?; - let mut cmd = process::Command::new("mpv") - .arg(url) - .stdin(Stdio::inherit()) - .stdout(Stdio::inherit()) - .spawn()?; - cmd.wait()?; - terminal::enable_raw_mode()?; - self.dirty = true; // redraw when finished with session - - Ok(()) - } - /// Opens an interactive telnet session. fn telnet(&mut self, url: &str) -> Result<()> { let gopher::Url { host, port, .. } = gopher::parse_url(url); diff --git a/src/utils.rs b/src/utils.rs index 7611c68..14ffa82 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -95,3 +95,30 @@ pub fn open_external(url: &str) -> Result<()> { )) } } + +#[cfg(feature = "media")] +/// Opens a media file with `mpv`. +pub fn open_media(url: &str) -> Result<()> { + use crate::terminal; + + // mpv only supports /9/ + let url = url.replace("/;/", "/9/").replace("/s/", "/9/"); + + // support URL: selectors + let url = if let Some(idx) = url.find("URL:") { + url.split_at(idx).1.trim_start_matches("URL:") + } else { + &url + }; + + terminal::disable_raw_mode()?; + let mut cmd = process::Command::new("mpv") + .arg(url) + .stdin(Stdio::inherit()) + .stdout(Stdio::inherit()) + .spawn()?; + cmd.wait()?; + terminal::enable_raw_mode()?; + + Ok(()) +}