made rating_icons an optional value in Config

This commit is contained in:
djaidjai committed 2023-05-10 16:18:03 +02:00
1 parent bb8f359f6d
commit 5fe9ef131b
2 files changed
+12 -5

No files matched your search

+10 -3
View File
@@ -28,12 +28,19 @@ fn value_to_string(v: &MetadataValue, sep: char) -> String {
}
}
fn rating_to_string(r: Option<&MetadataValue>, map: &Rating) -> Option<String> {
fn rating_to_string(r: Option<&MetadataValue>, opt: Option<&Rating>) -> Option<String> {
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);
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.