Present suggestions when user visits onboarding and doesn't follow people (IOS-157)

This commit is contained in:
Nathan Mattes 2023-05-23 12:23:50 +02:00
parent 11bab5e337
commit e20b2e4e11
2 changed files with 16 additions and 4 deletions

View File

@ -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(

View File

@ -30,7 +30,8 @@ final class HomeTimelineViewModel: NSObject {
let fetchedResultsController: FeedFetchedResultsController
let homeTimelineNavigationBarTitleViewModel: HomeTimelineNavigationBarTitleViewModel
let listBatchFetchViewModel = ListBatchFetchViewModel()
let viewDidAppear = PassthroughSubject<Void, Never>()
var presentedSuggestions = false
@Published var lastAutomaticFetchTimestamp: Date? = nil
@Published var scrollPositionRecord: ScrollPositionRecord? = nil