Fix an issue that a call might be shown after handled in background with CallKit and then opening the app

pull/1061/head
Ryan ZHAO 3 months ago
parent 370eb3e4de
commit 1e70f00976

@ -23,6 +23,7 @@ public enum MessageReceiverError: LocalizedError {
case invalidConfigMessageHandling
case requiredThreadNotInConfig
case outdatedMessage
case duplicatedCall
public var isRetryable: Bool {
switch self {
@ -72,6 +73,7 @@ public enum MessageReceiverError: LocalizedError {
case .invalidConfigMessageHandling: return "Invalid handling of a config message."
case .requiredThreadNotInConfig: return "Required thread not in config."
case .outdatedMessage: return "Message was sent before a config change which would have removed the message."
case .duplicatedCall: return "Duplicate call."
}
}
}

@ -270,12 +270,15 @@ extension MessageReceiver {
state: CallMessage.MessageInfo.State? = nil,
using dependencies: Dependencies
) throws -> Interaction? {
guard
(try? Interaction
guard (
try? Interaction
.filter(Interaction.Columns.variant == Interaction.Variant.infoCall)
.filter(Interaction.Columns.messageUuid == message.uuid)
.isEmpty(db))
.defaulting(to: false),
.isEmpty(db)
).defaulting(to: false)
else { throw MessageReceiverError.duplicatedCall }
guard
let sender: String = message.sender,
let thread: SessionThread = try SessionThread.fetchOne(db, id: sender),
!thread.isMessageRequest(db)

Loading…
Cancel
Save