From 1759945912e376581e5fcd5ed2916f89e2090f2b Mon Sep 17 00:00:00 2001 From: Jake Stanger Date: Fri, 30 Jun 2023 17:59:40 +0100 Subject: [PATCH] fix(music): correctly show/hide popup elements based on player capabilities --- src/clients/music/mpris.rs | 32 ++++++++++++++++++++++---------- src/modules/music/mod.rs | 24 +++++++++++++++--------- 2 files changed, 37 insertions(+), 19 deletions(-) diff --git a/src/clients/music/mpris.rs b/src/clients/music/mpris.rs index 5d25bd4..2cbc5a2 100644 --- a/src/clients/music/mpris.rs +++ b/src/clients/music/mpris.rs @@ -162,10 +162,7 @@ impl Client { let track_list = player.get_track_list(); - let volume_percent = player - .get_volume() - .map(|vol| (vol * 100.0) as u8) - .unwrap_or(0); + let volume_percent = player.get_volume().map(|vol| (vol * 100.0) as u8).ok(); let status = Status { // MRPIS doesn't seem to provide playlist info reliably, @@ -284,9 +281,7 @@ impl MusicClient for Client { playlist_position: 0, playlist_length: 0, state: PlayerState::Stopped, - elapsed: None, - duration: None, - volume_percent: 0, + volume_percent: None, }; send!(self.tx, PlayerUpdate::Update(Box::new(None), status)); } @@ -305,9 +300,18 @@ impl From for Track { const KEY_GENRE: &str = "xesam:genre"; Self { - title: value.title().map(std::string::ToString::to_string), - album: value.album_name().map(std::string::ToString::to_string), - artist: value.artists().map(|artists| artists.join(", ")), + title: value + .title() + .map(std::string::ToString::to_string) + .and_then(replace_empty_none), + album: value + .album_name() + .map(std::string::ToString::to_string) + .and_then(replace_empty_none), + artist: value + .artists() + .map(|artists| artists.join(", ")) + .and_then(replace_empty_none), date: value .get(KEY_DATE) .and_then(mpris::MetadataValue::as_string) @@ -332,3 +336,11 @@ impl From for PlayerState { } } } + +fn replace_empty_none(string: String) -> Option { + if string.is_empty() { + None + } else { + Some(string) + } +} diff --git a/src/modules/music/mod.rs b/src/modules/music/mod.rs index e555219..5b8ebc4 100644 --- a/src/modules/music/mod.rs +++ b/src/modules/music/mod.rs @@ -423,15 +423,9 @@ impl Module