// use actix::prelude::*; use git_next_core::RepoConfigSource; use tracing::warn; use crate::repo::{ branch::advance_main, do_send, messages::{AdvanceMain, LoadConfigFromRepo, ValidateRepo}, RepoActor, }; impl Handler for RepoActor { type Result = (); #[tracing::instrument(name = "RepoActor::AdvanceMainTo", skip_all, fields(repo = %self.repo_details, commit = ?msg))] fn handle(&mut self, msg: AdvanceMain, ctx: &mut Self::Context) -> Self::Result { let Some(repo_config) = self.repo_details.repo_config.clone() else { warn!("No config loaded"); return; }; let Some(open_repository) = &self.open_repository else { return; }; let repo_details = self.repo_details.clone(); let addr = ctx.address(); let message_token = self.message_token; match advance_main( msg.unwrap(), &repo_details, &repo_config, &**open_repository, ) { Err(err) => { warn!("advance main: {err}"); } Ok(()) => 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()); } }, } } }