Handle expired friend requests

pull/175/head
nielsandriesse 6 years ago
parent cfb23de141
commit 3e0a9db5e0

@ -107,7 +107,6 @@ final class FriendRequestView : UIView {
}
private func updateUI() {
// TODO: Expiration
let thread = message.thread
let friendRequestStatus = FriendRequestProtocol.getFriendRequestUIStatus(for: thread)
guard friendRequestStatus != .none, let contactID = thread.contactIdentifier() else { return }
@ -122,6 +121,7 @@ final class FriendRequestView : UIView {
case .friends: format = NSLocalizedString("You've accepted %@'s session request", comment: "")
case .received: format = NSLocalizedString("%@ sent you a session request", comment: "")
case .sent: return // Should never occur
case .expired: format = NSLocalizedString("%@'s session request has expired", comment: "")
}
label.text = String(format: format, displayName)
case .outgoing:
@ -131,6 +131,7 @@ final class FriendRequestView : UIView {
case .friends: format = NSLocalizedString("%@ accepted your session request", comment: "")
case .received: return // Should never occur
case .sent: format = NSLocalizedString("You've sent %@ a session request", comment: "")
case .expired: format = NSLocalizedString("Your session request to %@ has expired", comment: "")
}
label.text = String(format: format, displayName)
}

@ -17,7 +17,7 @@ public final class FriendRequestProtocol : NSObject {
// MARK: - Friend Request UI Status
@objc public enum FriendRequestUIStatus : Int {
case friends, received, sent, none
case friends, received, sent, none, expired
}
// MARK: - General
@ -40,6 +40,7 @@ public final class FriendRequestProtocol : NSObject {
guard let thread = thread as? TSContactThread else { return true }
// If this is a note to self the input bar should be enabled
if thread.isNoteToSelf() { return true }
// Gather friend request statuses
let contactID = thread.contactIdentifier()
var linkedDeviceFriendRequestStatuses: [LKFriendRequestStatus] = []
storage.dbReadConnection.read { transaction in
@ -62,6 +63,7 @@ public final class FriendRequestProtocol : NSObject {
guard let thread = thread as? TSContactThread else { return true }
// If this is a note to self, the attachment button should be enabled
if thread.isNoteToSelf() { return true }
/// Gather friend request statuses
let contactID = thread.contactIdentifier()
var linkedDeviceFriendRequestStatuses: [LKFriendRequestStatus] = []
storage.dbReadConnection.read { transaction in
@ -80,7 +82,7 @@ public final class FriendRequestProtocol : NSObject {
public static func getFriendRequestUIStatus(for thread: TSThread) -> FriendRequestUIStatus {
// Friend requests have nothing to do with groups
guard let thread = thread as? TSContactThread else { return .none }
// If this is a note to self then we don't want to show the friend request
// If this is a note to self then we don't want to show the friend request UI
guard !thread.isNoteToSelf() else { return .none }
// Gather friend request statuses for all linked devices
var friendRequestStatuses: [LKFriendRequestStatus] = []
@ -94,6 +96,7 @@ public final class FriendRequestProtocol : NSObject {
if friendRequestStatuses.contains(where: { $0 == .friends }) { return .friends }
if friendRequestStatuses.contains(where: { $0 == .requestReceived }) { return .received }
if friendRequestStatuses.contains(where: { $0 == .requestSent || $0 == .requestSending }) { return .sent }
if friendRequestStatuses.contains(where: { $0 == .requestExpired }) { return .expired }
return .none
}

Loading…
Cancel
Save