From a70628457a5ceccd37d1ba2e1791d4493b5a0502 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Mon, 25 Nov 2019 22:15:05 +0100 Subject: Load and announce identity updates --- src/Message.hs | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'src/Message.hs') diff --git a/src/Message.hs b/src/Message.hs index 8892edb..61d882c 100644 --- a/src/Message.hs +++ b/src/Message.hs @@ -11,56 +11,55 @@ import Data.Text (Text) import Data.Time.LocalTime import Identity -import PubKey import Storage data DirectMessage = DirectMessage - { msgFrom :: Stored (Signed IdentityData) + { msgFrom :: ComposedIdentity , msgPrev :: [Stored DirectMessage] , msgTime :: ZonedTime , msgText :: Text } data DirectMessageThread = DirectMessageThread - { msgPeer :: Stored (Signed IdentityData) + { msgPeer :: ComposedIdentity , msgHead :: [Stored DirectMessage] , msgSeen :: [Stored DirectMessage] } instance Storable DirectMessage where store' msg = storeRec $ do - storeRef "from" $ msgFrom msg + mapM_ (storeRef "from") $ idDataF $ msgFrom msg mapM_ (storeRef "prev") $ msgPrev msg storeDate "time" $ msgTime msg storeText "text" $ msgText msg load' = loadRec $ DirectMessage - <$> loadRef "from" + <$> loadIdentity "from" <*> loadRefs "prev" <*> loadDate "time" <*> loadText "text" instance Storable DirectMessageThread where store' msg = storeRec $ do - storeRef "peer" $ msgPeer msg + mapM_ (storeRef "peer") $ idDataF $ msgPeer msg mapM_ (storeRef "head") $ msgHead msg mapM_ (storeRef "seen") $ msgSeen msg load' = loadRec $ DirectMessageThread - <$> loadRef "peer" + <$> loadIdentity "peer" <*> loadRefs "head" <*> loadRefs "seen" -emptyDirectThread :: UnifiedIdentity -> DirectMessageThread -emptyDirectThread peer = DirectMessageThread (idData peer) [] [] +emptyDirectThread :: ComposedIdentity -> DirectMessageThread +emptyDirectThread peer = DirectMessageThread peer [] [] createDirectMessage :: UnifiedIdentity -> DirectMessageThread -> Text -> IO (Stored DirectMessage, Stored DirectMessageThread) createDirectMessage self thread msg = do let st = storedStorage $ idData self time <- getZonedTime smsg <- wrappedStore st DirectMessage - { msgFrom = idData $ finalOwner self + { msgFrom = toComposedIdentity $ finalOwner self , msgPrev = msgHead thread , msgTime = time , msgText = msg -- cgit v1.2.3