From 5fe9ef131bb3c93d90a607f8f5f72c747da4160e Mon Sep 17 00:00:00 2001 From: djairoh Date: Wed, 10 May 2023 16:18:03 +0200 Subject: [PATCH] made rating_icons an optional value in Config --- src/structs/config.rs | 4 ++-- src/update_message.rs | 13 ++++++++++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/structs/config.rs b/src/structs/config.rs index d403399..187d510 100644 --- a/src/structs/config.rs +++ b/src/structs/config.rs @@ -55,7 +55,7 @@ pub struct Config { pub render_prefix: bool, pub break_character: Option, pub player_priorities: Vec, - pub rating_icons: Rating, + pub rating_icons: Option, pub metadata_fields: Vec, pub player_prefixes: HashMap, } @@ -70,7 +70,7 @@ impl Default for Config { fuzzy: false, render_prefix: true, metadata_fields: Config::default_metadata_fields(), - rating_icons: Rating::default(), + rating_icons: Some(Rating::default()), player_priorities: Config::default_player_priorities(), break_character: Some('-'), player_prefixes: Config::default_player_prefixes(), diff --git a/src/update_message.rs b/src/update_message.rs index 4a34c45..830176f 100644 --- a/src/update_message.rs +++ b/src/update_message.rs @@ -28,12 +28,19 @@ fn value_to_string(v: &MetadataValue, sep: char) -> String { } } -fn rating_to_string(r: Option<&MetadataValue>, map: &Rating) -> Option { +fn rating_to_string(r: Option<&MetadataValue>, opt: Option<&Rating>) -> Option { + let def = Rating::default(); + let map: &Rating; + match opt { + Some(m) => map = m, + None => map = &def, + } + match r { Some(rating) => { if let Some(f) = rating.as_f64() { let i = (f * 10_f64).round() as i64; - match i { + match i { //TODO: refactor this 0 => Some(Rating::repeat(map.nil, 5)), 1 => Some(format!("{}{}", Rating::repeat(map.half, 1), Rating::repeat(map.nil, 4))), 2 => Some(format!("{}{}", Rating::repeat(map.full, 1), Rating::repeat(map.nil, 4))), @@ -63,7 +70,7 @@ pub fn update_message(cfg: &Config, data: &mut Data) { for field in &cfg.metadata_fields { let key = field.field.clone(); if field.field.eq("xesam:userRating") { - if let Some(rating_string) = rating_to_string(meta.get(&key), &cfg.rating_icons) { + if let Some(rating_string) = rating_to_string(meta.get(&key), cfg.rating_icons.as_ref()) { data.display_text.insert(key, rating_string); } else { data.display_text.remove(&key);