|  |  |  | @ -169,8 +169,8 @@ NSString *NSStringFromOWSInteractionType(OWSInteractionType value) | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | - (uint64_t)timestampForUI | 
		
	
		
			
				|  |  |  |  | { | 
		
	
		
			
				|  |  |  |  |     if (_shouldUseServerTime) { | 
		
	
		
			
				|  |  |  |  |         return _receivedAtTimestamp; | 
		
	
		
			
				|  |  |  |  |     if ([self isKindOfClass:TSIncomingMessage.class] && ((TSIncomingMessage *) self).isOpenGroupMessage) { | 
		
	
		
			
				|  |  |  |  |         return ((TSIncomingMessage *) self).serverTimestamp.unsignedLongLongValue; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |     return _timestamp; | 
		
	
		
			
				|  |  |  |  | } | 
		
	
	
		
			
				
					|  |  |  | @ -180,14 +180,11 @@ NSString *NSStringFromOWSInteractionType(OWSInteractionType value) | 
		
	
		
			
				|  |  |  |  |     return self.timestamp; | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | - (void)setServerTimestampToReceivedTimestamp:(uint64_t)receivedAtTimestamp | 
		
	
		
			
				|  |  |  |  | { | 
		
	
		
			
				|  |  |  |  |     _shouldUseServerTime = YES; | 
		
	
		
			
				|  |  |  |  |     _receivedAtTimestamp = receivedAtTimestamp; | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | - (NSDate *)receivedAtDate | 
		
	
		
			
				|  |  |  |  | { | 
		
	
		
			
				|  |  |  |  |     if ([self isKindOfClass:TSIncomingMessage.class] && ((TSIncomingMessage *) self).isOpenGroupMessage) { | 
		
	
		
			
				|  |  |  |  |         return [NSDate ows_dateWithMillisecondsSince1970:((TSIncomingMessage *) self).serverTimestamp.unsignedLongLongValue]; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |     return [NSDate ows_dateWithMillisecondsSince1970:self.receivedAtTimestamp]; | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | @ -199,13 +196,10 @@ NSString *NSStringFromOWSInteractionType(OWSInteractionType value) | 
		
	
		
			
				|  |  |  |  |     // In open groups messages should be sorted by server timestamp. `sortId` represents the order in which messages | 
		
	
		
			
				|  |  |  |  |     // were processed. Since in the open group poller we sort messages by their server timestamp, sorting by `sortId` is | 
		
	
		
			
				|  |  |  |  |     // effectively the same as sorting by server timestamp. | 
		
	
		
			
				|  |  |  |  |     if ([self isKindOfClass:TSMessage.class] && ((TSMessage *)self).isOpenGroupMessage) { | 
		
	
		
			
				|  |  |  |  |     // sortId == serverTimestamp for open group messages. | 
		
	
		
			
				|  |  |  |  |     // sortId == timestamp (the sent timestamp) for one-to-one and closed group messages. | 
		
	
		
			
				|  |  |  |  |     sortId1 = self.sortId; | 
		
	
		
			
				|  |  |  |  |     sortId2 = other.sortId; | 
		
	
		
			
				|  |  |  |  |     } else { | 
		
	
		
			
				|  |  |  |  |         sortId1 = self.timestamp; | 
		
	
		
			
				|  |  |  |  |         sortId2 = other.timestamp; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     if (sortId1 > sortId2) { | 
		
	
		
			
				|  |  |  |  |         return NSOrderedDescending; | 
		
	
	
		
			
				
					|  |  |  | @ -229,6 +223,14 @@ NSString *NSStringFromOWSInteractionType(OWSInteractionType value) | 
		
	
		
			
				|  |  |  |  |                      (unsigned long)self.timestamp]; | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | - (uint64_t)sortId | 
		
	
		
			
				|  |  |  |  | { | 
		
	
		
			
				|  |  |  |  |     if ([self isKindOfClass:TSIncomingMessage.class] && ((TSIncomingMessage *) self).isOpenGroupMessage) { | 
		
	
		
			
				|  |  |  |  |         return ((TSIncomingMessage *) self).serverTimestamp.unsignedLongLongValue; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |     return self.timestamp; | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | - (void)saveWithTransaction:(YapDatabaseReadWriteTransaction *)transaction | 
		
	
		
			
				|  |  |  |  | { | 
		
	
		
			
				|  |  |  |  |     if (!self.uniqueId) { | 
		
	
	
		
			
				
					|  |  |  | 
 |