parent
315775ff23
commit
d5118273b8
|
@ -43,11 +43,6 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
return NO;
|
||||
}
|
||||
|
||||
- (BOOL)isLegacyMessage
|
||||
{
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (OWSSignalServiceProtosDataMessageBuilder *)dataMessageBuilder
|
||||
{
|
||||
OWSSignalServiceProtosGroupContextBuilder *groupContextBuilder = [OWSSignalServiceProtosGroupContextBuilder new];
|
||||
|
@ -60,14 +55,6 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
return builder;
|
||||
}
|
||||
|
||||
- (NSData *)buildPlainTextData
|
||||
{
|
||||
OWSSignalServiceProtosContentBuilder *contentBuilder = [OWSSignalServiceProtosContentBuilder new];
|
||||
[contentBuilder setDataMessageBuilder:[self dataMessageBuilder]];
|
||||
|
||||
return [[contentBuilder build] data];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
|
@ -498,7 +498,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
__block TSThread *thread;
|
||||
[[TSStorageManager sharedManager].dbConnection
|
||||
readWriteWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) {
|
||||
readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
thread = [TSContactThread getOrCreateThreadWithContactId:recipientId transaction:transaction];
|
||||
}];
|
||||
|
||||
|
@ -570,10 +570,10 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
return;
|
||||
}
|
||||
[attachmentsProcessor fetchAttachmentsForMessage:nil
|
||||
success:^(TSAttachmentStream *_Nonnull attachmentStream) {
|
||||
success:^(TSAttachmentStream *attachmentStream) {
|
||||
[groupThread updateAvatarWithAttachmentStream:attachmentStream];
|
||||
}
|
||||
failure:^(NSError *_Nonnull error) {
|
||||
failure:^(NSError *error) {
|
||||
DDLogError(@"%@ failed to fetch attachments for group avatar sent at: %llu. with error: %@",
|
||||
self.tag,
|
||||
envelope.timestamp,
|
||||
|
@ -597,16 +597,21 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
return;
|
||||
}
|
||||
|
||||
TSIncomingMessage *createdMessage = [self handleReceivedEnvelope:envelope
|
||||
withDataMessage:dataMessage
|
||||
attachmentIds:attachmentsProcessor.supportedAttachmentIds];
|
||||
TSIncomingMessage *_Nullable createdMessage =
|
||||
[self handleReceivedEnvelope:envelope
|
||||
withDataMessage:dataMessage
|
||||
attachmentIds:attachmentsProcessor.supportedAttachmentIds];
|
||||
|
||||
if (!createdMessage) {
|
||||
return;
|
||||
}
|
||||
|
||||
[attachmentsProcessor fetchAttachmentsForMessage:createdMessage
|
||||
success:^(TSAttachmentStream *_Nonnull attachmentStream) {
|
||||
success:^(TSAttachmentStream *attachmentStream) {
|
||||
DDLogDebug(
|
||||
@"%@ successfully fetched attachment: %@ for message: %@", self.tag, attachmentStream, createdMessage);
|
||||
}
|
||||
failure:^(NSError *_Nonnull error) {
|
||||
failure:^(NSError *error) {
|
||||
DDLogError(
|
||||
@"%@ failed to fetch attachments for message: %@ with error: %@", self.tag, createdMessage, error);
|
||||
}];
|
||||
|
@ -626,13 +631,13 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
networkManager:self.networkManager];
|
||||
|
||||
if ([self isDataMessageGroupAvatarUpdate:syncMessage.sent.message]) {
|
||||
[recordJob runWithAttachmentHandler:^(TSAttachmentStream *_Nonnull attachmentStream) {
|
||||
[recordJob runWithAttachmentHandler:^(TSAttachmentStream *attachmentStream) {
|
||||
TSGroupThread *groupThread =
|
||||
[TSGroupThread getOrCreateThreadWithGroupIdData:syncMessage.sent.message.group.id];
|
||||
[groupThread updateAvatarWithAttachmentStream:attachmentStream];
|
||||
}];
|
||||
} else {
|
||||
[recordJob runWithAttachmentHandler:^(TSAttachmentStream *_Nonnull attachmentStream) {
|
||||
[recordJob runWithAttachmentHandler:^(TSAttachmentStream *attachmentStream) {
|
||||
DDLogDebug(@"%@ successfully fetched transcript attachment: %@", self.tag, attachmentStream);
|
||||
}];
|
||||
}
|
||||
|
@ -756,7 +761,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
success:^{
|
||||
DDLogDebug(@"%@ Successfully sent group update with avatar", self.tag);
|
||||
}
|
||||
failure:^(NSError *_Nonnull error) {
|
||||
failure:^(NSError *error) {
|
||||
DDLogError(@"%@ Failed to send group avatar update with error: %@", self.tag, error);
|
||||
}];
|
||||
} else {
|
||||
|
@ -764,15 +769,50 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
success:^{
|
||||
DDLogDebug(@"%@ Successfully sent group update", self.tag);
|
||||
}
|
||||
failure:^(NSError *_Nonnull error) {
|
||||
failure:^(NSError *error) {
|
||||
DDLogError(@"%@ Failed to send group update with error: %@", self.tag, error);
|
||||
}];
|
||||
}
|
||||
}
|
||||
|
||||
- (TSIncomingMessage *)handleReceivedEnvelope:(OWSSignalServiceProtosEnvelope *)envelope
|
||||
withDataMessage:(OWSSignalServiceProtosDataMessage *)dataMessage
|
||||
attachmentIds:(NSArray<NSString *> *)attachmentIds
|
||||
- (void)handleGroupInfoRequest:(OWSSignalServiceProtosDataMessage *)dataMessage
|
||||
{
|
||||
OWSAssert([NSThread isMainThread]);
|
||||
OWSAssert(dataMessage.group.type == OWSSignalServiceProtosGroupContextTypeRequestInfo);
|
||||
|
||||
NSData *groupId = dataMessage.hasGroup ? dataMessage.group.id : nil;
|
||||
if (!groupId) {
|
||||
OWSAssert(groupId);
|
||||
return;
|
||||
}
|
||||
|
||||
DDLogInfo(@"%@ Received 'Request Group Info' message for group: %@", self.tag, groupId);
|
||||
|
||||
[self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
TSGroupModel *emptyModelToFillOutId =
|
||||
[[TSGroupModel alloc] initWithTitle:nil memberIds:nil image:nil groupId:dataMessage.group.id];
|
||||
TSGroupThread *gThread = [TSGroupThread threadWithGroupModel:emptyModelToFillOutId transaction:transaction];
|
||||
if (!gThread) {
|
||||
DDLogInfo(@"%@ Unknown group: %@", self.tag, groupId);
|
||||
return;
|
||||
}
|
||||
|
||||
NSString *updateGroupInfo =
|
||||
[gThread.groupModel getInfoStringAboutUpdateTo:gThread.groupModel contactsManager:self.contactsManager];
|
||||
TSOutgoingMessage *message = [[TSOutgoingMessage alloc] initWithTimestamp:[NSDate ows_millisecondTimeStamp]
|
||||
inThread:gThread
|
||||
groupMetaMessage:TSGroupMessageUpdate];
|
||||
[message updateWithCustomMessage:updateGroupInfo transaction:transaction];
|
||||
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self sendGroupUpdateForThread:gThread message:message];
|
||||
});
|
||||
}];
|
||||
}
|
||||
|
||||
- (TSIncomingMessage *_Nullable)handleReceivedEnvelope:(OWSSignalServiceProtosEnvelope *)envelope
|
||||
withDataMessage:(OWSSignalServiceProtosDataMessage *)dataMessage
|
||||
attachmentIds:(NSArray<NSString *> *)attachmentIds
|
||||
{
|
||||
OWSAssert([NSThread isMainThread]);
|
||||
uint64_t timestamp = envelope.timestamp;
|
||||
|
@ -786,32 +826,13 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
OWSAssert([TSAccountManager isRegistered]);
|
||||
NSString *localNumber = [TSAccountManager localNumber];
|
||||
|
||||
if (dataMessage.group.type == OWSSignalServiceProtosGroupContextTypeRequestInfo) {
|
||||
[self handleGroupInfoRequest:dataMessage];
|
||||
return nil;
|
||||
}
|
||||
|
||||
[self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
if (groupId) {
|
||||
if (dataMessage.group.type == OWSSignalServiceProtosGroupContextTypeRequestInfo) {
|
||||
DDLogInfo(@"Received 'Request Group Info' message for group: %@", groupId);
|
||||
|
||||
TSGroupModel *emptyModelToFillOutId =
|
||||
[[TSGroupModel alloc] initWithTitle:nil memberIds:nil image:nil groupId:dataMessage.group.id];
|
||||
TSGroupThread *gThread =
|
||||
[TSGroupThread threadWithGroupModel:emptyModelToFillOutId transaction:transaction];
|
||||
if (gThread) {
|
||||
NSString *updateGroupInfo = [gThread.groupModel getInfoStringAboutUpdateTo:gThread.groupModel
|
||||
contactsManager:self.contactsManager];
|
||||
TSOutgoingMessage *message =
|
||||
[[TSOutgoingMessage alloc] initWithTimestamp:[NSDate ows_millisecondTimeStamp]
|
||||
inThread:gThread
|
||||
groupMetaMessage:TSGroupMessageUpdate];
|
||||
[message updateWithCustomMessage:updateGroupInfo transaction:transaction];
|
||||
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self sendGroupUpdateForThread:gThread message:message];
|
||||
});
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
NSMutableArray *uniqueMemberIds = [[[NSSet setWithArray:dataMessage.group.members] allObjects] mutableCopy];
|
||||
TSGroupModel *model = [[TSGroupModel alloc] initWithTitle:dataMessage.group.name
|
||||
memberIds:uniqueMemberIds
|
||||
|
|
Loading…
Reference in New Issue