From e20b2e4e11516a9b760eb50a9bb2e58ca42a412f Mon Sep 17 00:00:00 2001 From: Nathan Mattes Date: Tue, 23 May 2023 12:23:50 +0200 Subject: [PATCH] Present suggestions when user visits onboarding and doesn't follow people (IOS-157) --- .../HomeTimelineViewController.swift | 17 ++++++++++++++--- .../HomeTimeline/HomeTimelineViewModel.swift | 3 ++- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift index 7e22c346f..442c5e351 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift @@ -240,6 +240,19 @@ extension HomeTimelineViewController { .sink { [weak self] isEmpty in if isEmpty { self?.showEmptyView() + + let userDoesntFollowPeople: Bool + if let managedObjectContext = self?.context.managedObjectContext, + let me = self?.authContext.mastodonAuthenticationBox.authenticationRecord.object(in: managedObjectContext)?.user { + userDoesntFollowPeople = me.followersCount == 0 + } else { + userDoesntFollowPeople = true + } + + if (self?.viewModel.presentedSuggestions == false) && userDoesntFollowPeople { + self?.findPeopleButtonPressed(self) + self?.viewModel.presentedSuggestions = true + } } else { self?.emptyView.removeFromSuperview() } @@ -285,8 +298,6 @@ extension HomeTimelineViewController { override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) - viewModel.viewDidAppear.send() - if let timestamp = viewModel.lastAutomaticFetchTimestamp { let now = Date() if now.timeIntervalSince(timestamp) > 60 { @@ -376,7 +387,7 @@ extension HomeTimelineViewController { extension HomeTimelineViewController { - @objc private func findPeopleButtonPressed(_ sender: PrimaryActionButton) { + @objc private func findPeopleButtonPressed(_ sender: Any?) { let suggestionAccountViewModel = SuggestionAccountViewModel(context: context, authContext: viewModel.authContext) suggestionAccountViewModel.delegate = viewModel _ = coordinator.present( diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel.swift index 7319409e5..663a38724 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel.swift @@ -30,7 +30,8 @@ final class HomeTimelineViewModel: NSObject { let fetchedResultsController: FeedFetchedResultsController let homeTimelineNavigationBarTitleViewModel: HomeTimelineNavigationBarTitleViewModel let listBatchFetchViewModel = ListBatchFetchViewModel() - let viewDidAppear = PassthroughSubject() + + var presentedSuggestions = false @Published var lastAutomaticFetchTimestamp: Date? = nil @Published var scrollPositionRecord: ScrollPositionRecord? = nil