diff --git a/src/Fedi/Types.hs b/src/Fedi/Types.hs index f1b0edd..6c639f4 100644 --- a/src/Fedi/Types.hs +++ b/src/Fedi/Types.hs @@ -217,12 +217,17 @@ instance ToObject TypeCreate where , "object" A..= create.object ] --- type Follow = Object (TypeActivity TypeFollow) --- data TypeFollow = TypeFollow deriving Show --- instance ToObject TypeFollow where --- toObject TypeFollow = --- [ "type" A..= ("Follow" :: String) --- ] +type Follow = Object (TypeActivity TypeFollow) +data TypeFollow + = TypeFollow + { object :: Actor + } + deriving Show +instance ToObject TypeFollow where + toObject follow = + [ "type" A..= ("Follow" :: String) + , "object" A..= follow.object + ] -- type Like = Object (TypeActivity TypeLike) @@ -236,17 +241,50 @@ instance ToObject TypeLike where data AnyActivity = -- ActivityAnnounce Announce ActivityCreate Create - -- | ActivityFollow Follow + | ActivityFollow Follow -- | ActivityLike Like + | ActivityAccept Accept + | ActivityReject Reject deriving (Show) instance A.ToJSON AnyActivity where toJSON = \case -- ActivityAnnounce obj -> A.toJSON obj ActivityCreate obj -> A.toJSON obj - --- ActivityFollow obj -> A.toJSON obj + ActivityFollow obj -> A.toJSON obj -- ActivityLike obj -> A.toJSON obj + ActivityAccept obj -> A.toJSON obj + ActivityReject obj -> A.toJSON obj + +-- * Accept Reject Add Remove + +type Accept = Object (TypeActivity TypeAccept) +data TypeAccept + = TypeAccept + { object :: AnyActivity + } + deriving Show +instance ToObject TypeAccept where + toObject obj = + [ "type" A..= ("Accept" :: String) + , "object" A..= obj.object + ] + +type Reject = Object (TypeActivity TypeReject) +data TypeReject + = TypeReject + { object :: AnyActivity + } + deriving Show +instance ToObject TypeReject where + toObject obj = + [ "type" A..= ("Reject" :: String) + , "object" A..= obj.object + ] + + + + -- * Actors