core: set item that was live as 0, that was never live as NULL (Maybe Bool type) (#1594)

* core: set item that was live as 0, that was never live as NULL (Maybe Bool type)

* fix
This commit is contained in:
Evgeny Poberezkin
2022-12-17 13:58:16 +00:00
committed by GitHub
parent f128ebac87
commit d105e59655
3 changed files with 22 additions and 22 deletions
+2 -2
View File
@@ -264,7 +264,7 @@ data CIMeta (d :: MsgDirection) = CIMeta
itemDeleted :: Bool,
itemEdited :: Bool,
itemTimed :: Maybe CITimed,
itemLive :: Bool,
itemLive :: Maybe Bool,
editable :: Bool,
localItemTs :: ZonedTime,
createdAt :: UTCTime,
@@ -272,7 +272,7 @@ data CIMeta (d :: MsgDirection) = CIMeta
}
deriving (Show, Generic)
mkCIMeta :: ChatItemId -> CIContent d -> Text -> CIStatus d -> Maybe SharedMsgId -> Bool -> Bool -> Maybe CITimed -> Bool -> TimeZone -> UTCTime -> ChatItemTs -> UTCTime -> UTCTime -> CIMeta d
mkCIMeta :: ChatItemId -> CIContent d -> Text -> CIStatus d -> Maybe SharedMsgId -> Bool -> Bool -> Maybe CITimed -> Maybe Bool -> TimeZone -> UTCTime -> ChatItemTs -> UTCTime -> UTCTime -> CIMeta d
mkCIMeta itemId itemContent itemText itemStatus itemSharedMsgId itemDeleted itemEdited itemTimed itemLive tz currentTs itemTs createdAt updatedAt =
let localItemTs = utcToZonedTime tz itemTs
editable = case itemContent of
+8 -8
View File
@@ -3197,8 +3197,8 @@ createNewChatItem_ db User {userId} chatDirection msgId_ sharedMsgId ciContent q
forM_ msgId_ $ \msgId -> insertChatItemMessage_ db ciId msgId createdAt
pure ciId
where
itemRow :: (SMsgDirection d, UTCTime, CIContent d, Text, CIStatus d, Maybe SharedMsgId) :. (UTCTime, UTCTime, Maybe Int, Maybe UTCTime, Bool)
itemRow = (msgDirection @d, itemTs, ciContent, ciContentToText ciContent, ciCreateStatus ciContent, sharedMsgId) :. (createdAt, createdAt, timedTTL, timedDeleteAt, live)
itemRow :: (SMsgDirection d, UTCTime, CIContent d, Text, CIStatus d, Maybe SharedMsgId) :. (UTCTime, UTCTime, Maybe Int, Maybe UTCTime, Maybe Bool)
itemRow = (msgDirection @d, itemTs, ciContent, ciContentToText ciContent, ciCreateStatus ciContent, sharedMsgId) :. (createdAt, createdAt, timedTTL, timedDeleteAt, justTrue live)
where
(timedTTL, timedDeleteAt) = case timed of
Just CITimed {ttl, deleteAt} -> (Just ttl, deleteAt)
@@ -3847,8 +3847,8 @@ updateDirectChatItem_ :: forall d. (MsgDirectionI d) => DB.Connection -> UserId
updateDirectChatItem_ db userId contactId itemId newContent live currentTs = do
ci@ChatItem {meta = CIMeta {itemEdited, itemLive}} <- liftEither . correctDir =<< getDirectChatItem db userId contactId itemId
let newText = ciContentToText newContent
edited' = itemEdited || not live
live' = itemLive && live
edited' = itemEdited || (itemLive /= Just True)
live' = (live &&) <$> itemLive
liftIO $ do
DB.execute
db
@@ -3971,8 +3971,8 @@ updateGroupChatItem db user@User {userId} groupId itemId newContent live msgId =
ci@ChatItem {meta = CIMeta {itemEdited, itemLive}} <- liftEither . correctDir =<< getGroupChatItem db user groupId itemId
currentTs <- liftIO getCurrentTime
let newText = ciContentToText newContent
edited' = itemEdited || not live
live' = itemLive && live
edited' = itemEdited || (itemLive /= Just True)
live' = (live &&) <$> itemLive
liftIO $ do
DB.execute
db
@@ -4315,7 +4315,7 @@ toDirectChatItem tz currentTs (((itemId, itemTs, itemContent, itemText, itemStat
CChatItem d ChatItem {chatDir, meta = ciMeta content ciStatus, content, formattedText = parseMaybeMarkdownList itemText, quotedItem = toDirectQuote quoteRow, file}
badItem = Left $ SEBadChatItem itemId
ciMeta :: CIContent d -> CIStatus d -> CIMeta d
ciMeta content status = mkCIMeta itemId content itemText status sharedMsgId itemDeleted (fromMaybe False itemEdited) ciTimed (fromMaybe False itemLive) tz currentTs itemTs createdAt updatedAt
ciMeta content status = mkCIMeta itemId content itemText status sharedMsgId itemDeleted (fromMaybe False itemEdited) ciTimed itemLive tz currentTs itemTs createdAt updatedAt
ciTimed :: Maybe CITimed
ciTimed =
case (timedTTL, timedDeleteAt) of
@@ -4364,7 +4364,7 @@ toGroupChatItem tz currentTs userContactId (((itemId, itemTs, itemContent, itemT
CChatItem d ChatItem {chatDir, meta = ciMeta content ciStatus, content, formattedText = parseMaybeMarkdownList itemText, quotedItem = toGroupQuote quoteRow quotedMember_, file}
badItem = Left $ SEBadChatItem itemId
ciMeta :: CIContent d -> CIStatus d -> CIMeta d
ciMeta content status = mkCIMeta itemId content itemText status sharedMsgId itemDeleted (fromMaybe False itemEdited) ciTimed (fromMaybe False itemLive) tz currentTs itemTs createdAt updatedAt
ciMeta content status = mkCIMeta itemId content itemText status sharedMsgId itemDeleted (fromMaybe False itemEdited) ciTimed itemLive tz currentTs itemTs createdAt updatedAt
ciTimed :: Maybe CITimed
ciTimed =
case (timedTTL, timedDeleteAt) of