Reduce code duplication & fix cell sizing bug
This commit is contained in:
parent
3161680432
commit
3728638832
|
@ -130,7 +130,7 @@
|
|||
let totalHeight: CGFloat = {
|
||||
switch kind {
|
||||
case .incoming:
|
||||
let buttonHeight = dummyFriendRequestView.buttonHeight
|
||||
let buttonHeight = dummyFriendRequestView.buttonStackView.isHidden ? 0 : dummyFriendRequestView.buttonHeight
|
||||
return topSpacing + messageHeight + buttonHeight
|
||||
case .outgoing:
|
||||
return topSpacing + messageHeight
|
||||
|
|
|
@ -207,8 +207,6 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
}
|
||||
|
||||
if (self.message.isFriendRequest) {
|
||||
// At this point, self.message.thread.friendRequestStatus should be either TSThreadFriendRequestStatusRequestReceived,
|
||||
// TSThreadFriendRequestStatusPendingSend or TSThreadFriendRequestStatusRequestSent
|
||||
NSString *rawKind = self.message.interactionType == OWSInteractionType_IncomingMessage ? @"incoming" : @"outgoing";
|
||||
self.friendRequestView = [[FriendRequestView alloc] initWithRawKind:rawKind];
|
||||
self.friendRequestView.message = self.message;
|
||||
|
|
|
@ -4303,8 +4303,7 @@ typedef enum : NSUInteger {
|
|||
- (void)declineFriendRequest:(TSIncomingMessage *)friendRequest
|
||||
{
|
||||
// Reset friend request status
|
||||
self.thread.friendRequestStatus = TSThreadFriendRequestStatusNone;
|
||||
[self.thread save];
|
||||
[self.thread setFriendRequestStatus:TSThreadFriendRequestStatusNone withTransaction:nil];
|
||||
// Delete prekeys
|
||||
NSString *contactID = self.thread.recipientIdentifiers.firstObject;
|
||||
OWSPrimaryStorage *primaryStorage = SSKEnvironment.shared.primaryStorage;
|
||||
|
|
|
@ -189,6 +189,8 @@ typedef NS_ENUM(NSInteger, TSThreadFriendRequestStatus) {
|
|||
|
||||
#pragma mark - Loki Friend Request Handling
|
||||
|
||||
- (void)setFriendRequestStatus:(TSThreadFriendRequestStatus)friendRequestStatus withTransaction:(YapDatabaseReadWriteTransaction *_Nullable)transaction;
|
||||
|
||||
/// Shorthand for checking that `friendRequestStatus` is `TSThreadFriendRequestStatusPendingSend`, `TSThreadFriendRequestStatusRequestSent` or `TSThreadFriendRequestStatusRequestReceived`.
|
||||
- (BOOL)hasPendingFriendRequest;
|
||||
|
||||
|
|
|
@ -698,6 +698,16 @@ ConversationColorName const kConversationColorName_Default = ConversationColorNa
|
|||
|
||||
#pragma mark - Loki Friend Request Handling
|
||||
|
||||
- (void)setFriendRequestStatus:(TSThreadFriendRequestStatus)friendRequestStatus withTransaction:(YapDatabaseReadWriteTransaction *_Nullable)transaction
|
||||
{
|
||||
self.friendRequestStatus = friendRequestStatus;
|
||||
if (transaction == nil) {
|
||||
[self save];
|
||||
} else {
|
||||
[self saveWithTransaction:transaction];
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL)hasPendingFriendRequest
|
||||
{
|
||||
return self.friendRequestStatus == TSThreadFriendRequestStatusPendingSend || self.friendRequestStatus == TSThreadFriendRequestStatusRequestSent
|
||||
|
|
|
@ -69,6 +69,10 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
- (void)updateWithLinkPreview:(OWSLinkPreview *)linkPreview transaction:(YapDatabaseReadWriteTransaction *)transaction;
|
||||
|
||||
#pragma mark - Loki Friend Request Handling
|
||||
|
||||
- (void)setIsFriendRequest:(BOOL)isFriendRequest withTransaction:(YapDatabaseReadWriteTransaction *)transaction;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
|
@ -440,6 +440,16 @@ static const NSUInteger OWSMessageSchemaVersion = 4;
|
|||
|
||||
#pragma mark - Loki Friend Request Handling
|
||||
|
||||
- (void)setIsFriendRequest:(BOOL)isFriendRequest withTransaction:(YapDatabaseReadWriteTransaction *)transaction
|
||||
{
|
||||
self.isFriendRequest = isFriendRequest;
|
||||
if (transaction == nil) {
|
||||
[self save];
|
||||
} else {
|
||||
[self saveWithTransaction:transaction];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
|
@ -1443,12 +1443,10 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
}
|
||||
|
||||
if (envelope.type == SSKProtoEnvelopeTypeFriendRequest) {
|
||||
thread.friendRequestStatus = TSThreadFriendRequestStatusRequestReceived;
|
||||
[thread saveWithTransaction:transaction];
|
||||
[thread setFriendRequestStatus:TSThreadFriendRequestStatusRequestReceived withTransaction:transaction];
|
||||
incomingMessage.isFriendRequest = YES;
|
||||
} else if (incomingMessage.body == @"") { // Assumed to be an accept friend request message
|
||||
thread.friendRequestStatus = TSThreadFriendRequestStatusFriends;
|
||||
[thread saveWithTransaction:transaction];
|
||||
[thread setFriendRequestStatus:TSThreadFriendRequestStatusFriends withTransaction:transaction];
|
||||
}
|
||||
|
||||
[incomingMessage saveWithTransaction:transaction];
|
||||
|
|
|
@ -1111,21 +1111,17 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
|
|||
// Update the thread's friend request status if needed
|
||||
NSInteger *messageType = ((NSNumber *)signalMessage[@"type"]).integerValue;
|
||||
if (messageType == TSFriendRequestMessageType) {
|
||||
message.thread.friendRequestStatus = TSThreadFriendRequestStatusPendingSend;
|
||||
[message.thread save];
|
||||
message.isFriendRequest = YES;
|
||||
[message save];
|
||||
[message.thread setFriendRequestStatus:TSThreadFriendRequestStatusPendingSend withTransaction:nil];
|
||||
[message setIsFriendRequest:YES withTransaction:nil];
|
||||
}
|
||||
BOOL isPoWRequired = YES; // TODO: Base on message type
|
||||
[[LokiAPI objc_sendSignalMessage:signalMessage to:recipient.recipientId timestamp:message.timestamp requiringPoW:isPoWRequired]
|
||||
.thenOn(OWSDispatch.sendingQueue, ^(id result) {
|
||||
// Update the thread's friend request status if needed
|
||||
if (messageType == TSFriendRequestMessageType) {
|
||||
message.thread.friendRequestStatus = TSThreadFriendRequestStatusRequestSent;
|
||||
[message.thread save];
|
||||
[message.thread setFriendRequestStatus:TSThreadFriendRequestStatusRequestSent withTransaction:nil];
|
||||
} else if (message.body == @"") { // Assumed to be an accept friend request message
|
||||
message.thread.friendRequestStatus = TSThreadFriendRequestStatusFriends;
|
||||
[message.thread save];
|
||||
[message.thread setFriendRequestStatus:TSThreadFriendRequestStatusFriends withTransaction:nil];
|
||||
}
|
||||
// Invoke the completion handler
|
||||
[self messageSendDidSucceed:messageSend
|
||||
|
@ -1136,8 +1132,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
|
|||
.catchOn(OWSDispatch.sendingQueue, ^(NSError *error) {
|
||||
// Update the thread's friend request status if needed
|
||||
if (messageType == TSFriendRequestMessageType) {
|
||||
message.thread.friendRequestStatus = TSThreadFriendRequestStatusNone;
|
||||
[message.thread save];
|
||||
[message.thread setFriendRequestStatus:TSThreadFriendRequestStatusNone withTransaction:nil];
|
||||
}
|
||||
// Handle the error
|
||||
NSUInteger statusCode = 0;
|
||||
|
|
Loading…
Reference in New Issue