Merge branch 'charlesmchen/udProperties' into private-master

pull/1/head
Michael Kirk 7 years ago
commit d6762a2649

@ -391,7 +391,8 @@ private class MockIncomingMessage: TSIncomingMessage {
expiresInSeconds: 0,
quotedMessage: nil,
contactShare: nil,
serverTimestamp: nil)
serverTimestamp: nil,
wasReceivedByUD: false)
}
required init(coder: NSCoder) {

@ -3727,7 +3727,8 @@ typedef OWSContact * (^OWSContactBlock)(YapDatabaseReadWriteTransaction *transac
expiresInSeconds:0
quotedMessage:nil
contactShare:nil
serverTimestamp:nil];
serverTimestamp:nil
wasReceivedByUD:NO];
[message markAsReadNowWithSendReadReceipt:NO transaction:transaction];
break;
}
@ -3767,7 +3768,8 @@ typedef OWSContact * (^OWSContactBlock)(YapDatabaseReadWriteTransaction *transac
expiresInSeconds:0
quotedMessage:nil
contactShare:nil
serverTimestamp:nil];
serverTimestamp:nil
wasReceivedByUD:NO];
[message markAsReadNowWithSendReadReceipt:NO transaction:transaction];
break;
}
@ -4229,7 +4231,8 @@ typedef OWSContact * (^OWSContactBlock)(YapDatabaseReadWriteTransaction *transac
expiresInSeconds:0
quotedMessage:nil
contactShare:nil
serverTimestamp:nil];
serverTimestamp:nil
wasReceivedByUD:NO];
[message markAsReadNowWithSendReadReceipt:NO transaction:transaction];
}
{
@ -4246,7 +4249,7 @@ typedef OWSContact * (^OWSContactBlock)(YapDatabaseReadWriteTransaction *transac
contactShare:nil];
[message saveWithTransaction:transaction];
[message updateWithFakeMessageState:TSOutgoingMessageStateSent transaction:transaction];
[message updateWithSentRecipient:recipientId transaction:transaction];
[message updateWithSentRecipient:recipientId wasSentByUD:NO transaction:transaction];
[message updateWithDeliveredRecipient:recipientId deliveryTimestamp:timestamp transaction:transaction];
[message updateWithReadRecipientId:recipientId
readTimestamp:timestamp.unsignedLongLongValue
@ -4270,7 +4273,8 @@ typedef OWSContact * (^OWSContactBlock)(YapDatabaseReadWriteTransaction *transac
expiresInSeconds:60
quotedMessage:nil
contactShare:nil
serverTimestamp:nil];
serverTimestamp:nil
wasReceivedByUD:NO];
// private setter to avoid starting expire machinery.
message.read = YES;
[message save];
@ -4592,7 +4596,8 @@ typedef OWSContact * (^OWSContactBlock)(YapDatabaseReadWriteTransaction *transac
expiresInSeconds:0
quotedMessage:quotedMessage
contactShare:nil
serverTimestamp:nil];
serverTimestamp:nil
wasReceivedByUD:NO];
[message markAsReadNowWithSendReadReceipt:NO transaction:transaction];
return message;
}

