mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-08-28 05:24:44 +00:00
core: create certain informational chat items as read (#1452)
This commit is contained in:
@@ -569,6 +569,27 @@ data CIContent (d :: MsgDirection) where
|
||||
|
||||
deriving instance Show (CIContent d)
|
||||
|
||||
ciCreateStatus :: CIContent d -> CIStatus d
|
||||
ciCreateStatus = \case
|
||||
CISndMsgContent _ -> ciStatusNew
|
||||
CIRcvMsgContent _ -> ciStatusNew
|
||||
CISndDeleted _ -> ciStatusNew
|
||||
CIRcvDeleted _ -> ciStatusNew
|
||||
CISndCall {} -> ciStatusNew
|
||||
CIRcvCall {} -> ciStatusNew
|
||||
CIRcvIntegrityError _ -> ciStatusNew
|
||||
CIRcvGroupInvitation {} -> ciStatusNew
|
||||
CISndGroupInvitation {} -> ciStatusNew
|
||||
CIRcvGroupEvent rge -> rgeCreateStatus rge
|
||||
CISndGroupEvent _ -> ciStatusNew
|
||||
CIRcvConnEvent _ -> ciStatusNew
|
||||
CISndConnEvent _ -> ciStatusNew
|
||||
CIRcvChatFeature {} -> CISRcvRead
|
||||
CISndChatFeature {} -> ciStatusNew
|
||||
CIRcvGroupFeature {} -> CISRcvRead
|
||||
CISndGroupFeature {} -> ciStatusNew
|
||||
CIRcvChatFeatureRejected _ -> ciStatusNew
|
||||
|
||||
data RcvGroupEvent
|
||||
= RGEMemberAdded {groupMemberId :: GroupMemberId, profile :: Profile} -- CRJoinedGroupMemberConnecting
|
||||
| RGEMemberConnected -- CRUserJoinedGroup, CRJoinedGroupMember, CRConnectedToGroupMember
|
||||
@@ -601,6 +622,19 @@ instance ToJSON DBRcvGroupEvent where
|
||||
toJSON (RGE v) = J.genericToJSON (singleFieldJSON $ dropPrefix "RGE") v
|
||||
toEncoding (RGE v) = J.genericToEncoding (singleFieldJSON $ dropPrefix "RGE") v
|
||||
|
||||
rgeCreateStatus :: RcvGroupEvent -> CIStatus 'MDRcv
|
||||
rgeCreateStatus = \case
|
||||
RGEMemberAdded {} -> CISRcvRead
|
||||
RGEMemberConnected -> CISRcvRead
|
||||
RGEMemberLeft -> CISRcvRead
|
||||
RGEMemberRole {} -> CISRcvRead
|
||||
RGEUserRole _ -> ciStatusNew
|
||||
RGEMemberDeleted {} -> CISRcvRead
|
||||
RGEUserDeleted -> ciStatusNew
|
||||
RGEGroupDeleted -> ciStatusNew
|
||||
RGEGroupUpdated _ -> CISRcvRead
|
||||
RGEInvitedViaGroupLink -> CISRcvRead
|
||||
|
||||
data SndGroupEvent
|
||||
= SGEMemberRole {groupMemberId :: GroupMemberId, profile :: Profile, role :: GroupMemberRole}
|
||||
| SGEUserRole {role :: GroupMemberRole}
|
||||
|
||||
@@ -3128,7 +3128,7 @@ createNewChatItem_ db User {userId} chatDirection msgId_ sharedMsgId ciContent q
|
||||
pure ciId
|
||||
where
|
||||
itemRow :: (SMsgDirection d, UTCTime, CIContent d, Text, CIStatus d, Maybe SharedMsgId, UTCTime, UTCTime)
|
||||
itemRow = (msgDirection @d, itemTs, ciContent, ciContentToText ciContent, ciStatusNew @d, sharedMsgId, createdAt, createdAt)
|
||||
itemRow = (msgDirection @d, itemTs, ciContent, ciContentToText ciContent, ciCreateStatus ciContent, sharedMsgId, createdAt, createdAt)
|
||||
idsRow :: (Maybe Int64, Maybe Int64, Maybe Int64)
|
||||
idsRow = case chatDirection of
|
||||
CDDirectRcv Contact {contactId} -> (Just contactId, Nothing, Nothing)
|
||||
|
||||
Reference in New Issue
Block a user