diff --git a/bin/dnetview/src/view.rs b/bin/dnetview/src/view.rs index ff51ecf44..044ea98e8 100644 --- a/bin/dnetview/src/view.rs +++ b/bin/dnetview/src/view.rs @@ -15,7 +15,7 @@ use crate::{ error::{DnetViewError, DnetViewResult}, model::{NodeInfo, SelectableObject}, }; -//use log::debug; +use log::debug; #[derive(Debug)] pub struct View { @@ -187,41 +187,48 @@ impl View { let style = Style::default(); let mut spans = Vec::new(); - let info = self.selectables.get(&selected); + if self.selectables.is_empty() { + // we have not received any selectable data + return Ok(()) + } else { + let info = self.selectables.get(&selected); - match info { - Some(SelectableObject::Node(_node)) => { - let name_span = Spans::from("Node Info"); - spans.push(name_span); - } - Some(SelectableObject::Session(_session)) => { - let name_span = Spans::from("Session Info"); - spans.push(name_span); - } - Some(SelectableObject::Connect(connect)) => { - let log = self.msg_log.get(&connect.id); - match log { - Some(values) => { - for (k, v) in values { - match k.as_str() { - "send" => { - let msg_log = - Spans::from(Span::styled(format!("S: {}", v), style)); - spans.push(msg_log); + match info { + Some(SelectableObject::Node(_node)) => { + let name_span = Spans::from("Node Info"); + spans.push(name_span); + } + Some(SelectableObject::Session(_session)) => { + let name_span = Spans::from("Session Info"); + spans.push(name_span); + } + Some(SelectableObject::Connect(connect)) => { + let log = self.msg_log.get(&connect.id); + match log { + Some(values) => { + for (k, v) in values { + match k.as_str() { + "send" => { + let msg_log = + Spans::from(Span::styled(format!("S: {}", v), style)); + spans.push(msg_log); + } + "recv" => { + let msg_log = + Spans::from(Span::styled(format!("R: {}", v), style)); + spans.push(msg_log); + } + data => { + return Err(DnetViewError::UnexpectedData(data.to_string())) + } } - "recv" => { - let msg_log = - Spans::from(Span::styled(format!("R: {}", v), style)); - spans.push(msg_log); - } - data => return Err(DnetViewError::UnexpectedData(data.to_string())), } } + None => return Err(DnetViewError::CannotFindId), } - None => return Err(DnetViewError::CannotFindId), } + None => return Err(DnetViewError::NotSelectableObject), } - None => return Err(DnetViewError::NotSelectableObject), } let graph = Paragraph::new(spans)