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;
}
if (!_conversationColorName) {
if (_conversationColorName.length == 0) {
NSString *_Nullable contactId = self.contactIdentifier;
if (contactId.length > 0) {
// To be consistent with colors synced to desktop

@ -20,7 +20,7 @@ NS_ASSUME_NONNULL_BEGIN
relay:(nullable NSString *)relay;
// 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;

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

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

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

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

Loading…
Cancel
Save