refactor(image): do not try to read desktop files where definitely not necessary

This commit is contained in:
Jake Stanger 2023-07-26 21:51:39 +01:00
parent 2367faab04
commit 36f3db7411
No known key found for this signature in database
GPG Key ID: C51FC8F9CB0BEA61

View File

@ -50,12 +50,12 @@ impl<'a> ImageProvider<'a> {
/// Returns true if the input starts with a prefix
/// that is supported by the parser
/// (ie the parser would not fallback to checking the input).
#[cfg(any(feature = "music", feature = "workspaces"))]
pub fn is_definitely_image_input(input: &str) -> bool {
input.starts_with("icon:")
|| input.starts_with("file://")
|| input.starts_with("http://")
|| input.starts_with("https://")
|| input.starts_with('/')
}
fn get_location(
@ -77,6 +77,8 @@ impl<'a> ImageProvider<'a> {
const MAX_RECURSE_DEPTH: usize = 2;
let should_parse_desktop_file = !Self::is_definitely_image_input(input);
let (input_type, input_name) = input
.split_once(':')
.map_or((None, input), |(t, n)| (Some(t), n));
@ -117,7 +119,7 @@ impl<'a> ImageProvider<'a> {
Some(ImageLocation::Local(PathBuf::from(input_name)))
}
None if recurse_depth == MAX_RECURSE_DEPTH => fallback!(),
None => {
None if should_parse_desktop_file => {
if let Some(location) = get_desktop_icon_name(input_name).map(|input| {
Self::get_location(&input, theme, size, use_fallback, recurse_depth + 1)
}) {
@ -127,6 +129,10 @@ impl<'a> ImageProvider<'a> {
fallback!()
}
}
None => {
warn!("Failed to find image: {input}");
fallback!()
}
}
}