diff --git a/SignalServiceKit/src/Devices/OWSContactsOutputStream.m b/SignalServiceKit/src/Devices/OWSContactsOutputStream.m index e542c602e..50470f7d2 100644 --- a/SignalServiceKit/src/Devices/OWSContactsOutputStream.m +++ b/SignalServiceKit/src/Devices/OWSContactsOutputStream.m @@ -54,6 +54,11 @@ NS_ASSUME_NONNULL_BEGIN [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]; if (contactThread) { OWSDisappearingMessagesConfiguration *_Nullable disappearingMessagesConfiguration = @@ -61,11 +66,6 @@ NS_ASSUME_NONNULL_BEGIN if (disappearingMessagesConfiguration && disappearingMessagesConfiguration.isEnabled) { [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]; } } diff --git a/SignalServiceKit/src/Devices/OWSGroupsOutputStream.h b/SignalServiceKit/src/Devices/OWSGroupsOutputStream.h index f8909bc70..f45a65bba 100644 --- a/SignalServiceKit/src/Devices/OWSGroupsOutputStream.h +++ b/SignalServiceKit/src/Devices/OWSGroupsOutputStream.h @@ -6,12 +6,12 @@ NS_ASSUME_NONNULL_BEGIN -@class TSGroupModel; +@class TSGroupThread; @class YapDatabaseReadTransaction; @interface OWSGroupsOutputStream : OWSChunkedOutputStream -- (void)writeGroup:(TSGroupModel *)group transaction:(YapDatabaseReadTransaction *)transaction; +- (void)writeGroup:(TSGroupThread *)groupThread transaction:(YapDatabaseReadTransaction *)transaction; @end diff --git a/SignalServiceKit/src/Devices/OWSGroupsOutputStream.m b/SignalServiceKit/src/Devices/OWSGroupsOutputStream.m index 8aa15079b..7cfad1e3d 100644 --- a/SignalServiceKit/src/Devices/OWSGroupsOutputStream.m +++ b/SignalServiceKit/src/Devices/OWSGroupsOutputStream.m @@ -14,11 +14,14 @@ NS_ASSUME_NONNULL_BEGIN @implementation OWSGroupsOutputStream -- (void)writeGroup:(TSGroupModel *)group transaction:(YapDatabaseReadTransaction *)transaction +- (void)writeGroup:(TSGroupThread *)groupThread transaction:(YapDatabaseReadTransaction *)transaction { - OWSAssert(group); + OWSAssert(groupThread); OWSAssert(transaction); + TSGroupModel *group = groupThread.groupModel; + OWSAssert(group); + OWSSignalServiceProtosGroupDetailsBuilder *groupBuilder = [OWSSignalServiceProtosGroupDetailsBuilder new]; [groupBuilder setId:group.groupId]; [groupBuilder setName:group.groupName]; @@ -35,19 +38,16 @@ NS_ASSUME_NONNULL_BEGIN [groupBuilder setAvatarBuilder:avatarBuilder]; } - TSGroupThread *_Nullable groupThread = [TSGroupThread threadWithGroupId:group.groupId transaction:transaction]; - if (groupThread) { - OWSDisappearingMessagesConfiguration *_Nullable disappearingMessagesConfiguration = - [OWSDisappearingMessagesConfiguration fetchObjectWithUniqueID:groupThread.uniqueId transaction:transaction]; + OWSDisappearingMessagesConfiguration *_Nullable disappearingMessagesConfiguration = + [OWSDisappearingMessagesConfiguration fetchObjectWithUniqueID:groupThread.uniqueId transaction:transaction]; - if (disappearingMessagesConfiguration && disappearingMessagesConfiguration.isEnabled) { - [groupBuilder 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". - [groupBuilder setExpireTimer:0]; - } + if (disappearingMessagesConfiguration && disappearingMessagesConfiguration.isEnabled) { + [groupBuilder 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". + [groupBuilder setExpireTimer:0]; } NSData *groupData = [[groupBuilder build] data]; diff --git a/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncGroupsMessage.m b/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncGroupsMessage.m index fcf11fdeb..575a1d161 100644 --- a/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncGroupsMessage.m +++ b/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncGroupsMessage.m @@ -56,8 +56,8 @@ NS_ASSUME_NONNULL_BEGIN DDLogVerbose(@"Ignoring non group thread in thread collection: %@", obj); return; } - TSGroupModel *group = ((TSGroupThread *)obj).groupModel; - [groupsOutputStream writeGroup:group transaction:transaction]; + TSGroupThread *groupThread = (TSGroupThread *)obj; + [groupsOutputStream writeGroup:groupThread transaction:transaction]; }]; [groupsOutputStream flush];