diff --git a/Signal/src/ViewControllers/MediaPageViewController.swift b/Signal/src/ViewControllers/MediaPageViewController.swift index 39bb6be74..fa765971d 100644 --- a/Signal/src/ViewControllers/MediaPageViewController.swift +++ b/Signal/src/ViewControllers/MediaPageViewController.swift @@ -670,7 +670,19 @@ class MediaPageViewController: UIPageViewController, UIPageViewControllerDataSou switch message { case let incomingMessage as TSIncomingMessage: let hexEncodedPublicKey = incomingMessage.authorId - return DisplayNameUtilities.getPrivateChatDisplayName(for: hexEncodedPublicKey) ?? hexEncodedPublicKey // TODO: Public chats + if incomingMessage.thread.isGroupThread() { + var publicChat: LokiPublicChat? + OWSPrimaryStorage.shared().dbReadConnection.read { transaction in + publicChat = LokiDatabaseUtilities.getPublicChat(for: incomingMessage.thread.uniqueId!, in: transaction) + } + if let publicChat = publicChat { + return DisplayNameUtilities.getPublicChatDisplayName(for: hexEncodedPublicKey, in: publicChat.channel, on: publicChat.server) ?? hexEncodedPublicKey + } else { + return hexEncodedPublicKey + } + } else { + return DisplayNameUtilities.getPrivateChatDisplayName(for: hexEncodedPublicKey) ?? hexEncodedPublicKey + } case is TSOutgoingMessage: return NSLocalizedString("MEDIA_GALLERY_SENDER_NAME_YOU", comment: "Short sender label for media sent by you") default: diff --git a/SignalServiceKit/src/Loki/API/Public Chat/LokiPublicChatPoller.swift b/SignalServiceKit/src/Loki/API/Public Chat/LokiPublicChatPoller.swift index 9d4ff42dc..6b6c5f578 100644 --- a/SignalServiceKit/src/Loki/API/Public Chat/LokiPublicChatPoller.swift +++ b/SignalServiceKit/src/Loki/API/Public Chat/LokiPublicChatPoller.swift @@ -76,7 +76,8 @@ public final class LokiPublicChatPoller : NSObject { signalQuote.setText(quote.quotedMessageBody) dataMessage.setQuote(try! signalQuote.build()) } - dataMessage.setBody(message.body) + let body = (message.body == message.timestamp.description) ? "" : message.body // Workaround for the fact that the back-end doesn't accept messages without a body + dataMessage.setBody(body) if let messageServerID = message.serverID { let publicChatInfo = SSKProtoPublicChatInfo.builder() publicChatInfo.setServerID(messageServerID) @@ -112,7 +113,8 @@ public final class LokiPublicChatPoller : NSObject { } else { signalQuote = nil } - let message = TSOutgoingMessage(outgoingMessageWithTimestamp: message.timestamp, in: thread, messageBody: message.body, attachmentIds: [], expiresInSeconds: 0, + let body = (message.body == message.timestamp.description) ? "" : message.body // Workaround for the fact that the back-end doesn't accept messages without a body + let message = TSOutgoingMessage(outgoingMessageWithTimestamp: message.timestamp, in: thread, messageBody: body, attachmentIds: [], expiresInSeconds: 0, expireStartedAt: 0, isVoiceMessage: false, groupMetaMessage: .deliver, quotedMessage: signalQuote, contactShare: nil, linkPreview: nil) storage.dbReadWriteConnection.readWrite { transaction in message.update(withSentRecipient: publicChat.server, wasSentByUD: false, transaction: transaction) diff --git a/SignalServiceKit/src/Messages/Attachments/OWSAttachmentDownloads.m b/SignalServiceKit/src/Messages/Attachments/OWSAttachmentDownloads.m index ceaa53bd8..4db343ed9 100644 --- a/SignalServiceKit/src/Messages/Attachments/OWSAttachmentDownloads.m +++ b/SignalServiceKit/src/Messages/Attachments/OWSAttachmentDownloads.m @@ -433,7 +433,7 @@ typedef void (^AttachmentDownloadFailure)(NSError *error); unpaddedSize:attachmentPointer.byteCount error:&decryptError]; } else { - plaintext = cipherText; + plaintext = cipherText; // Loki: Public chat attachments are unencrypted } if (decryptError) { diff --git a/SignalServiceKit/src/Messages/Attachments/TSAttachment.m b/SignalServiceKit/src/Messages/Attachments/TSAttachment.m index 75e82b0bd..0b27a72ec 100644 --- a/SignalServiceKit/src/Messages/Attachments/TSAttachment.m +++ b/SignalServiceKit/src/Messages/Attachments/TSAttachment.m @@ -138,7 +138,7 @@ NSUInteger const TSAttachmentSchemaVersion = 4; { if (!pointer.lazyRestoreFragment) { OWSAssertDebug(pointer.serverId > 0); - // OWSAssertDebug(pointer.encryptionKey.length > 0); +// OWSAssertDebug(pointer.encryptionKey.length > 0); if (pointer.byteCount <= 0) { // This will fail with legacy iOS clients which don't upload attachment size. OWSLogWarn(@"Missing pointer.byteCount for attachment with serverId: %lld", pointer.serverId); diff --git a/SignalServiceKit/src/Messages/OWSMessageSender.m b/SignalServiceKit/src/Messages/OWSMessageSender.m index ab3f38223..32dc683e2 100644 --- a/SignalServiceKit/src/Messages/OWSMessageSender.m +++ b/SignalServiceKit/src/Messages/OWSMessageSender.m @@ -1208,12 +1208,12 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; quotedMessageServerID = [LKDatabaseUtilities getServerIDForQuoteWithID:quoteID quoteeHexEncodedPublicKey:quoteeHexEncodedPublicKey threadID:messageSend.thread.uniqueId transaction:transaction]; }]; } - LKGroupMessage *groupMessage = [[LKGroupMessage alloc] initWithHexEncodedPublicKey:userHexEncodedPublicKey displayName:displayName body:@"Test" type:LKPublicChatAPI.publicChatMessageType + NSString *body = (message.body != nil && message.body.length > 0) ? message.body : [NSString stringWithFormat:@"%@", @(message.timestamp)]; // Workaround for the fact that the back-end doesn't accept messages without a body + LKGroupMessage *groupMessage = [[LKGroupMessage alloc] initWithHexEncodedPublicKey:userHexEncodedPublicKey displayName:displayName body:body type:LKPublicChatAPI.publicChatMessageType timestamp:message.timestamp quotedMessageTimestamp:quoteID quoteeHexEncodedPublicKey:quoteeHexEncodedPublicKey quotedMessageBody:quote.body quotedMessageServerID:quotedMessageServerID signatureData:nil signatureVersion:0]; for (NSString *attachmentID in message.attachmentIds) { TSAttachmentStream *attachment = [TSAttachmentStream fetchObjectWithUniqueID:attachmentID]; if (attachment == nil) { continue; } - // TODO: Videos [groupMessage addAttachmentWithServer:publicChat.server serverID:attachment.serverId contentType:attachment.contentType size:attachment.byteCount fileName:attachment.sourceFilename flags:0 width:@(attachment.imageSize.width).unsignedIntegerValue height:@(attachment.imageSize.height).unsignedIntegerValue caption:attachment.caption url:attachment.downloadURL]; } [[LKPublicChatAPI sendMessage:groupMessage toGroup:publicChat.channel onServer:publicChat.server]