parent
742492dd32
commit
2cc3eabdb8
|
@ -2341,15 +2341,9 @@ typedef enum : NSUInteger {
|
|||
{
|
||||
DDLogDebug(@"%@ user did tap reply", self.logTag);
|
||||
|
||||
TSMessage *message = (TSMessage *)conversationItem.interaction;
|
||||
if (![message isKindOfClass:[TSMessage class]]) {
|
||||
OWSFail(@"%@ unexpected reply message: %@", self.logTag, message);
|
||||
return;
|
||||
}
|
||||
|
||||
__block OWSQuotedReplyModel *quotedReply;
|
||||
[self.uiDatabaseConnection readWithBlock:^(YapDatabaseReadTransaction *_Nonnull transaction) {
|
||||
quotedReply = [OWSQuotedReplyModel quotedReplyForMessage:message transaction:transaction];
|
||||
quotedReply = [OWSQuotedReplyModel quotedReplyForConversationViewItem:conversationItem transaction:transaction];
|
||||
}];
|
||||
|
||||
if (![quotedReply isKindOfClass:[OWSQuotedReplyModel class]]) {
|
||||
|
|
|
@ -1980,8 +1980,8 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
OWSAssert(messageToQuote);
|
||||
DDLogVerbose(@"%@ %@", self.logTag, label);
|
||||
[DDLog flushLog];
|
||||
quotedMessage = [[OWSQuotedReplyModel quotedReplyForMessage:messageToQuote transaction:transaction]
|
||||
buildQuotedMessage];
|
||||
ConversationViewItem *viewItem = [[ConversationViewItem alloc] initWithInteraction:messageToQuote isGroupThread:thread.isGroupThread transaction:transaction];
|
||||
quotedMessage = [[OWSQuotedReplyModel quotedReplyForConversationViewItem:viewItem transaction:transaction] buildQuotedMessage];
|
||||
} else {
|
||||
TSOutgoingMessage *_Nullable messageToQuote = [self createFakeOutgoingMessage:thread
|
||||
messageBody:quotedMessageBodyWIndex
|
||||
|
@ -1993,8 +1993,9 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
contactShare:nil
|
||||
transaction:transaction];
|
||||
OWSAssert(messageToQuote);
|
||||
quotedMessage = [[OWSQuotedReplyModel quotedReplyForMessage:messageToQuote transaction:transaction]
|
||||
buildQuotedMessage];
|
||||
|
||||
ConversationViewItem *viewItem = [[ConversationViewItem alloc] initWithInteraction:messageToQuote isGroupThread:thread.isGroupThread transaction:transaction];
|
||||
quotedMessage = [[OWSQuotedReplyModel quotedReplyForConversationViewItem:viewItem transaction:transaction] buildQuotedMessage];
|
||||
}
|
||||
OWSAssert(quotedMessage);
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
@class ConversationViewItem;
|
||||
@class TSAttachmentPointer;
|
||||
@class TSAttachmentStream;
|
||||
@class TSMessage;
|
||||
|
@ -32,19 +33,25 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
@property (nonatomic, readonly, nullable) NSString *sourceFilename;
|
||||
@property (nonatomic, readonly, nullable) UIImage *thumbnailImage;
|
||||
|
||||
// Used for building an outgoing quoted reply preview, before it's sent
|
||||
// Convenience initializer for building an outgoing quoted reply preview, before it's sent
|
||||
- (instancetype)initWithTimestamp:(uint64_t)timestamp
|
||||
authorId:(NSString *)authorId
|
||||
body:(NSString *_Nullable)body
|
||||
attachmentStream:(nullable TSAttachmentStream *)attachment;
|
||||
attachmentStream:(nullable TSAttachmentStream *)attachment; //TODO quotedAttachmentStream?
|
||||
|
||||
// Convenience initializer for building an outgoing quoted reply preview, before it's sent
|
||||
- (instancetype)initWithTimestamp:(uint64_t)timestamp
|
||||
authorId:(NSString *)authorId
|
||||
body:(NSString *_Nullable)body
|
||||
thumbnailImage:(nullable UIImage *)thumbnailImage;
|
||||
|
||||
// Used for persisted quoted replies, both incoming and outgoing.
|
||||
- (instancetype)initWithQuotedMessage:(TSQuotedMessage *)quotedMessage
|
||||
transaction:(YapDatabaseReadTransaction *)transaction;
|
||||
|
||||
// Builds a not-yet-sent QuotedReplyModel
|
||||
+ (nullable instancetype)quotedReplyForMessage:(TSMessage *)message
|
||||
transaction:(YapDatabaseReadTransaction *)transaction;
|
||||
+ (nullable instancetype)quotedReplyForConversationViewItem:(ConversationViewItem *)conversationItem
|
||||
transaction:(YapDatabaseReadTransaction *)transaction;
|
||||
|
||||
- (TSQuotedMessage *)buildQuotedMessage;
|
||||
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
//
|
||||
|
||||
#import "OWSQuotedReplyModel.h"
|
||||
#import "ConversationViewItem.h"
|
||||
#import <SignalMessaging/SignalMessaging-Swift.h>
|
||||
#import <SignalServiceKit/MIMETypeUtil.h>
|
||||
#import <SignalServiceKit/OWSMessageSender.h>
|
||||
#import <SignalServiceKit/TSAccountManager.h>
|
||||
|
@ -33,6 +35,22 @@
|
|||
thumbnailDownloadFailed:NO];
|
||||
}
|
||||
|
||||
- (instancetype)initWithTimestamp:(uint64_t)timestamp
|
||||
authorId:(NSString *)authorId
|
||||
body:(NSString *_Nullable)body
|
||||
thumbnailImage:(nullable UIImage *)thumbnailImage;
|
||||
{
|
||||
return [self initWithTimestamp:timestamp
|
||||
authorId:authorId
|
||||
body:body
|
||||
thumbnailImage:thumbnailImage
|
||||
contentType:nil
|
||||
sourceFilename:nil
|
||||
attachmentStream:nil
|
||||
thumbnailAttachmentPointer:nil
|
||||
thumbnailDownloadFailed:NO];
|
||||
}
|
||||
|
||||
- (instancetype)initWithQuotedMessage:(TSQuotedMessage *)quotedMessage
|
||||
transaction:(YapDatabaseReadTransaction *)transaction
|
||||
{
|
||||
|
@ -113,15 +131,23 @@
|
|||
quotedAttachmentsForSending:attachments];
|
||||
}
|
||||
|
||||
+ (nullable OWSQuotedReplyModel *)quotedReplyForMessage:(TSMessage *)message
|
||||
transaction:(YapDatabaseReadTransaction *)transaction;
|
||||
+ (nullable instancetype)quotedReplyForConversationViewItem:(ConversationViewItem *)conversationItem
|
||||
transaction:(YapDatabaseReadTransaction *)transaction;
|
||||
{
|
||||
OWSAssert(message);
|
||||
OWSAssert(conversationItem);
|
||||
OWSAssert(transaction);
|
||||
|
||||
TSMessage *message = (TSMessage *)conversationItem.interaction;
|
||||
if (![message isKindOfClass:[TSMessage class]]) {
|
||||
OWSFail(@"%@ unexpected reply message: %@", self.logTag, message);
|
||||
return nil;
|
||||
}
|
||||
|
||||
TSThread *thread = [message threadWithTransaction:transaction];
|
||||
OWSAssert(thread);
|
||||
|
||||
uint64_t timestamp = message.timestamp;
|
||||
|
||||
NSString *_Nullable authorId = ^{
|
||||
if ([message isKindOfClass:[TSOutgoingMessage class]]) {
|
||||
return [TSAccountManager localNumber];
|
||||
|
@ -133,8 +159,21 @@
|
|||
}
|
||||
}();
|
||||
OWSAssert(authorId.length > 0);
|
||||
|
||||
if (conversationItem.contactShare) {
|
||||
ContactShareViewModel *contactShare = conversationItem.contactShare;
|
||||
|
||||
// TODO We deliberately always pass `nil` for `thumbnailImage`, even though we might have a contactShare.avatarImage
|
||||
// because the QuotedReplyViewModel has some hardcoded assumptions that only quoted attachments have
|
||||
// thumbnails. Until we address that we want to be consistent about neither showing nor sending the
|
||||
// contactShare avatar in the quoted reply.
|
||||
return [[OWSQuotedReplyModel alloc] initWithTimestamp:timestamp
|
||||
authorId:authorId
|
||||
body:[@"👤 " stringByAppendingString:contactShare.displayName]
|
||||
thumbnailImage:nil];
|
||||
|
||||
}
|
||||
|
||||
uint64_t timestamp = message.timestamp;
|
||||
NSString *_Nullable quotedText = message.body;
|
||||
BOOL hasText = quotedText.length > 0;
|
||||
BOOL hasAttachment = NO;
|
||||
|
|
Loading…
Reference in New Issue