Mostly hook up friend request status logic

pull/15/head
Niels Andriesse 7 years ago
parent c3fe7fba50
commit fffb55540b

@ -115,14 +115,12 @@ NS_ASSUME_NONNULL_BEGIN
return self.viewItem.interaction.interactionType == OWSInteractionType_OutgoingMessage;
}
- (TSThreadFriendRequestState)friendRequestState {
return self.isIncoming ? TSThreadFriendRequestStateRequestReceived : TSThreadFriendRequestStateRequestSent;
// return self.message.thread.friendRequestState;
- (TSThreadFriendRequestStatus)friendRequestStatus {
return self.message.thread.friendRequestStatus;
}
- (BOOL)isFriendRequest {
return YES;
// return self.friendRequestState == TSThreadFriendRequestStateRequestSent || self.friendRequestState == TSThreadFriendRequestStateRequestReceived;
return self.friendRequestStatus == TSThreadFriendRequestStatusRequestSent || self.friendRequestStatus == TSThreadFriendRequestStatusRequestReceived;
}
- (BOOL)shouldHaveSendFailureBadge
@ -217,9 +215,9 @@ NS_ASSUME_NONNULL_BEGIN
}
if (self.isFriendRequest) {
// At this point, self.friendRequestState should be either TSThreadFriendRequestStateRequestReceived,
// TSThreadFriendRequestStatePendingSend or TSThreadFriendRequestStateRequestSent
NSString *rawKind = self.friendRequestState == TSThreadFriendRequestStateRequestReceived ? @"incoming" : @"outgoing";
// At this point, self.friendRequestStatus should be either TSThreadFriendRequestStatusRequestReceived,
// TSThreadFriendRequestStatusPendingSend or TSThreadFriendRequestStatusRequestSent
NSString *rawKind = self.friendRequestStatus == TSThreadFriendRequestStatusRequestReceived ? @"incoming" : @"outgoing";
self.friendRequestView = [[FriendRequestView alloc] initWithRawKind:rawKind];
self.friendRequestView.message = self.message;
self.friendRequestView.delegate = self.friendRequestViewDelegate;

@ -30,19 +30,19 @@ extern ConversationColorName const ConversationColorNameSteel;
extern ConversationColorName const kConversationColorName_Default;
// Loki: Friend request state
typedef NS_ENUM(NSInteger, TSThreadFriendRequestState) {
typedef NS_ENUM(NSInteger, TSThreadFriendRequestStatus) {
// New conversation, no messages sent or received
TSThreadFriendRequestStateNone,
TSThreadFriendRequestStatusNone,
// This state is used to lock the input early while sending
TSThreadFriendRequestStatePendingSend,
TSThreadFriendRequestStatusPendingSend,
// Friend request sent, awaiting response
TSThreadFriendRequestStateRequestSent,
TSThreadFriendRequestStatusRequestSent,
// Friend request received, awaiting user input
TSThreadFriendRequestStateRequestReceived,
TSThreadFriendRequestStatusRequestReceived,
// We are friends with the user of this thread
TSThreadFriendRequestStateFriends,
TSThreadFriendRequestStatusFriends,
// Friend request sent but it timed out (user didn't accept within x time)
TSThreadFriendRequestStateRequestExpired,
TSThreadFriendRequestStatusRequestExpired
};
/**
@ -53,9 +53,7 @@ typedef NS_ENUM(NSInteger, TSThreadFriendRequestState) {
@property (nonatomic) BOOL shouldThreadBeVisible;
@property (nonatomic, readonly) NSDate *creationDate;
@property (nonatomic, readonly) BOOL isArchivedByLegacyTimestampForSorting;
// Loki: The current friend request state with this thread
@property (atomic, readonly) TSThreadFriendRequestState friendRequestState;
@property (atomic, readonly) TSThreadFriendRequestStatus friendRequestStatus; // Loki
/**
* Whether the object is a group thread or not.

@ -50,8 +50,6 @@ ConversationColorName const kConversationColorName_Default = ConversationColorNa
@property (nonatomic, copy, nullable) NSString *messageDraft;
@property (atomic, nullable) NSDate *mutedUntilDate;
@property (atomic) TSThreadFriendRequestState friendRequestState;
// DEPRECATED - not used since migrating to sortId
// but keeping these properties around to ease any pain in the back-forth
// migration while testing. Eventually we can safely delete these as they aren't used anywhere.
@ -86,9 +84,6 @@ ConversationColorName const kConversationColorName_Default = ConversationColorNa
if (self) {
_creationDate = [NSDate date];
_messageDraft = nil;
// We are initially not friends
_friendRequestState = TSThreadFriendRequestStateNone;
NSString *_Nullable contactId = self.contactIdentifier;
if (contactId.length > 0) {
@ -159,6 +154,8 @@ ConversationColorName const kConversationColorName_Default = ConversationColorNa
- (void)saveWithTransaction:(YapDatabaseReadWriteTransaction *)transaction
{
[super saveWithTransaction:transaction];
[self updateFriendRequestStatusWithTransaction:transaction];
[SSKPreferences setHasSavedThreadWithValue:YES transaction:transaction];
}
@ -699,33 +696,44 @@ ConversationColorName const kConversationColorName_Default = ConversationColorNa
}];
}
# pragma mark - Loki Friend Request
# pragma mark - Loki Friend Request Handling
- (void)updateFriendRequestStatusWithTransaction:(YapDatabaseReadWriteTransaction *)transaction
{
OWSLogInfo(@"[Loki] updateFriendRequestStatus");
NSUInteger numberOfInteractions = self.numberOfInteractions;
if (numberOfInteractions == 0) {
_friendRequestStatus = TSThreadFriendRequestStatusNone;
} else if (numberOfInteractions == 1) {
YapDatabaseViewTransaction *interactions = [transaction ext:TSMessageDatabaseViewExtensionName];
TSInteraction *interaction = [interactions firstObjectInGroup:self.uniqueId];
_friendRequestStatus = interaction.interactionType == OWSInteractionType_IncomingMessage ? TSThreadFriendRequestStatusRequestReceived : TSThreadFriendRequestStatusRequestSent;
} else {
_friendRequestStatus = TSThreadFriendRequestStatusFriends;
}
}
- (BOOL)isFriend
{
return _friendRequestState == TSThreadFriendRequestStateFriends;
return self.friendRequestStatus == TSThreadFriendRequestStatusFriends;
}
- (BOOL)isPendingFriendRequest
{
return (
_friendRequestState == TSThreadFriendRequestStatePendingSend ||
_friendRequestState == TSThreadFriendRequestStateRequestSent ||
_friendRequestState == TSThreadFriendRequestStateRequestReceived
);
return self.friendRequestStatus == TSThreadFriendRequestStatusPendingSend ||
self.friendRequestStatus == TSThreadFriendRequestStatusRequestSent ||
self.friendRequestStatus == TSThreadFriendRequestStatusRequestReceived;
}
- (BOOL)hasSentFriendRequest
{
return (
_friendRequestState == TSThreadFriendRequestStateRequestSent ||
_friendRequestState == TSThreadFriendRequestStateRequestExpired
);
return self.friendRequestStatus == TSThreadFriendRequestStatusRequestSent ||
self.friendRequestStatus == TSThreadFriendRequestStatusRequestExpired;
}
- (BOOL)hasReceivedFriendRequest
{
return _friendRequestState == TSThreadFriendRequestStateRequestReceived;
return self.friendRequestStatus == TSThreadFriendRequestStatusRequestReceived;
}
@end

Loading…
Cancel
Save