summaryrefslogtreecommitdiff
path: root/Omni/Jr/Web.hs
diff options
context:
space:
mode:
authorBen Sima <ben@bensima.com>2025-12-01 07:40:49 -0500
committerBen Sima <ben@bensima.com>2025-12-01 07:40:49 -0500
commit4919cf825d4fdbcecc1f69fcf2a32176dfdde5ac (patch)
tree0853eef48784ffb840589ddfdd305de7507f11cd /Omni/Jr/Web.hs
parente3f20289bdf3014b418367931fbd9cf96239061a (diff)
Add author field to task comments (Human vs Junior)
Comments now track whether they were made by a Human or by Junior (the agent). The CommentAuthor type is stored in the database and displayed in the web UI with styled badges. Task-Id: t-201
Diffstat (limited to 'Omni/Jr/Web.hs')
-rw-r--r--Omni/Jr/Web.hs13
1 files changed, 11 insertions, 2 deletions
diff --git a/Omni/Jr/Web.hs b/Omni/Jr/Web.hs
index 88e0442..d191454 100644
--- a/Omni/Jr/Web.hs
+++ b/Omni/Jr/Web.hs
@@ -1624,7 +1624,16 @@ instance Lucid.ToHtml TaskDetailPage where
renderComment currentTime c =
Lucid.div_ [Lucid.class_ "comment-card"] <| do
Lucid.p_ [Lucid.class_ "comment-text"] (Lucid.toHtml (TaskCore.commentText c))
- Lucid.span_ [Lucid.class_ "comment-time"] (renderRelativeTimestamp currentTime (TaskCore.commentCreatedAt c))
+ Lucid.div_ [Lucid.class_ "comment-meta"] <| do
+ Lucid.span_ [Lucid.class_ ("comment-author " <> authorClass)] (Lucid.toHtml (authorLabel (TaskCore.commentAuthor c)))
+ Lucid.span_ [Lucid.class_ "comment-time"] (renderRelativeTimestamp currentTime (TaskCore.commentCreatedAt c))
+ where
+ authorClass = case TaskCore.commentAuthor c of
+ TaskCore.Human -> "author-human"
+ TaskCore.Junior -> "author-junior"
+ authorLabel author = case author of
+ TaskCore.Human -> "Human" :: Text
+ TaskCore.Junior -> "Junior" :: Text
commentForm :: (Monad m) => Text -> Lucid.HtmlT m ()
commentForm tid =
@@ -2880,7 +2889,7 @@ server =
taskCommentHandler :: Text -> CommentForm -> Servant.Handler (Headers '[Header "Location" Text] NoContent)
taskCommentHandler tid (CommentForm commentText) = do
- _ <- liftIO (TaskCore.addComment tid commentText)
+ _ <- liftIO (TaskCore.addComment tid commentText TaskCore.Human)
pure <| addHeader ("/tasks/" <> tid) NoContent
taskReviewHandler :: Text -> Servant.Handler TaskReviewPage