@ -14,6 +14,8 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic, readonly, nullable) NSNumber *serverTimestamp;
@property (nonatomic, readonly) BOOL wasReceivedByUD;
- (instancetype)initMessageWithTimestamp:(uint64_t)timestamp
inThread:(nullable TSThread *)thread
messageBody:(nullable NSString *)body
@ -54,7 +56,8 @@ NS_ASSUME_NONNULL_BEGIN
expiresInSeconds:(uint32_t)expiresInSeconds
quotedMessage:(nullable TSQuotedMessage *)quotedMessage
contactShare:(nullable OWSContact *)contactShare
serverTimestamp:(nullable NSNumber *)serverTimestamp NS_DESIGNATED_INITIALIZER;
serverTimestamp:(nullable NSNumber *)serverTimestamp
wasReceivedByUD:(BOOL)wasReceivedByUD NS_DESIGNATED_INITIALIZER;
- (instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;

@ -48,7 +48,7 @@ NS_ASSUME_NONNULL_BEGIN
quotedMessage:(nullable TSQuotedMessage *)quotedMessage
contactShare:(nullable OWSContact *)contactShare
serverTimestamp:(nullable NSNumber *)serverTimestamp
{
wasReceivedByUD:(BOOL)wasReceivedByUD {
self = [super initMessageWithTimestamp:timestamp
inThread:thread
messageBody:body
@ -66,6 +66,7 @@ NS_ASSUME_NONNULL_BEGIN
_sourceDeviceId = sourceDeviceId;
_read = NO;
_serverTimestamp = serverTimestamp;
_wasReceivedByUD = wasReceivedByUD;
return self;
}

@ -62,6 +62,8 @@ typedef NS_ENUM(NSInteger, TSGroupMetaMessage) {
// This property should only be set if state == .sent.
@property (atomic, nullable, readonly) NSNumber *readTimestamp;
@property (atomic, readonly) BOOL wasSentByUD;
@end
#pragma mark -
@ -167,7 +169,9 @@ typedef NS_ENUM(NSInteger, TSGroupMetaMessage) {
#pragma mark - Update With... Methods
// This method is used to record a successful send to one recipient.
- (void)updateWithSentRecipient:(NSString *)recipientId transaction:(YapDatabaseReadWriteTransaction *)transaction;
- (void)updateWithSentRecipient:(NSString *)recipientId
wasSentByUD:(BOOL)wasSentByUD
transaction:(YapDatabaseReadWriteTransaction *)transaction;
// This method is used to record a skipped send to one recipient.
- (void)updateWithSkippedRecipient:(NSString *)recipientId transaction:(YapDatabaseReadWriteTransaction *)transaction;

@ -60,6 +60,7 @@ NSString *NSStringForOutgoingMessageRecipientState(OWSOutgoingMessageRecipientSt
@property (atomic) OWSOutgoingMessageRecipientState state;
@property (atomic, nullable) NSNumber *deliveryTimestamp;
@property (atomic, nullable) NSNumber *readTimestamp;
@property (atomic) BOOL wasSentByUD;
@end
@ -637,8 +638,9 @@ NSString *NSStringForOutgoingMessageRecipientState(OWSOutgoingMessageRecipientSt
}];
}
- (void)updateWithSentRecipient:(NSString *)recipientId transaction:(YapDatabaseReadWriteTransaction *)transaction
{
- (void)updateWithSentRecipient:(NSString *)recipientId
wasSentByUD:(BOOL)wasSentByUD
transaction:(YapDatabaseReadWriteTransaction *)transaction {
OWSAssertDebug(recipientId.length > 0);
OWSAssertDebug(transaction);
@ -651,6 +653,7 @@ NSString *NSStringForOutgoingMessageRecipientState(OWSOutgoingMessageRecipientSt
return;
}
recipientState.state = OWSOutgoingMessageRecipientStateSent;
recipientState.wasSentByUD = wasSentByUD;
}];
}

@ -1115,6 +1115,7 @@ NS_ASSUME_NONNULL_BEGIN
NSData *groupId = dataMessage.group ? dataMessage.group.id : nil;
OWSContact *_Nullable contact = [OWSContacts contactForDataMessage:dataMessage transaction:transaction];
NSNumber *_Nullable serverTimestamp = (envelope.hasServerTimestamp ? @(envelope.serverTimestamp) : nil);
BOOL wasReceivedByUD = envelope.type == SSKProtoEnvelopeTypeUnidentifiedSender;
if (dataMessage.group.type == SSKProtoGroupContextTypeRequestInfo) {
[self handleGroupInfoRequest:envelope dataMessage:dataMessage transaction:transaction];
@ -1229,7 +1230,8 @@ NS_ASSUME_NONNULL_BEGIN
expiresInSeconds:dataMessage.expireTimer
quotedMessage:quotedMessage
contactShare:contact
serverTimestamp:serverTimestamp];
serverTimestamp:serverTimestamp
wasReceivedByUD:wasReceivedByUD];
[self finalizeIncomingMessage:incomingMessage
thread:oldGroupThread
@ -1269,7 +1271,8 @@ NS_ASSUME_NONNULL_BEGIN
expiresInSeconds:dataMessage.expireTimer
quotedMessage:quotedMessage
contactShare:contact
serverTimestamp:serverTimestamp];
serverTimestamp:serverTimestamp
wasReceivedByUD:wasReceivedByUD];
[self finalizeIncomingMessage:incomingMessage
thread:thread

@ -1001,7 +1001,6 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
messages:deviceMessages
timeStamp:message.timestamp
unidentifiedAccess:messageSend.unidentifiedAccess];
OWSWebSocketType webSocketType = (isUDSend ? OWSWebSocketTypeUD : OWSWebSocketTypeDefault);
BOOL canMakeWebsocketRequests = ([TSSocketManager.shared canMakeRequestsOfType:webSocketType] &&
!messageSend.hasWebsocketSendFailed);
@ -1009,7 +1008,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
[TSSocketManager.shared makeRequest:request
webSocketType:webSocketType
success:^(id _Nullable responseObject) {
[self messageSendDidSucceed:messageSend deviceMessages:deviceMessages];
[self messageSendDidSucceed:messageSend deviceMessages:deviceMessages wasSentByUD:isUDSend];
}
failure:^(NSInteger statusCode, NSData *_Nullable responseData, NSError *error) {
dispatch_async([OWSDispatch sendingQueue], ^{
@ -1038,7 +1037,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
} else {
[self.networkManager makeRequest:request
success:^(NSURLSessionDataTask *task, id responseObject) {
[self messageSendDidSucceed:messageSend deviceMessages:deviceMessages];
[self messageSendDidSucceed:messageSend deviceMessages:deviceMessages wasSentByUD:isUDSend];
}
failure:^(NSURLSessionDataTask *task, NSError *error) {
NSHTTPURLResponse *response = (NSHTTPURLResponse *)task.response;
@ -1069,7 +1068,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
- (void)messageSendDidSucceed:(OWSMessageSend *)messageSend
deviceMessages:(NSArray<NSDictionary *> *)deviceMessages
{
wasSentByUD:(BOOL)wasSentByUD {
OWSAssertDebug(messageSend);
OWSAssertDebug(deviceMessages);
@ -1091,7 +1090,9 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
dispatch_async([OWSDispatch sendingQueue], ^{
[self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
[messageSend.message updateWithSentRecipient:messageSend.recipient.uniqueId transaction:transaction];
[messageSend.message updateWithSentRecipient:messageSend.recipient.uniqueId
wasSentByUD:wasSentByUD
transaction:transaction];
// If we've just delivered a message to a user, we know they
// have a valid Signal account.

@ -62,7 +62,7 @@ NS_ASSUME_NONNULL_BEGIN
quotedMessage:nil
contactShare:nil];
[self readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
[message updateWithSentRecipient:self.contactId transaction:transaction];
[message updateWithSentRecipient:self.contactId wasSentByUD:NO transaction:transaction];
XCTAssertTrue([message shouldStartExpireTimerWithTransaction:transaction]);
}];
}

Loading…
Cancel
Save