fix: extract initiate_actor_move use case — remove event publish from handler

This commit is contained in:
2026-05-28 02:41:42 +02:00
parent 5e3db44043
commit af5c4481b6
2 changed files with 18 additions and 10 deletions

View File

@@ -17,6 +17,20 @@ use domain::{
use super::social; use super::social;
pub async fn initiate_actor_move(
events: &dyn EventPublisher,
user_id: &UserId,
new_actor_url: url::Url,
) -> Result<(), DomainError> {
events
.publish(&DomainEvent::ActorMoved {
user_id: user_id.clone(),
new_actor_url: new_actor_url.to_string(),
})
.await
.map_err(|e| DomainError::Internal(e.to_string()))
}
pub async fn list_pending_requests( pub async fn list_pending_requests(
federation: &dyn FederationFollowRequestPort, federation: &dyn FederationFollowRequestPort,
user_id: &UserId, user_id: &UserId,

View File

@@ -5,8 +5,8 @@ use crate::{
}; };
use api_types::responses::{ProfileField, RemoteActorResponse}; use api_types::responses::{ProfileField, RemoteActorResponse};
use application::use_cases::federation_management::{ use application::use_cases::federation_management::{
accept_follow_request, list_pending_requests, list_remote_followers, list_remote_following, accept_follow_request, initiate_actor_move, list_pending_requests, list_remote_followers,
reject_follow_request, remove_remote_following, list_remote_following, reject_follow_request, remove_remote_following,
}; };
use axum::{http::StatusCode, Json}; use axum::{http::StatusCode, Json};
use domain::ports::{EventPublisher, FederationActionPort, FollowRepository, UserRepository}; use domain::ports::{EventPublisher, FederationActionPort, FollowRepository, UserRepository};
@@ -118,15 +118,9 @@ pub async fn post_move_account(
AuthUser(uid): AuthUser, AuthUser(uid): AuthUser,
Json(body): Json<MoveBody>, Json(body): Json<MoveBody>,
) -> Result<StatusCode, ApiError> { ) -> Result<StatusCode, ApiError> {
url::Url::parse(&body.new_actor_url) let new_url = url::Url::parse(&body.new_actor_url)
.map_err(|_| ApiError::BadRequest("invalid new_actor_url".into()))?; .map_err(|_| ApiError::BadRequest("invalid new_actor_url".into()))?;
d.events initiate_actor_move(&*d.events, &uid, new_url).await?;
.publish(&domain::events::DomainEvent::ActorMoved {
user_id: uid,
new_actor_url: body.new_actor_url,
})
.await
.map_err(|e| ApiError::Domain(domain::errors::DomainError::Internal(e.to_string())))?;
Ok(StatusCode::NO_CONTENT) Ok(StatusCode::NO_CONTENT)
} }