refactor(multiverse): simplify code around search

This commit is contained in:
Benjamin Bouvier
2026-03-26 13:07:40 +01:00
parent c237659aca
commit e66967c46f
2 changed files with 30 additions and 32 deletions
+24 -24
View File
@@ -964,29 +964,29 @@ async fn get_events_from_event_ids(
room: &Room,
event_ids: Vec<OwnedEventId>,
) -> Vec<TimelineEvent> {
if let Ok(cache_lock) = client.event_cache_store().lock().await {
let cache_lock =
cache_lock.as_clean().expect("Only one process must access the event cache store");
futures_util::future::join_all(event_ids.iter().map(|event_id| async {
let event_id = event_id.clone();
match cache_lock.find_event(room.room_id(), &event_id).await {
Ok(ev) => ev,
Err(_) => room
.event(&event_id, None)
.await
.inspect_err(|err| {
debug!("Failed to find event {event_id} in event cache and server: {err}");
})
.ok(),
}
}))
.await
.into_iter()
.flatten()
.collect::<Vec<TimelineEvent>>()
} else {
let Ok(cache_lock) = client.event_cache_store().lock().await else {
debug!("Couldnt get event cache store lock.");
Vec::new()
}
return Vec::new();
};
let cache_lock =
cache_lock.as_clean().expect("Only one process must access the event cache store");
futures_util::future::join_all(event_ids.iter().map(|event_id| async {
let event_id = event_id.clone();
match cache_lock.find_event(room.room_id(), &event_id).await {
Ok(ev) => ev,
Err(_) => room
.event(&event_id, None)
.await
.inspect_err(|err| {
debug!("Failed to find event {event_id} in event cache and server: {err}");
})
.ok(),
}
}))
.await
.into_iter()
.flatten()
.collect::<Vec<TimelineEvent>>()
}
@@ -111,15 +111,13 @@ impl Widget for &mut SearchingView {
.len()
+ 3;
if context.index % 2 == 0 {
message_widget.style = Style::default().fg(TEXT_COLOR).bg(ALT_ROW_COLOR);
message_widget.style = if context.is_selected {
Style::default().bg(NORMAL_ROW_COLOR).fg(SELECTED_STYLE_FG)
} else if context.index % 2 == 0 {
Style::default().fg(TEXT_COLOR).bg(ALT_ROW_COLOR)
} else {
message_widget.style = Style::default().fg(TEXT_COLOR).bg(NORMAL_ROW_COLOR);
}
if context.is_selected {
message_widget.style = Style::default().bg(NORMAL_ROW_COLOR).fg(SELECTED_STYLE_FG);
}
Style::default().fg(TEXT_COLOR).bg(NORMAL_ROW_COLOR)
};
(message_widget, main_axis_size as u16)
});