No write transaction needed for syncing colors

// FREEBIE
pull/1/head
Michael Kirk 7 years ago
parent 66e726a1f1
commit 92705490a0

@ -126,7 +126,7 @@ NSString *const kOWSPrimaryStorageOWSContactsSyncingLastMessageKey
__block NSData *messageData;
__block NSData *lastMessageData;
[self.editingDatabaseConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) {
[self.editingDatabaseConnection readWithBlock:^(YapDatabaseReadTransaction *_Nonnull transaction) {
messageData = [syncContactsMessage buildPlainTextAttachmentDataWithTransaction:transaction];
lastMessageData = [transaction objectForKey:kOWSPrimaryStorageOWSContactsSyncingLastMessageKey
inCollection:kOWSPrimaryStorageOWSContactsSyncingCollection];

@ -47,7 +47,14 @@ NS_ASSUME_NONNULL_BEGIN
_lastMessageDate = nil;
_creationDate = [NSDate date];
_messageDraft = nil;
_conversationColorName = [self.class randomConversationColorName];
NSString *_Nullable contactId = self.contactIdentifier;
if (contactId.length > 0) {
// To be consistent with colors synced to desktop
_conversationColorName = [self.class stableConversationColorNameForString:contactId];
} else {
_conversationColorName = [self.class stableConversationColorNameForString:self.uniqueId];
}
}
return self;
@ -61,7 +68,13 @@ NS_ASSUME_NONNULL_BEGIN
}
if (!_conversationColorName) {
_conversationColorName = [self.class stableConversationColorNameForString:self.uniqueId];
NSString *_Nullable contactId = self.contactIdentifier;
if (contactId.length > 0) {
// To be consistent with colors synced to desktop
_conversationColorName = [self.class stableConversationColorNameForString:contactId];
} else {
_conversationColorName = [self.class stableConversationColorNameForString:self.uniqueId];
}
}
return self;

@ -21,7 +21,7 @@ NS_ASSUME_NONNULL_BEGIN
- (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;
- (NSData *)buildPlainTextAttachmentDataWithTransaction:(YapDatabaseReadWriteTransaction *)transaction;
- (NSData *)buildPlainTextAttachmentDataWithTransaction:(YapDatabaseReadTransaction *)transaction;
@end

@ -71,7 +71,7 @@ NS_ASSUME_NONNULL_BEGIN
return syncMessageBuilder;
}
- (NSData *)buildPlainTextAttachmentDataWithTransaction:(YapDatabaseReadWriteTransaction *)transaction
- (NSData *)buildPlainTextAttachmentDataWithTransaction:(YapDatabaseReadTransaction *)transaction
{
id<ContactsManagerProtocol> contactsManager = TextSecureKitEnv.sharedEnv.contactsManager;
@ -87,12 +87,22 @@ NS_ASSUME_NONNULL_BEGIN
[self.identityManager recipientIdentityForRecipientId:signalAccount.recipientId];
NSData *_Nullable profileKeyData = [self.profileManager profileKeyDataForRecipientId:signalAccount.recipientId];
TSContactThread *contactThread = [TSContactThread getOrCreateThreadWithContactId:signalAccount.recipientId transaction:transaction];
NSString *conversationColorName = (NSString *)^() {
TSContactThread *_Nullable contactThread =
[TSContactThread fetchObjectWithUniqueID:signalAccount.recipientId transaction:transaction];
if (contactThread) {
return contactThread.conversationColorName;
} else {
return [TSThread stableConversationColorNameForString:signalAccount.recipientId];
}
}();
[contactsOutputStream writeSignalAccount:signalAccount
recipientIdentity:recipientIdentity
profileKeyData:profileKeyData
contactsManager:contactsManager
conversationColorName:contactThread.conversationColorName];
conversationColorName:conversationColorName];
}
[contactsOutputStream flush];

Loading…
Cancel
Save