taba_cli/tui/screens/topics/
preview.rs1use crate::tui::model::{Model, TopicMonitor, TopicTab};
7
8use super::selected;
9
10pub const MAX: usize = 8;
12
13pub fn current(m: &Model) -> Option<&TopicMonitor> {
15 let topic = selected(m)?;
16 if topic.is_distributor() {
17 return None;
18 }
19 m.topics.previews.iter().find(|p| p.name == topic.name)
20}
21
22pub fn prepare(m: &mut Model) {
24 let Some(topic) = selected(m) else { return };
25 if topic.is_distributor() {
26 return;
27 }
28 let previews = &mut m.topics.previews;
29 match previews.iter().position(|p| p.name == topic.name) {
30 Some(at) => {
31 let kept = previews.remove(at);
32 previews.push(kept);
33 }
34 None => previews.push(TopicMonitor::new(
35 topic.name,
36 TopicTab::Charts,
37 false,
38 topic.dead_letter,
39 )),
40 }
41 if previews.len() > MAX {
42 previews.remove(0);
43 }
44}