feat(domain): add broadcast_like/broadcast_undo_like to OutboundFederationPort

This commit is contained in:
2026-05-15 04:47:19 +02:00
parent 9af1d33e71
commit 6d365dd3cf
3 changed files with 59 additions and 0 deletions

View File

@@ -1390,6 +1390,26 @@ impl domain::ports::OutboundFederationPort for ActivityPubService {
.await .await
.map_err(|e| domain::errors::DomainError::Internal(e.to_string())) .map_err(|e| domain::errors::DomainError::Internal(e.to_string()))
} }
async fn broadcast_like(
&self,
_liker_user_id: &domain::value_objects::UserId,
_object_ap_id: &str,
_author_inbox_url: &str,
) -> Result<(), domain::errors::DomainError> {
// TODO: implement Like activity broadcasting
Ok(())
}
async fn broadcast_undo_like(
&self,
_liker_user_id: &domain::value_objects::UserId,
_object_ap_id: &str,
_author_inbox_url: &str,
) -> Result<(), domain::errors::DomainError> {
// TODO: implement Undo(Like) activity broadcasting
Ok(())
}
} }
#[async_trait::async_trait] #[async_trait::async_trait]

View File

@@ -249,6 +249,8 @@ mod tests {
updated: Mutex<Vec<ThoughtId>>, updated: Mutex<Vec<ThoughtId>>,
announced: Mutex<Vec<String>>, announced: Mutex<Vec<String>>,
undo_announced: Mutex<Vec<String>>, undo_announced: Mutex<Vec<String>>,
liked: Mutex<Vec<String>>,
undo_liked: Mutex<Vec<String>>,
} }
#[async_trait] #[async_trait]
@@ -287,6 +289,26 @@ mod tests {
self.undo_announced.lock().unwrap().push(ap_id.to_string()); self.undo_announced.lock().unwrap().push(ap_id.to_string());
Ok(()) Ok(())
} }
async fn broadcast_like(
&self,
_: &UserId,
ap_id: &str,
_: &str,
) -> Result<(), DomainError> {
self.liked.lock().unwrap().push(ap_id.to_string());
Ok(())
}
async fn broadcast_undo_like(
&self,
_: &UserId,
ap_id: &str,
_: &str,
) -> Result<(), DomainError> {
self.undo_liked.lock().unwrap().push(ap_id.to_string());
Ok(())
}
} }
fn alice() -> User { fn alice() -> User {

View File

@@ -453,4 +453,21 @@ pub trait OutboundFederationPort: Send + Sync {
booster_user_id: &UserId, booster_user_id: &UserId,
object_ap_id: &str, object_ap_id: &str,
) -> Result<(), DomainError>; ) -> Result<(), DomainError>;
/// Send a Like activity to a remote thought author's inbox.
/// Only called when a LOCAL user likes a REMOTE thought (one with an ap_id).
async fn broadcast_like(
&self,
liker_user_id: &UserId,
object_ap_id: &str,
author_inbox_url: &str,
) -> Result<(), DomainError>;
/// Send Undo(Like) to a remote thought author's inbox.
async fn broadcast_undo_like(
&self,
liker_user_id: &UserId,
object_ap_id: &str,
author_inbox_url: &str,
) -> Result<(), DomainError>;
} }