diff options
| author | Roman Smrž <roman.smrz@seznam.cz> | 2025-11-16 10:51:44 +0100 |
|---|---|---|
| committer | Roman Smrž <roman.smrz@seznam.cz> | 2025-11-16 19:27:04 +0100 |
| commit | 5be8f266e0af73917d8b73797c94333f7806b7c8 (patch) | |
| tree | 17643786f659b8f7412744ad237ac5c62dfeaf7c /src/Erebos/Conversation.hs | |
| parent | 8b0a70f002d55ea68c092997d3e7721aef2ee0b7 (diff) | |
Conversation type class
Diffstat (limited to 'src/Erebos/Conversation.hs')
| -rw-r--r-- | src/Erebos/Conversation.hs | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/Erebos/Conversation.hs b/src/Erebos/Conversation.hs index 2d007c9..ff8396c 100644 --- a/src/Erebos/Conversation.hs +++ b/src/Erebos/Conversation.hs @@ -33,6 +33,7 @@ import Data.Time.Format import Data.Time.LocalTime import Erebos.Chatroom +import Erebos.Conversation.Class import Erebos.DirectMessage import Erebos.Identity import Erebos.State @@ -42,17 +43,18 @@ import Erebos.Storable data Message = DirectMessageMessage DirectMessage Bool | ChatroomMessage ChatMessage Bool +withMessage :: (forall conv msg. ConversationType conv msg => msg -> a) -> Message -> a +withMessage f (DirectMessageMessage msg _) = f msg +withMessage f (ChatroomMessage msg _) = f msg + messageFrom :: Message -> ComposedIdentity -messageFrom (DirectMessageMessage msg _) = msgFrom msg -messageFrom (ChatroomMessage msg _) = cmsgFrom msg +messageFrom = withMessage convMessageFrom messageTime :: Message -> ZonedTime -messageTime (DirectMessageMessage msg _) = msgTime msg -messageTime (ChatroomMessage msg _) = cmsgTime msg +messageTime = withMessage convMessageTime messageText :: Message -> Maybe Text -messageText (DirectMessageMessage msg _) = Just $ msgText msg -messageText (ChatroomMessage msg _) = cmsgText msg +messageText = withMessage convMessageText messageUnread :: Message -> Bool messageUnread (DirectMessageMessage _ unread) = unread |