Fix getter for contact threads, remove sneaky read transaction for DM config.

pull/1/head
Michael Kirk 7 years ago
parent 92705490a0
commit a66c88e3cf

@ -67,7 +67,7 @@ NS_ASSUME_NONNULL_BEGIN
return self; return self;
} }
if (!_conversationColorName) { if (_conversationColorName.length == 0) {
NSString *_Nullable contactId = self.contactIdentifier; NSString *_Nullable contactId = self.contactIdentifier;
if (contactId.length > 0) { if (contactId.length > 0) {
// To be consistent with colors synced to desktop // To be consistent with colors synced to desktop

@ -20,7 +20,7 @@ NS_ASSUME_NONNULL_BEGIN
relay:(nullable NSString *)relay; relay:(nullable NSString *)relay;
// Unlike getOrCreateThreadWithContactId, this will _NOT_ create a thread if one does not already exist. // Unlike getOrCreateThreadWithContactId, this will _NOT_ create a thread if one does not already exist.
+ (nullable instancetype)getThreadWithContactId:(NSString *)contactId; + (nullable instancetype)getThreadWithContactId:(NSString *)contactId transaction:(YapDatabaseReadTransaction *)transaction;
- (NSString *)contactIdentifier; - (NSString *)contactIdentifier;

@ -83,17 +83,9 @@ NS_ASSUME_NONNULL_BEGIN
return thread; return thread;
} }
+ (nullable instancetype)getThreadWithContactId:(NSString *)contactId + (nullable instancetype)getThreadWithContactId:(NSString *)contactId transaction:(YapDatabaseReadTransaction *)transaction;
{ {
OWSAssert(contactId.length > 0); return [TSContactThread fetchObjectWithUniqueID:[self threadIdFromContactId:contactId] transaction:transaction];
__block TSContactThread *_Nullable thread;
[[self dbReadWriteConnection] readWithBlock:^(YapDatabaseReadTransaction *transaction) {
thread =
[TSContactThread fetchObjectWithUniqueID:[self threadIdFromContactId:contactId] transaction:transaction];
}];
return thread;
} }
- (NSString *)contactIdentifier { - (NSString *)contactIdentifier {

@ -6,6 +6,7 @@
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@class OWSDisappearingMessagesConfiguration;
@class OWSRecipientIdentity; @class OWSRecipientIdentity;
@class SignalAccount; @class SignalAccount;
@ -17,7 +18,9 @@ NS_ASSUME_NONNULL_BEGIN
recipientIdentity:(nullable OWSRecipientIdentity *)recipientIdentity recipientIdentity:(nullable OWSRecipientIdentity *)recipientIdentity
profileKeyData:(nullable NSData *)profileKeyData profileKeyData:(nullable NSData *)profileKeyData
contactsManager:(id<ContactsManagerProtocol>)contactsManager contactsManager:(id<ContactsManagerProtocol>)contactsManager
conversationColorName:(NSString *)conversationColorName; conversationColorName:(NSString *)conversationColorName
disappearingMessagesConfiguration:(nullable OWSDisappearingMessagesConfiguration *)disappearingMessagesConfiguration;
@end @end

@ -25,6 +25,7 @@ NS_ASSUME_NONNULL_BEGIN
profileKeyData:(nullable NSData *)profileKeyData profileKeyData:(nullable NSData *)profileKeyData
contactsManager:(id<ContactsManagerProtocol>)contactsManager contactsManager:(id<ContactsManagerProtocol>)contactsManager
conversationColorName:(NSString *)conversationColorName conversationColorName:(NSString *)conversationColorName
disappearingMessagesConfiguration:(nullable OWSDisappearingMessagesConfiguration *)disappearingMessagesConfiguration
{ {
OWSAssert(signalAccount); OWSAssert(signalAccount);
OWSAssert(signalAccount.contact); OWSAssert(signalAccount.contact);
@ -67,14 +68,8 @@ NS_ASSUME_NONNULL_BEGIN
// legacy client "not specifying". // legacy client "not specifying".
[contactBuilder setExpireTimer:0]; [contactBuilder setExpireTimer:0];
TSContactThread *_Nullable contactThread = [TSContactThread getThreadWithContactId:signalAccount.recipientId]; if (disappearingMessagesConfiguration && disappearingMessagesConfiguration.isEnabled) {
if (contactThread) { [contactBuilder setExpireTimer:disappearingMessagesConfiguration.durationSeconds];
OWSDisappearingMessagesConfiguration *_Nullable disappearingMessagesConfiguration =
[OWSDisappearingMessagesConfiguration fetchObjectWithUniqueID:contactThread.uniqueId];
if (disappearingMessagesConfiguration && disappearingMessagesConfiguration.isEnabled) {
[contactBuilder setExpireTimer:disappearingMessagesConfiguration.durationSeconds];
}
} }
if ([OWSBlockingManager.sharedManager isRecipientIdBlocked:signalAccount.recipientId]) { if ([OWSBlockingManager.sharedManager isRecipientIdBlocked:signalAccount.recipientId]) {

@ -88,21 +88,23 @@ NS_ASSUME_NONNULL_BEGIN
NSData *_Nullable profileKeyData = [self.profileManager profileKeyDataForRecipientId:signalAccount.recipientId]; NSData *_Nullable profileKeyData = [self.profileManager profileKeyDataForRecipientId:signalAccount.recipientId];
NSString *conversationColorName = (NSString *)^() { OWSDisappearingMessagesConfiguration *_Nullable disappearingMessagesConfiguration;
TSContactThread *_Nullable contactThread = NSString *conversationColorName;
[TSContactThread fetchObjectWithUniqueID:signalAccount.recipientId transaction:transaction];
if (contactThread) { TSContactThread *_Nullable contactThread = [TSContactThread getThreadWithContactId:signalAccount.recipientId transaction:transaction];
return contactThread.conversationColorName; if (contactThread) {
} else { conversationColorName = contactThread.conversationColorName;
return [TSThread stableConversationColorNameForString:signalAccount.recipientId]; disappearingMessagesConfiguration = [contactThread disappearingMessagesConfigurationWithTransaction:transaction];
} } else {
}(); conversationColorName = [TSThread stableConversationColorNameForString:signalAccount.recipientId];
}
[contactsOutputStream writeSignalAccount:signalAccount [contactsOutputStream writeSignalAccount:signalAccount
recipientIdentity:recipientIdentity recipientIdentity:recipientIdentity
profileKeyData:profileKeyData profileKeyData:profileKeyData
contactsManager:contactsManager contactsManager:contactsManager
conversationColorName:conversationColorName]; conversationColorName:conversationColorName
disappearingMessagesConfiguration:disappearingMessagesConfiguration];
} }
[contactsOutputStream flush]; [contactsOutputStream flush];

Loading…
Cancel
Save