diff --git a/Signal/src/Loki/Components/FriendRequestView.swift b/Signal/src/Loki/Components/FriendRequestView.swift index fe58c77d6..b6e2860b2 100644 --- a/Signal/src/Loki/Components/FriendRequestView.swift +++ b/Signal/src/Loki/Components/FriendRequestView.swift @@ -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) } diff --git a/SignalServiceKit/src/Loki/Protocol/Friend Requests/FriendRequestProtocol.swift b/SignalServiceKit/src/Loki/Protocol/Friend Requests/FriendRequestProtocol.swift index d82060f7f..3b3af23e6 100644 --- a/SignalServiceKit/src/Loki/Protocol/Friend Requests/FriendRequestProtocol.swift +++ b/SignalServiceKit/src/Loki/Protocol/Friend Requests/FriendRequestProtocol.swift @@ -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 }