dnetview: check whether selectable object is empty

* handle error that occurs when data is not fully initialized
This commit is contained in:
lunar-mining
2022-05-04 08:58:37 +02:00
parent 4edebb22ab
commit 8f7da1c9ac

View File

@@ -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)