diff --git a/plume-models/src/likes.rs b/plume-models/src/likes.rs index 4eaf4778..3738d4d1 100644 --- a/plume-models/src/likes.rs +++ b/plume-models/src/likes.rs @@ -12,7 +12,7 @@ use activitystreams::{ use chrono::NaiveDateTime; use diesel::{self, ExpressionMethods, QueryDsl, RunQueryDsl}; use plume_common::activity_pub::{ - inbox::{AsActor, AsObject, FromId}, + inbox::{AsActor, AsObject, AsObject07, FromId}, sign::Signer, Id, IntoId, PUBLIC_VISIBILITY, }; @@ -138,6 +138,26 @@ impl AsObject for Post { } } +impl AsObject07 for Post { + type Error = Error; + type Output = Like; + + fn activity07(self, conn: &DbConn, actor: User, id: &str) -> Result { + let res = Like::insert( + conn, + NewLike { + post_id: self.id, + user_id: actor.id, + ap_url: id.to_string(), + }, + )?; + res.notify(conn)?; + + Timeline::add_to_all_timelines(conn, &self, Kind::Like(&actor))?; + Ok(res) + } +} + impl FromId for Like { type Error = Error; type Object = activity::Like;