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