From 4bb88d8e44d5e1ed32795cec2cd69806ea4a81ec Mon Sep 17 00:00:00 2001 From: Lai Zn Date: Thu, 18 Jan 2024 14:36:37 +0800 Subject: [PATCH] feat: Use url path name as fallback subscription name (#255) --- src-tauri/src/config/prfitem.rs | 4 +++- src-tauri/src/utils/help.rs | 13 +++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src-tauri/src/config/prfitem.rs b/src-tauri/src/config/prfitem.rs index e57fb37e..4a56d3d6 100644 --- a/src-tauri/src/config/prfitem.rs +++ b/src-tauri/src/config/prfitem.rs @@ -261,7 +261,9 @@ impl PrfItem { }, } } - None => None, + None => Some( + crate::utils::help::get_last_part_and_decode(url).unwrap_or("Remote File".into()), + ), }; let option = match update_interval { Some(val) => Some(PrfOption { diff --git a/src-tauri/src/utils/help.rs b/src-tauri/src/utils/help.rs index 39e3e2f6..a49eb1da 100644 --- a/src-tauri/src/utils/help.rs +++ b/src-tauri/src/utils/help.rs @@ -80,6 +80,19 @@ pub fn parse_str(target: &str, key: &str) -> Option { }) } +/// get the last part of the url, if not found, return empty string +pub fn get_last_part_and_decode(url: &str) -> Option { + let path = url.split('?').next().unwrap_or(""); // Splits URL and takes the path part + let segments: Vec<&str> = path.split('/').collect(); + let last_segment = segments.last()?; + + Some( + percent_encoding::percent_decode_str(last_segment) + .decode_utf8_lossy() + .to_string(), + ) +} + /// open file /// use vscode by default pub fn open_file(app: tauri::AppHandle, path: PathBuf) -> Result<()> {