From 77324442fc2d06fbe190bf4deeafcd61106db4b9 Mon Sep 17 00:00:00 2001
From: fr33domlover <fr33domlover@riseup.net>
Date: Thu, 21 Mar 2019 19:06:52 +0000
Subject: [PATCH] Fetch local messages by LocalMessageId, not by MessageId

---
 src/Vervis/Handler/Discussion.hs | 17 ++++++++++++++---
 src/Vervis/Handler/Ticket.hs     |  4 ++--
 2 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/src/Vervis/Handler/Discussion.hs b/src/Vervis/Handler/Discussion.hs
index 80e41a6..62a41ef 100644
--- a/src/Vervis/Handler/Discussion.hs
+++ b/src/Vervis/Handler/Discussion.hs
@@ -75,13 +75,24 @@ getNode getdid mid = do
                 l2f (instanceHost i) (remoteSharerIdent rs)
     return $ MessageTreeNode mid m author
 
+getNodeL :: AppDB DiscussionId -> LocalMessageId -> AppDB MessageTreeNode
+getNodeL getdid lmid = do
+    did <- getdid
+    lm <- get404 lmid
+    let mid = localMessageRest lm
+    m <- getJust mid
+    unless (messageRoot m == did) notFound
+    p <- getJust $ localMessageAuthor lm
+    s <- getJust $ personIdent p
+    return $ MessageTreeNode mid m $ MessageTreeNodeLocal lmid s
+
 getDiscussionMessage
     :: (MessageId -> Route App)
     -> AppDB DiscussionId
-    -> MessageId
+    -> LocalMessageId
     -> Handler Html
-getDiscussionMessage reply getdid mid = do
-    mtn <- runDB $ getNode getdid mid
+getDiscussionMessage reply getdid lmid = do
+    mtn <- runDB $ getNodeL getdid lmid
     now <- liftIO getCurrentTime
     defaultLayout $ messageW now mtn reply
 
diff --git a/src/Vervis/Handler/Ticket.hs b/src/Vervis/Handler/Ticket.hs
index fdce0e2..566ceb6 100644
--- a/src/Vervis/Handler/Ticket.hs
+++ b/src/Vervis/Handler/Ticket.hs
@@ -647,14 +647,14 @@ getTicketMessageR :: ShrIdent -> PrjIdent -> Int -> Text -> Handler Html
 getTicketMessageR shar proj tnum hid = do
     decodeHid <- getsYesod appHashidDecode
     encodeHid <- getsYesod appHashidEncode
-    mid <-
+    lmid <-
         case toSqlKey <$> decodeHid hid of
             Nothing -> notFound
             Just k  -> return k
     getDiscussionMessage
         (TicketReplyR shar proj tnum . encodeHid . fromSqlKey)
         (selectDiscussionId shar proj tnum)
-        mid
+        lmid
 
 postTicketMessageR :: ShrIdent -> PrjIdent -> Int -> Text -> Handler Html
 postTicketMessageR shar proj tnum hid = do