From 75fda885ba213db9b9102a580d651cda7fe068c7 Mon Sep 17 00:00:00 2001 From: Alexey Bukhtin Date: Mon, 13 May 2019 12:04:08 +0200 Subject: [PATCH] Fixed a bug with a user following. --- .../User Story/Profile/ProfileBuilder.swift | 1 - .../Profile/ProfileViewController.swift | 19 +++++++++++++------ Sources/Models/User.swift | 10 +++------- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/GetStreamActivityFeed/User Story/Profile/ProfileBuilder.swift b/GetStreamActivityFeed/User Story/Profile/ProfileBuilder.swift index 37f8d62..04c2705 100644 --- a/GetStreamActivityFeed/User Story/Profile/ProfileBuilder.swift +++ b/GetStreamActivityFeed/User Story/Profile/ProfileBuilder.swift @@ -19,7 +19,6 @@ final class ProfileBuilder { if let viewController = navigationController.viewControllers.first as? ProfileViewController { viewController.user = user - viewController.isCurrentUser = true viewController.builder = self } diff --git a/GetStreamActivityFeed/User Story/Profile/ProfileViewController.swift b/GetStreamActivityFeed/User Story/Profile/ProfileViewController.swift index eae5dca..e6aa4d9 100644 --- a/GetStreamActivityFeed/User Story/Profile/ProfileViewController.swift +++ b/GetStreamActivityFeed/User Story/Profile/ProfileViewController.swift @@ -31,11 +31,19 @@ class ProfileViewController: UIViewController, BundledStoryboardLoadable { @IBOutlet weak var headerViewHeightConstraint: NSLayoutConstraint! @IBOutlet weak var feedContainerView: UIView! - var user: User? - var isCurrentUser: Bool = false var builder: ProfileBuilder? - private var flatFeedViewController: ActivityFeedViewController? + var user: User? { + didSet { + if let user = user, let currentUser = Client.shared.currentUser { + isCurrentUser = user.id == currentUser.id + } + } + } + + private(set) var isCurrentUser: Bool = false + private var flatFeedViewController: ActivityFeedViewController? + override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) { super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) loadAvatar(onlyTabBarItem: true) @@ -174,7 +182,7 @@ extension ProfileViewController { return } - let button = BarButton(title: "Follow", backgroundColor: UIColor(red:0, green:0.48, blue:1, alpha:1)) + let button = BarButton(title: "Follow", backgroundColor: Appearance.Color.blue) button.setTitle("Updating...", backgroundColor: Appearance.Color.transparentWhite, for: .disabled) button.setTitle("Following", backgroundColor: Appearance.Color.transparentWhite, for: .selected) navigationItem.rightBarButtonItem = UIBarButtonItem(customView: button) @@ -182,8 +190,7 @@ extension ProfileViewController { button.addTap { [weak flatFeedPresenter] in if let button = $0 as? BarButton, let feedId = flatFeedPresenter?.flatFeed.feedId, - let userFeedId = FeedId.user { - let userFeed = Client.shared.flatFeed(userFeedId) + let userFeed = User.current?.feed { let isFollowing = button.isSelected button.isEnabled = false diff --git a/Sources/Models/User.swift b/Sources/Models/User.swift index 607d243..5f81b8d 100644 --- a/Sources/Models/User.swift +++ b/Sources/Models/User.swift @@ -24,6 +24,8 @@ public final class User: GetStream.User, UserNameRepresentable, AvatarRepresenta } private let dispatchQueue = DispatchQueue(label: "io.getstream.User") + private(set) lazy var feed: FlatFeed = Client.shared.flatFeed(FeedId.user(with: id)) + public var avatarImage: UIImage? init(name: String, id: String) { @@ -66,13 +68,7 @@ extension User { /// Checks if the user feed is following to a target. public func isFollow(toTarget target: FeedId, completion: @escaping (_ isFollow: Bool, _ following: Follower?, _ error: Error?) -> Void) { - guard let userFeedId = FeedId.user else { - print("⚠️", #function, "userId not found in the Token") - completion(false, nil, nil) - return - } - - Client.shared.flatFeed(userFeedId).following(filter: [target]) { + feed.following(filter: [target]) { if let response = try? $0.get() { completion(response.results.first != nil, response.results.first, nil) } else {