From 0ef5c39f7f61dd1e65ae94ba383037be604d78cb Mon Sep 17 00:00:00 2001 From: vaw Date: Wed, 25 Jun 2025 20:14:04 +0000 Subject: [PATCH] Make merging of configuration options consistent (#471) --- src/config.rs | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/src/config.rs b/src/config.rs index 1438ed7..f22bd05 100644 --- a/src/config.rs +++ b/src/config.rs @@ -353,29 +353,31 @@ pub struct UserDisplayTunables { pub type UserOverrides = HashMap; -fn merge_sorts(a: SortOverrides, b: SortOverrides) -> SortOverrides { +fn merge_sorts(profile: SortOverrides, global: SortOverrides) -> SortOverrides { SortOverrides { - chats: b.chats.or(a.chats), - dms: b.dms.or(a.dms), - rooms: b.rooms.or(a.rooms), - spaces: b.spaces.or(a.spaces), - members: b.members.or(a.members), + chats: profile.chats.or(global.chats), + dms: profile.dms.or(global.dms), + rooms: profile.rooms.or(global.rooms), + spaces: profile.spaces.or(global.spaces), + members: profile.members.or(global.members), } } -fn merge_maps(a: Option>, b: Option>) -> Option> +fn merge_maps( + profile: Option>, + global: Option>, +) -> Option> where K: Eq + Hash, { - match (a, b) { - (Some(a), None) => Some(a), - (None, Some(b)) => Some(b), - (Some(mut a), Some(b)) => { - for (k, v) in b { - a.insert(k, v); + match (global, profile) { + (Some(m), None) | (None, Some(m)) => Some(m), + (Some(mut global), Some(profile)) => { + for (k, v) in profile { + global.insert(k, v); } - Some(a) + Some(global) }, (None, None) => None, } @@ -911,7 +913,7 @@ impl ApplicationSettings { } }; - let macros = merge_maps(macros, profile.macros.take()).unwrap_or_default(); + let macros = merge_maps(profile.macros.take(), macros).unwrap_or_default(); let layout = profile.layout.take().or(layout).unwrap_or_default(); let tunables = global.unwrap_or_default(); @@ -1110,10 +1112,10 @@ mod tests { assert_eq!(res, Some(b.clone())); let res = merge_maps(Some(b.clone()), Some(c.clone())); - assert_eq!(res, Some(c.clone())); + assert_eq!(res, Some(b.clone())); let res = merge_maps(Some(c.clone()), Some(b.clone())); - assert_eq!(res, Some(b.clone())); + assert_eq!(res, Some(c.clone())); } #[test]