pull/333/head
Niels Andriesse 4 years ago
parent 6ab8570b11
commit 585fabca03

@ -13,7 +13,7 @@ public final class ClosedGroupControlMessage : ControlMessage {
public override var isSelfSendValid: Bool { public override var isSelfSendValid: Bool {
switch kind { switch kind {
case .update, .encryptionKeyPair: return true case .update, .encryptionKeyPair, .nameChange, .membersAdded, .membersRemoved, .memberLeft: return true
default: return false default: return false
} }
} }

@ -13,7 +13,7 @@ public final class VisibleMessage : Message {
@objc public var contact: Contact? @objc public var contact: Contact?
@objc public var profile: Profile? @objc public var profile: Profile?
public override var isSelfSendValid: Bool { true } public override var isSelfSendValid: Bool { syncTarget != nil }
// MARK: Initialization // MARK: Initialization
public override init() { super.init() } public override init() { super.init() }

@ -240,8 +240,8 @@ public final class MessageSender : NSObject {
} }
} }
storage.write(with: { transaction in storage.write(with: { transaction in
MessageSender.handleSuccessfulMessageSend(message, to: destination, using: transaction) MessageSender.handleSuccessfulMessageSend(message, to: destination, isSyncMessage: isSyncMessage, using: transaction)
var shouldNotify = (message is VisibleMessage) var shouldNotify = (message is VisibleMessage && !isSyncMessage)
if let closedGroupControlMessage = message as? ClosedGroupControlMessage, case .new = closedGroupControlMessage.kind { if let closedGroupControlMessage = message as? ClosedGroupControlMessage, case .new = closedGroupControlMessage.kind {
shouldNotify = true shouldNotify = true
} }
@ -339,7 +339,7 @@ public final class MessageSender : NSObject {
} }
// MARK: Success & Failure Handling // MARK: Success & Failure Handling
public static func handleSuccessfulMessageSend(_ message: Message, to destination: Message.Destination, using transaction: Any) { public static func handleSuccessfulMessageSend(_ message: Message, to destination: Message.Destination, isSyncMessage: Bool = false, using transaction: Any) {
Storage.shared.addReceivedMessageTimestamp(message.sentTimestamp!, using: transaction) // To later ignore self-sends in a multi device context Storage.shared.addReceivedMessageTimestamp(message.sentTimestamp!, using: transaction) // To later ignore self-sends in a multi device context
guard let tsMessage = TSOutgoingMessage.find(withTimestamp: message.sentTimestamp!) else { return } guard let tsMessage = TSOutgoingMessage.find(withTimestamp: message.sentTimestamp!) else { return }
tsMessage.openGroupServerMessageID = message.openGroupServerMessageID ?? 0 tsMessage.openGroupServerMessageID = message.openGroupServerMessageID ?? 0
@ -358,9 +358,11 @@ public final class MessageSender : NSObject {
tsMessage.update(withSentRecipient: recipient, wasSentByUD: true, transaction: transaction) tsMessage.update(withSentRecipient: recipient, wasSentByUD: true, transaction: transaction)
} }
OWSDisappearingMessagesJob.shared().startAnyExpiration(for: tsMessage, expirationStartedAt: NSDate.millisecondTimestamp(), transaction: transaction) OWSDisappearingMessagesJob.shared().startAnyExpiration(for: tsMessage, expirationStartedAt: NSDate.millisecondTimestamp(), transaction: transaction)
// Sync the message if needed // Sync the message if:
// it's a visible message
// we didn't sync it already
let userPublicKey = getUserHexEncodedPublicKey() let userPublicKey = getUserHexEncodedPublicKey()
if case .contact(let publicKey) = destination, let message = message as? VisibleMessage { if case .contact(let publicKey) = destination, !isSyncMessage, let message = message as? VisibleMessage {
message.syncTarget = publicKey message.syncTarget = publicKey
// FIXME: Make this a job // FIXME: Make this a job
sendToSnodeDestination(.contact(publicKey: userPublicKey), message: message, using: transaction, isSyncMessage: true).retainUntilComplete() sendToSnodeDestination(.contact(publicKey: userPublicKey), message: message, using: transaction, isSyncMessage: true).retainUntilComplete()

Loading…
Cancel
Save