mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
Implement feedback
This commit is contained in:
parent
3728638832
commit
be7724b41b
5 changed files with 39 additions and 11 deletions
|
@ -186,9 +186,7 @@ typedef void (^BuildOutgoingMessageCompletionBlock)(TSOutgoingMessage *savedMess
|
|||
|
||||
// Loki: If we're not friends then always set the message to a friend request message
|
||||
// If we're friends then the assumption is that we have the other user's prekey bundle
|
||||
TSThreadFriendRequestStatus friendRequestStatus = thread.friendRequestStatus;
|
||||
BOOL isFriend = friendRequestStatus == TSThreadFriendRequestStatusFriends;
|
||||
NSString *messageClassAsString = isFriend ? @"TSOutgoingMessage" : @"OWSFriendRequestMessage";
|
||||
NSString *messageClassAsString = thread.isContactFriend ? @"TSOutgoingMessage" : @"OWSFriendRequestMessage";
|
||||
Class messageClass = NSClassFromString(messageClassAsString);
|
||||
|
||||
TSOutgoingMessage *message =
|
||||
|
|
|
@ -53,7 +53,14 @@ typedef NS_ENUM(NSInteger, TSThreadFriendRequestStatus) {
|
|||
@property (nonatomic) BOOL shouldThreadBeVisible;
|
||||
@property (nonatomic, readonly) NSDate *creationDate;
|
||||
@property (nonatomic, readonly) BOOL isArchivedByLegacyTimestampForSorting;
|
||||
// Loki friend request handling
|
||||
@property (nonatomic) TSThreadFriendRequestStatus friendRequestStatus;
|
||||
/// Shorthand for checking that `friendRequestStatus` is `TSThreadFriendRequestStatusPendingSend`, `TSThreadFriendRequestStatusRequestSent`
|
||||
/// or `TSThreadFriendRequestStatusRequestReceived`.
|
||||
@property (nonatomic, readonly) BOOL hasPendingFriendRequest;
|
||||
@property (nonatomic, readonly) BOOL isContactFriend;
|
||||
@property (nonatomic, readonly) BOOL hasCurrentUserSentFriendRequest;
|
||||
@property (nonatomic, readonly) BOOL hasCurrentUserReceivedFriendRequest;
|
||||
|
||||
/**
|
||||
* Whether the object is a group thread or not.
|
||||
|
@ -191,9 +198,6 @@ typedef NS_ENUM(NSInteger, TSThreadFriendRequestStatus) {
|
|||
|
||||
- (void)setFriendRequestStatus:(TSThreadFriendRequestStatus)friendRequestStatus withTransaction:(YapDatabaseReadWriteTransaction *_Nullable)transaction;
|
||||
|
||||
/// Shorthand for checking that `friendRequestStatus` is `TSThreadFriendRequestStatusPendingSend`, `TSThreadFriendRequestStatusRequestSent` or `TSThreadFriendRequestStatusRequestReceived`.
|
||||
- (BOOL)hasPendingFriendRequest;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
|
@ -714,6 +714,21 @@ ConversationColorName const kConversationColorName_Default = ConversationColorNa
|
|||
|| self.friendRequestStatus == TSThreadFriendRequestStatusRequestReceived;
|
||||
}
|
||||
|
||||
- (BOOL)isContactFriend
|
||||
{
|
||||
return self.friendRequestStatus == TSThreadFriendRequestStatusFriends;
|
||||
}
|
||||
|
||||
- (BOOL)hasCurrentUserSentFriendRequest
|
||||
{
|
||||
return self.friendRequestStatus == TSThreadFriendRequestStatusRequestSent;
|
||||
}
|
||||
|
||||
- (BOOL)hasCurrentUserReceivedFriendRequest
|
||||
{
|
||||
return self.friendRequestStatus == TSThreadFriendRequestStatusRequestReceived;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
|
@ -1442,12 +1442,19 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
return;
|
||||
}
|
||||
|
||||
// Loki:
|
||||
// ========
|
||||
if (envelope.type == SSKProtoEnvelopeTypeFriendRequest) {
|
||||
[thread setFriendRequestStatus:TSThreadFriendRequestStatusRequestReceived withTransaction:transaction];
|
||||
incomingMessage.isFriendRequest = YES;
|
||||
} else if (incomingMessage.body == @"") { // Assumed to be an accept friend request message
|
||||
if (thread.hasCurrentUserSentFriendRequest) {
|
||||
[thread setFriendRequestStatus:TSThreadFriendRequestStatusFriends withTransaction:transaction];
|
||||
} else {
|
||||
[thread setFriendRequestStatus:TSThreadFriendRequestStatusRequestReceived withTransaction:transaction];
|
||||
incomingMessage.isFriendRequest = YES; // Saved below
|
||||
}
|
||||
} else if (!thread.isContactFriend) {
|
||||
[thread setFriendRequestStatus:TSThreadFriendRequestStatusFriends withTransaction:transaction];
|
||||
}
|
||||
// ========
|
||||
|
||||
[incomingMessage saveWithTransaction:transaction];
|
||||
|
||||
|
|
|
@ -1117,12 +1117,16 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
|
|||
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
|
||||
// Loki
|
||||
// ========
|
||||
if (messageType == TSFriendRequestMessageType) {
|
||||
[message.thread setFriendRequestStatus:TSThreadFriendRequestStatusRequestSent withTransaction:nil];
|
||||
} else if (message.body == @"") { // Assumed to be an accept friend request message
|
||||
} else if (thread.hasCurrentUserReceivedFriendRequest) {
|
||||
// If the thread's current friend request state is TSThreadFriendRequestStatusRequestReceived, and we're sending a message,
|
||||
// that means we're accepting the request. Declining a friend request doesn't send a message.
|
||||
[message.thread setFriendRequestStatus:TSThreadFriendRequestStatusFriends withTransaction:nil];
|
||||
}
|
||||
// ========
|
||||
// Invoke the completion handler
|
||||
[self messageSendDidSucceed:messageSend
|
||||
deviceMessages:deviceMessages
|
||||
|
|
Loading…
Reference in a new issue