@ -799,32 +799,6 @@ public extension Interaction {
return " \( threadId ) - \( id ) "
}
func markingAsDeleted ( ) -> Interaction {
return Interaction (
id : id ,
serverHash : nil ,
messageUuid : messageUuid ,
threadId : threadId ,
authorId : authorId ,
variant : . standardIncomingDeleted ,
body : nil ,
timestampMs : timestampMs ,
receivedAtTimestampMs : receivedAtTimestampMs ,
wasRead : true , // N e v e r c o n s i d e r d e l e t e d m e s s a g e s u n r e a d
hasMention : false ,
expiresInSeconds : expiresInSeconds ,
expiresStartedAtMs : expiresStartedAtMs ,
linkPreviewUrl : nil ,
openGroupServerMessageId : openGroupServerMessageId ,
openGroupWhisper : openGroupWhisper ,
openGroupWhisperMods : openGroupWhisperMods ,
openGroupWhisperTo : openGroupWhisperTo ,
state : . deleted ,
recipientReadTimestampMs : nil ,
mostRecentFailureText : nil
)
}
static func isUserMentioned (
_ db : Database ,
threadId : String ,
@ -1146,3 +1120,56 @@ public extension Interaction.State {
}
}
}
// MARK: - D e l e t i o n
public extension Interaction {
// / W h e n d e l e t i n g a m e s s a g e w e s h o u l d a l s o d e l e t e a n y r e a c t i o n s w h i c h w e r e o n t h e m e s s a g e , s o f e t c h a n d
// / r e t u r n t h o s e h a s h e s a s w e l l
static func serverHashesForDeletion (
_ db : Database ,
interactionIds : Set < Int64 > ,
additionalServerHashesToRemove : [ String ] = [ ]
) throws -> Set < String > {
let messageHashes : [ String ] = try Interaction
. filter ( ids : interactionIds )
. filter ( Interaction . Columns . serverHash != nil )
. select ( . serverHash )
. asRequest ( of : String . self )
. fetchAll ( db )
let reactionHashes : [ String ] = try Reaction
. filter ( interactionIds . contains ( Reaction . Columns . interactionId ) )
. filter ( Reaction . Columns . serverHash != nil )
. select ( . serverHash )
. asRequest ( of : String . self )
. fetchAll ( db )
return Set ( messageHashes + reactionHashes + additionalServerHashesToRemove )
}
func markingAsDeleted ( ) -> Interaction {
return Interaction (
id : id ,
serverHash : nil ,
messageUuid : messageUuid ,
threadId : threadId ,
authorId : authorId ,
variant : . standardIncomingDeleted ,
body : nil ,
timestampMs : timestampMs ,
receivedAtTimestampMs : receivedAtTimestampMs ,
wasRead : true , // N e v e r c o n s i d e r d e l e t e d m e s s a g e s u n r e a d
hasMention : false ,
expiresInSeconds : expiresInSeconds ,
expiresStartedAtMs : expiresStartedAtMs ,
linkPreviewUrl : nil ,
openGroupServerMessageId : openGroupServerMessageId ,
openGroupWhisper : openGroupWhisper ,
openGroupWhisperMods : openGroupWhisperMods ,
openGroupWhisperTo : openGroupWhisperTo ,
state : . deleted ,
recipientReadTimestampMs : nil ,
mostRecentFailureText : nil
)
}
}