Fix note to self

pull/318/head
Niels Andriesse 4 years ago
parent 0f327092d2
commit 3cf87d40ab

@ -57,23 +57,33 @@ public final class MessageSender : NSObject {
if message.sentTimestamp == nil { // Visible messages will already have their sent timestamp set if message.sentTimestamp == nil { // Visible messages will already have their sent timestamp set
message.sentTimestamp = NSDate.millisecondTimestamp() message.sentTimestamp = NSDate.millisecondTimestamp()
} }
message.sender = storage.getUserPublicKey() let userPublicKey = storage.getUserPublicKey()
message.sender = userPublicKey
switch destination { switch destination {
case .contact(let publicKey): message.recipient = publicKey case .contact(let publicKey): message.recipient = publicKey
case .closedGroup(let groupPublicKey): message.recipient = groupPublicKey case .closedGroup(let groupPublicKey): message.recipient = groupPublicKey
case .openGroup(_, _): preconditionFailure() case .openGroup(_, _): preconditionFailure()
} }
let isSelfSend = (message.recipient == userPublicKey)
// Set the failure handler (for precondition failure handling) // Set the failure handler (for precondition failure handling)
let _ = promise.catch(on: DispatchQueue.main) { error in let _ = promise.catch(on: DispatchQueue.main) { error in
storage.withAsync({ transaction in storage.withAsync({ transaction in
MessageSender.handleFailedMessageSend(message, with: error, using: transaction) MessageSender.handleFailedMessageSend(message, with: error, using: transaction)
}, completion: { }) }, completion: { })
if case .contact(_) = destination, message is VisibleMessage { if case .contact(_) = destination, message is VisibleMessage, !isSelfSend {
NotificationCenter.default.post(name: .messageSendingFailed, object: NSNumber(value: message.sentTimestamp!)) NotificationCenter.default.post(name: .messageSendingFailed, object: NSNumber(value: message.sentTimestamp!))
} }
} }
// Validate the message // Validate the message
guard message.isValid else { seal.reject(Error.invalidMessage); return promise } guard message.isValid else { seal.reject(Error.invalidMessage); return promise }
// Stop here if this is a self-send
guard !isSelfSend else {
storage.withAsync({ transaction in
MessageSender.handleSuccessfulMessageSend(message, using: transaction)
}, completion: { })
seal.fulfill(())
return promise
}
// Attach the user's profile if needed // Attach the user's profile if needed
if let message = message as? VisibleMessage { if let message = message as? VisibleMessage {
let displayName = storage.getUserDisplayName()! let displayName = storage.getUserDisplayName()!
@ -101,7 +111,7 @@ public final class MessageSender : NSObject {
return promise return promise
} }
// Encrypt the serialized protobuf // Encrypt the serialized protobuf
if case .contact(_) = destination, message is VisibleMessage { if case .contact(_) = destination, message is VisibleMessage, !isSelfSend {
DispatchQueue.main.async { DispatchQueue.main.async {
NotificationCenter.default.post(name: .encryptingMessage, object: NSNumber(value: message.sentTimestamp!)) NotificationCenter.default.post(name: .encryptingMessage, object: NSNumber(value: message.sentTimestamp!))
} }
@ -140,7 +150,7 @@ public final class MessageSender : NSObject {
return promise return promise
} }
// Calculate proof of work // Calculate proof of work
if case .contact(_) = destination, message is VisibleMessage { if case .contact(_) = destination, message is VisibleMessage, !isSelfSend {
DispatchQueue.main.async { DispatchQueue.main.async {
NotificationCenter.default.post(name: .calculatingMessagePoW, object: NSNumber(value: message.sentTimestamp!)) NotificationCenter.default.post(name: .calculatingMessagePoW, object: NSNumber(value: message.sentTimestamp!))
} }
@ -153,7 +163,7 @@ public final class MessageSender : NSObject {
return promise return promise
} }
// Send the result // Send the result
if case .contact(_) = destination, message is VisibleMessage { if case .contact(_) = destination, message is VisibleMessage, !isSelfSend {
DispatchQueue.main.async { DispatchQueue.main.async {
NotificationCenter.default.post(name: .messageSending, object: NSNumber(value: message.sentTimestamp!)) NotificationCenter.default.post(name: .messageSending, object: NSNumber(value: message.sentTimestamp!))
} }
@ -184,7 +194,7 @@ public final class MessageSender : NSObject {
storage.withAsync({ transaction in storage.withAsync({ transaction in
MessageSender.handleSuccessfulMessageSend(message, using: transaction) MessageSender.handleSuccessfulMessageSend(message, using: transaction)
}, completion: { }) }, completion: { })
if case .contact(_) = destination, message is VisibleMessage { if case .contact(_) = destination, message is VisibleMessage, !isSelfSend {
NotificationCenter.default.post(name: .messageSent, object: NSNumber(value: message.sentTimestamp!)) NotificationCenter.default.post(name: .messageSent, object: NSNumber(value: message.sentTimestamp!))
} }
if message is VisibleMessage { if message is VisibleMessage {

Loading…
Cancel
Save