Skip to content

Commit

Permalink
refactor: pass &FrameDate into draw_frame()
Browse files Browse the repository at this point in the history
  • Loading branch information
mrjackwills committed Dec 4, 2024
1 parent 096c652 commit 35aec50
Show file tree
Hide file tree
Showing 5 changed files with 179 additions and 136 deletions.
20 changes: 10 additions & 10 deletions src/app_data/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -478,10 +478,11 @@ impl AppData {
}

/// Get Option of the current selected container's ports, sorted by private port
pub fn get_selected_ports(&mut self) -> Option<(&[ContainerPorts], State)> {
if let Some(item) = self.get_mut_selected_container() {
item.ports.sort_by(|a, b| a.private.cmp(&b.private));
return Some((&item.ports, item.state));
pub fn get_selected_ports(&self) -> Option<(Vec<ContainerPorts>, State)> {
if let Some(item) = self.get_selected_container() {
let mut ports = item.ports.clone();
ports.sort_by(|a, b| a.private.cmp(&b.private));
return Some((ports, item.state));
}
None
}
Expand Down Expand Up @@ -646,12 +647,12 @@ impl AppData {

/// Chart data related methods
/// Get mutable Option of the currently selected container chart data
pub fn get_chart_data(&mut self) -> Option<(CpuTuple, MemTuple)> {
pub fn get_chart_data(&self) -> Option<(CpuTuple, MemTuple)> {
self.containers
.state
.selected()
.and_then(|i| self.containers.items.get_mut(i))
.map(|i| i.get_chart_data())
.and_then(|i| self.containers.items.get(i))
.map(container_state::ContainerItem::get_chart_data)
}

/// Error related methods
Expand Down Expand Up @@ -2180,8 +2181,7 @@ mod tests {
private: 8001,
public: None
}
]
.as_slice(),
],
State::Running(RunningState::Healthy),
))
);
Expand All @@ -2193,7 +2193,7 @@ mod tests {

assert_eq!(
result,
Some((vec![].as_slice(), State::Running(RunningState::Healthy)))
Some((vec![], State::Running(RunningState::Healthy)))
);
}

Expand Down
50 changes: 22 additions & 28 deletions src/input_handler/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -64,19 +64,17 @@ impl InputHandler {
match message {
InputMessages::ButtonPress(key) => self.button_press(key.0, key.1).await,
InputMessages::MouseEvent(mouse_event) => {
if !self.gui_state.lock().status_contains(&[
Status::Error,
Status::Help,
Status::DeleteConfirm,
Status::Filter,
]) {
let status = self.gui_state.lock().get_status();
let contains = |s: Status| status.contains(&s);

if !contains(Status::Error)
| !contains(Status::Help)
| !contains(Status::DeleteConfirm)
| !contains(Status::Filter)
{
self.mouse_press(mouse_event);
}
let delete_confirm = self
.gui_state
.lock()
.status_contains(&[Status::DeleteConfirm]);
if delete_confirm {
if contains(Status::DeleteConfirm) {
self.button_intersect(mouse_event).await;
}
}
Expand All @@ -92,11 +90,9 @@ impl InputHandler {
/// Send a quit message to docker, to abort all spawns, if an error is returned, set is_running to false here instead
/// If gui_status is Error or Init, then just set the is_running to false immediately, for a quicker exit
fn quit(&self) {
let error_init = self
.gui_state
.lock()
.status_contains(&[Status::Error, Status::Init]);
if !error_init {
let status = self.gui_state.lock().get_status();
let contains = |s: Status| status.contains(&s);
if !contains(Status::Error) | !contains(Status::Init) {
self.is_running
.store(false, std::sync::atomic::Ordering::SeqCst);
}
Expand Down Expand Up @@ -235,10 +231,11 @@ impl InputHandler {

/// Attempt to save the currently selected container logs to a file
async fn s_key(&self) {
let log_status = Status::Logs;
let status = self.gui_state.lock().status_contains(&[log_status]);
if !status {
self.gui_state.lock().status_push(log_status);
let status = self.gui_state.lock().get_status();
let contains = |s: Status| status.contains(&s);

if !contains(Status::Logs) {
self.gui_state.lock().status_push(Status::Logs);
let uuid = Uuid::new_v4();
GuiState::start_loading_animation(&self.gui_state, uuid);
if self.save_logs().await.is_err() {
Expand All @@ -248,7 +245,7 @@ impl InputHandler {
Status::Error,
);
}
self.gui_state.lock().status_del(log_status);
self.gui_state.lock().status_del(Status::Logs);
self.gui_state.lock().stop_loading_animation(uuid);
}
}
Expand Down Expand Up @@ -426,17 +423,14 @@ impl InputHandler {
}
/// Handle keyboard button events
async fn button_press(&mut self, key_code: KeyCode, key_modifier: KeyModifiers) {
let contains_delete = self
.gui_state
.lock()
.status_contains(&[Status::DeleteConfirm]);

let contains = |s: Status| self.gui_state.lock().status_contains(&[s]);
let status = self.gui_state.lock().get_status();
let contains = |s: Status| status.contains(&s);

let contains_error = contains(Status::Error);
let contains_help = contains(Status::Help);
let contains_exec = contains(Status::Exec);
let contains_filter: bool = contains(Status::Filter);
let contains_filter = contains(Status::Filter);
let contains_delete = contains(Status::DeleteConfirm);

if !contains_exec {
let is_c = || key_code == KeyCode::Char('c') || key_code == KeyCode::Char('C');
Expand Down
Loading

0 comments on commit 35aec50

Please sign in to comment.