From 896c9aa54a883d0156a25ff04dc9c68d4117a0e5 Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Fri, 6 Sep 2024 15:36:17 +0100 Subject: [PATCH] WIP: fix(tui): update ui when push next or main finishes Removes the artificial pause while we wait for any CI to start before checking the CI status. Closes kemitix/git-next#160 --- crates/cli/src/repo/handlers/advance_main.rs | 16 +++++++++------- crates/cli/src/repo/handlers/advance_next.rs | 5 ++++- crates/cli/src/server/actor/messages.rs | 2 ++ .../cli/src/tui/actor/handlers/server_update.rs | 6 ++++++ 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/crates/cli/src/repo/handlers/advance_main.rs b/crates/cli/src/repo/handlers/advance_main.rs index f1d2adc..0f51030 100644 --- a/crates/cli/src/repo/handlers/advance_main.rs +++ b/crates/cli/src/repo/handlers/advance_main.rs @@ -1,7 +1,7 @@ // use actix::prelude::*; -use git_next_core::RepoConfigSource; +use git_next_core::{git, RepoConfigSource}; use tracing::warn; @@ -35,18 +35,20 @@ impl Handler for RepoActor { commit: commit.clone(), }); - match advance_main(commit, &repo_details, &repo_config, &**open_repository) { - Err(err) => { - warn!("advance main: {err}"); - } - Ok(()) => match repo_config.source() { + if let Err(err) = advance_main(commit, &repo_details, &repo_config, &**open_repository) { + warn!("advance main: {err}"); + self.alert_tui(format!("advance main: {err}")); + } else { + self.update_tui(RepoUpdate::MainUpdated); + self.update_tui_log(git::graph::log(&self.repo_details)); + match repo_config.source() { RepoConfigSource::Repo => { do_send(&addr, LoadConfigFromRepo, self.log.as_ref()); } RepoConfigSource::Server => { do_send(&addr, ValidateRepo::new(message_token), self.log.as_ref()); } - }, + } } } } diff --git a/crates/cli/src/repo/handlers/advance_next.rs b/crates/cli/src/repo/handlers/advance_next.rs index 2951601..11a61cf 100644 --- a/crates/cli/src/repo/handlers/advance_next.rs +++ b/crates/cli/src/repo/handlers/advance_next.rs @@ -1,6 +1,7 @@ // use actix::prelude::*; +use git_next_core::git; use tracing::{warn, Instrument}; use crate::{ @@ -49,7 +50,9 @@ impl Handler for RepoActor { self.message_token, ) { Ok(message_token) => { - // pause to allow any CI checks to be started + self.update_tui(RepoUpdate::NextUpdated); + self.update_tui_log(git::graph::log(&self.repo_details)); + // INFO: pause to allow any CI checks to be started let sleep_duration = self.sleep_duration; let log = self.log.clone(); async move { diff --git a/crates/cli/src/server/actor/messages.rs b/crates/cli/src/server/actor/messages.rs index a6ba308..ca98552 100644 --- a/crates/cli/src/server/actor/messages.rs +++ b/crates/cli/src/server/actor/messages.rs @@ -92,6 +92,8 @@ pub enum RepoUpdate { }, RegisteredWebhook, Opened, + NextUpdated, + MainUpdated, } message!( diff --git a/crates/cli/src/tui/actor/handlers/server_update.rs b/crates/cli/src/tui/actor/handlers/server_update.rs index ebaee6d..d82963f 100644 --- a/crates/cli/src/tui/actor/handlers/server_update.rs +++ b/crates/cli/src/tui/actor/handlers/server_update.rs @@ -58,10 +58,16 @@ impl Handler for Tui { repo_state .update_message(format!("advancing next to {commit}"), ACTING); } + RepoUpdate::NextUpdated => { + repo_state.update_message("next updated - pause while CI starts", OKAY); + } RepoUpdate::AdvancingMain { commit } => { repo_state .update_message(format!("advancing main to {commit}"), ACTING); } + RepoUpdate::MainUpdated => { + repo_state.update_message("main updated", OKAY); + } RepoUpdate::Opening => { repo_state.update_message("opening...", PREP); }