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 *messageData;
__block NSData *lastMessageData; __block NSData *lastMessageData;
[self.editingDatabaseConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) { [self.editingDatabaseConnection readWithBlock:^(YapDatabaseReadTransaction *_Nonnull transaction) {
messageData = [syncContactsMessage buildPlainTextAttachmentDataWithTransaction:transaction]; messageData = [syncContactsMessage buildPlainTextAttachmentDataWithTransaction:transaction];
lastMessageData = [transaction objectForKey:kOWSPrimaryStorageOWSContactsSyncingLastMessageKey lastMessageData = [transaction objectForKey:kOWSPrimaryStorageOWSContactsSyncingLastMessageKey
inCollection:kOWSPrimaryStorageOWSContactsSyncingCollection]; inCollection:kOWSPrimaryStorageOWSContactsSyncingCollection];

@ -47,7 +47,14 @@ NS_ASSUME_NONNULL_BEGIN
_lastMessageDate = nil; _lastMessageDate = nil;
_creationDate = [NSDate date]; _creationDate = [NSDate date];
_messageDraft = nil; _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; return self;
@ -61,8 +68,14 @@ NS_ASSUME_NONNULL_BEGIN
} }
if (!_conversationColorName) { if (!_conversationColorName) {
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]; _conversationColorName = [self.class stableConversationColorNameForString:self.uniqueId];
} }
}
return self; return self;
} }

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

@ -71,7 +71,7 @@ NS_ASSUME_NONNULL_BEGIN
return syncMessageBuilder; return syncMessageBuilder;
} }
- (NSData *)buildPlainTextAttachmentDataWithTransaction:(YapDatabaseReadWriteTransaction *)transaction - (NSData *)buildPlainTextAttachmentDataWithTransaction:(YapDatabaseReadTransaction *)transaction
{ {
id<ContactsManagerProtocol> contactsManager = TextSecureKitEnv.sharedEnv.contactsManager; id<ContactsManagerProtocol> contactsManager = TextSecureKitEnv.sharedEnv.contactsManager;
@ -87,12 +87,22 @@ NS_ASSUME_NONNULL_BEGIN
[self.identityManager recipientIdentityForRecipientId:signalAccount.recipientId]; [self.identityManager recipientIdentityForRecipientId:signalAccount.recipientId];
NSData *_Nullable profileKeyData = [self.profileManager profileKeyDataForRecipientId: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 [contactsOutputStream writeSignalAccount:signalAccount
recipientIdentity:recipientIdentity recipientIdentity:recipientIdentity
profileKeyData:profileKeyData profileKeyData:profileKeyData
contactsManager:contactsManager contactsManager:contactsManager
conversationColorName:contactThread.conversationColorName]; conversationColorName:conversationColorName];
} }
[contactsOutputStream flush]; [contactsOutputStream flush];

Loading…
Cancel
Save