Merge branch 'charlesmchen/explicitExpireTimer' into release/2.21.0

pull/1/head
Michael Kirk 7 years ago
commit dafde88f8b

@ -54,6 +54,11 @@ NS_ASSUME_NONNULL_BEGIN
[contactBuilder setProfileKey:profileKeyData]; [contactBuilder setProfileKey:profileKeyData];
} }
// Always ensure the "expire timer" property is set so that desktop
// can easily distinguish between a modern client declaring "off" vs a
// legacy client "not specifying".
[contactBuilder setExpireTimer:0];
TSContactThread *_Nullable contactThread = [TSContactThread getThreadWithContactId:signalAccount.recipientId]; TSContactThread *_Nullable contactThread = [TSContactThread getThreadWithContactId:signalAccount.recipientId];
if (contactThread) { if (contactThread) {
OWSDisappearingMessagesConfiguration *_Nullable disappearingMessagesConfiguration = OWSDisappearingMessagesConfiguration *_Nullable disappearingMessagesConfiguration =
@ -61,11 +66,6 @@ NS_ASSUME_NONNULL_BEGIN
if (disappearingMessagesConfiguration && disappearingMessagesConfiguration.isEnabled) { if (disappearingMessagesConfiguration && disappearingMessagesConfiguration.isEnabled) {
[contactBuilder setExpireTimer:disappearingMessagesConfiguration.durationSeconds]; [contactBuilder setExpireTimer:disappearingMessagesConfiguration.durationSeconds];
} else {
// Rather than *not* set the field, we expicitly set it to 0 so desktop
// can easily distinguish between a modern client declaring "off" vs a
// legacy client "not specifying".
[contactBuilder setExpireTimer:0];
} }
} }

@ -6,12 +6,12 @@
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@class TSGroupModel; @class TSGroupThread;
@class YapDatabaseReadTransaction; @class YapDatabaseReadTransaction;
@interface OWSGroupsOutputStream : OWSChunkedOutputStream @interface OWSGroupsOutputStream : OWSChunkedOutputStream
- (void)writeGroup:(TSGroupModel *)group transaction:(YapDatabaseReadTransaction *)transaction; - (void)writeGroup:(TSGroupThread *)groupThread transaction:(YapDatabaseReadTransaction *)transaction;
@end @end

@ -14,11 +14,14 @@ NS_ASSUME_NONNULL_BEGIN
@implementation OWSGroupsOutputStream @implementation OWSGroupsOutputStream
- (void)writeGroup:(TSGroupModel *)group transaction:(YapDatabaseReadTransaction *)transaction - (void)writeGroup:(TSGroupThread *)groupThread transaction:(YapDatabaseReadTransaction *)transaction
{ {
OWSAssert(group); OWSAssert(groupThread);
OWSAssert(transaction); OWSAssert(transaction);
TSGroupModel *group = groupThread.groupModel;
OWSAssert(group);
OWSSignalServiceProtosGroupDetailsBuilder *groupBuilder = [OWSSignalServiceProtosGroupDetailsBuilder new]; OWSSignalServiceProtosGroupDetailsBuilder *groupBuilder = [OWSSignalServiceProtosGroupDetailsBuilder new];
[groupBuilder setId:group.groupId]; [groupBuilder setId:group.groupId];
[groupBuilder setName:group.groupName]; [groupBuilder setName:group.groupName];
@ -35,19 +38,16 @@ NS_ASSUME_NONNULL_BEGIN
[groupBuilder setAvatarBuilder:avatarBuilder]; [groupBuilder setAvatarBuilder:avatarBuilder];
} }
TSGroupThread *_Nullable groupThread = [TSGroupThread threadWithGroupId:group.groupId transaction:transaction]; OWSDisappearingMessagesConfiguration *_Nullable disappearingMessagesConfiguration =
if (groupThread) { [OWSDisappearingMessagesConfiguration fetchObjectWithUniqueID:groupThread.uniqueId transaction:transaction];
OWSDisappearingMessagesConfiguration *_Nullable disappearingMessagesConfiguration =
[OWSDisappearingMessagesConfiguration fetchObjectWithUniqueID:groupThread.uniqueId transaction:transaction];
if (disappearingMessagesConfiguration && disappearingMessagesConfiguration.isEnabled) { if (disappearingMessagesConfiguration && disappearingMessagesConfiguration.isEnabled) {
[groupBuilder setExpireTimer:disappearingMessagesConfiguration.durationSeconds]; [groupBuilder setExpireTimer:disappearingMessagesConfiguration.durationSeconds];
} else { } else {
// Rather than *not* set the field, we expicitly set it to 0 so desktop // Rather than *not* set the field, we expicitly set it to 0 so desktop
// can easily distinguish between a modern client declaring "off" vs a // can easily distinguish between a modern client declaring "off" vs a
// legacy client "not specifying". // legacy client "not specifying".
[groupBuilder setExpireTimer:0]; [groupBuilder setExpireTimer:0];
}
} }
NSData *groupData = [[groupBuilder build] data]; NSData *groupData = [[groupBuilder build] data];

@ -56,8 +56,8 @@ NS_ASSUME_NONNULL_BEGIN
DDLogVerbose(@"Ignoring non group thread in thread collection: %@", obj); DDLogVerbose(@"Ignoring non group thread in thread collection: %@", obj);
return; return;
} }
TSGroupModel *group = ((TSGroupThread *)obj).groupModel; TSGroupThread *groupThread = (TSGroupThread *)obj;
[groupsOutputStream writeGroup:group transaction:transaction]; [groupsOutputStream writeGroup:groupThread transaction:transaction];
}]; }];
[groupsOutputStream flush]; [groupsOutputStream flush];

Loading…
Cancel
Save