This commit is contained in:
Niels Andriesse 2020-11-26 12:46:47 +11:00
parent ac6baec6f2
commit d5dc33e619
4 changed files with 9 additions and 7 deletions

View File

@ -3812,6 +3812,8 @@ typedef enum : NSUInteger {
[self.conversationViewModel appendUnsavedOutgoingTextMessage:tsMessage]; [self.conversationViewModel appendUnsavedOutgoingTextMessage:tsMessage];
[LKStorage writeWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { [LKStorage writeWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
[tsMessage saveWithTransaction:transaction]; [tsMessage saveWithTransaction:transaction];
}];
[LKStorage writeWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
[SNMessageSender send:message withAttachments:[NSArray<SignalAttachment *> new] inThread:thread usingTransaction:transaction]; [SNMessageSender send:message withAttachments:[NSArray<SignalAttachment *> new] inThread:thread usingTransaction:transaction];
[thread setDraft:@"" transaction:transaction]; [thread setDraft:@"" transaction:transaction];
}]; }];

View File

@ -172,7 +172,7 @@ extension MessageReceiver {
// Cancel any typing indicators // Cancel any typing indicators
cancelTypingIndicatorsIfNeeded(for: message.sender!) cancelTypingIndicatorsIfNeeded(for: message.sender!)
// Notify the user if needed // Notify the user if needed
guard let tsIncomingMessage = TSIncomingMessage.fetch(uniqueId: tsIncomingMessageID), let thread = TSThread.fetch(uniqueId: threadID) else { return } guard let tsIncomingMessage = TSIncomingMessage.fetch(uniqueId: tsIncomingMessageID, transaction: transaction), let thread = TSThread.fetch(uniqueId: threadID, transaction: transaction) else { return }
Storage.read { transaction in Storage.read { transaction in
SSKEnvironment.shared.notificationsManager!.notifyUser(for: tsIncomingMessage, in: thread, transaction: transaction) SSKEnvironment.shared.notificationsManager!.notifyUser(for: tsIncomingMessage, in: thread, transaction: transaction)
} }

View File

@ -7,7 +7,7 @@ internal extension MessageSender {
let storage = Configuration.shared.signalStorage let storage = Configuration.shared.signalStorage
let cipher = try SMKSecretSessionCipher(sessionResetImplementation: Configuration.shared.sessionRestorationImplementation, let cipher = try SMKSecretSessionCipher(sessionResetImplementation: Configuration.shared.sessionRestorationImplementation,
sessionStore: storage, preKeyStore: storage, signedPreKeyStore: storage, identityStore: Configuration.shared.identityKeyStore) sessionStore: storage, preKeyStore: storage, signedPreKeyStore: storage, identityStore: Configuration.shared.identityKeyStore)
let certificate = Configuration.shared.storage.getSenderCertificate(for: publicKey) let certificate = SMKSenderCertificate(senderDeviceId: 1, senderRecipientId: Configuration.shared.storage.getUserPublicKey()!)
return try cipher.throwswrapped_encryptMessage(recipientPublicKey: publicKey, deviceID: 1, paddedPlaintext: (plaintext as NSData).paddedMessageBody(), return try cipher.throwswrapped_encryptMessage(recipientPublicKey: publicKey, deviceID: 1, paddedPlaintext: (plaintext as NSData).paddedMessageBody(),
senderCertificate: certificate, protocolContext: transaction, useFallbackSessionCipher: true) senderCertificate: certificate, protocolContext: transaction, useFallbackSessionCipher: true)
} }

View File

@ -68,7 +68,7 @@ public final class MessageSender : NSObject {
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 { if case .contact(_) = destination, message is VisibleMessage {
NotificationCenter.default.post(name: .messageSendingFailed, object: NSNumber(value: message.sentTimestamp!)) NotificationCenter.default.post(name: .messageSendingFailed, object: NSNumber(value: message.sentTimestamp!))
} }
} }
@ -86,7 +86,7 @@ public final class MessageSender : NSObject {
return promise return promise
} }
// Encrypt the serialized protobuf // Encrypt the serialized protobuf
if case .contact(_) = destination { if case .contact(_) = destination, message is VisibleMessage {
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!))
} }
@ -125,7 +125,7 @@ public final class MessageSender : NSObject {
return promise return promise
} }
// Calculate proof of work // Calculate proof of work
if case .contact(_) = destination { if case .contact(_) = destination, message is VisibleMessage {
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!))
} }
@ -138,7 +138,7 @@ public final class MessageSender : NSObject {
return promise return promise
} }
// Send the result // Send the result
if case .contact(_) = destination { if case .contact(_) = destination, message is VisibleMessage {
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!))
} }
@ -169,7 +169,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 { if case .contact(_) = destination, message is VisibleMessage {
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 {