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

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

Loading…
Cancel
Save