fedi/app/Routes/Inbox/Like.hs
2024-11-08 20:02:54 +02:00

72 lines
1.7 KiB
Haskell

module Routes.Inbox.Like where
import Control.Logger.Simple qualified as Log
import DB
import Fedi qualified as Fedi
import Web.Twain qualified as Twain
handleInboxLike
:: DB
-> Fedi.Like
-> Twain.ResponderM Twain.Response
handleInboxLike db like = do
let
id' = like.id
actor = like.otype.actor
note = like.otype.atype.object
case id' of
Just id'' -> do
let
likeEntry =
( LikeEntry
{ likeUrl = fromString id''.unwrap
, likeActorUrl = actor
, likeNoteUrl = note
}
)
operation = do
likeid <- db.insertLike likeEntry
Log.logInfo ("New like: " <> Fedi.pShow (likeid, likeEntry))
liftIO operation
pure $ Twain.text ""
Nothing ->
Twain.next
{-
handleInboxUnlike
:: DB
-> Fedi.Like
-> Twain.ResponderM Twain.Response
handleInboxUnlike db like = do
let
id' = like.id
actor = like.otype.actor
note = like.otype.atype.object
case id' of
Just id'' -> do
let
followerEntry =
( LikeEntry
{ likeUrl = fromString id''.unwrap
, likeActorUrl = actor
, likeNoteUrl = note
}
)
operation sendAccept = do
deleteFollower
db
LikeEntry
( \deletedId' -> do
let
deletedId = Fedi.fromMaybe 0 deletedId'
sendAccept deletedId
<* Log.logInfo ("Deleted follower: " <> Fedi.pShow deletedId)
)
liftIO $ acceptRequest details actor activity operation
pure $ Twain.text ""
Nothing ->
Twain.next
-}