diff --git a/Tusker/Screens/Explore/ExploreViewController.swift b/Tusker/Screens/Explore/ExploreViewController.swift index b5b92479..1a3261a2 100644 --- a/Tusker/Screens/Explore/ExploreViewController.swift +++ b/Tusker/Screens/Explore/ExploreViewController.swift @@ -57,10 +57,6 @@ class ExploreViewController: UIViewController, UICollectionViewDelegate, Collect dataSource = createDataSource() applyInitialSnapshot() - if mastodonController.instance == nil { - mastodonController.getOwnInstance(completion: self.ownInstanceLoaded(_:)) - } - resultsController = SearchResultsViewController(mastodonController: mastodonController) resultsController.exploreNavigationController = self.navigationController! searchController = UISearchController(searchResultsController: resultsController) @@ -79,6 +75,9 @@ class ExploreViewController: UIViewController, UICollectionViewDelegate, Collect NotificationCenter.default.addObserver(self, selector: #selector(savedInstancesChanged), name: .savedInstancesChanged, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(preferencesChanged), name: .preferencesChanged, object: nil) + mastodonController.instanceFeatures.featuresUpdated + .sink { [unowned self] in self.instanceFeaturesChanged() } + .store(in: &cancellables) mastodonController.$lists .sink { [unowned self] in self.reloadLists($0) } .store(in: &cancellables) @@ -194,7 +193,7 @@ class ExploreViewController: UIViewController, UICollectionViewDelegate, Collect snapshot.appendItems([.trends], toSection: .discover) } - private func ownInstanceLoaded(_ instance: Instance) { + private func instanceFeaturesChanged() { var snapshot = self.dataSource.snapshot() if mastodonController.instanceFeatures.trends, !snapshot.sectionIdentifiers.contains(.discover) { diff --git a/Tusker/Screens/Main/MainSidebarViewController.swift b/Tusker/Screens/Main/MainSidebarViewController.swift index 38a57eee..95732706 100644 --- a/Tusker/Screens/Main/MainSidebarViewController.swift +++ b/Tusker/Screens/Main/MainSidebarViewController.swift @@ -97,10 +97,6 @@ class MainSidebarViewController: UIViewController { applyInitialSnapshot() - if mastodonController.instance == nil { - mastodonController.getOwnInstance(completion: self.ownInstanceLoaded(_:)) - } - select(item: .tab(.timelines), animated: false) NotificationCenter.default.addObserver(self, selector: #selector(reloadSavedInstances), name: .savedInstancesChanged, object: nil) @@ -189,14 +185,6 @@ class MainSidebarViewController: UIViewController { reloadSavedInstances() } - private func ownInstanceLoaded(_ instance: Instance) { - let prevSelected = collectionView.indexPathsForSelectedItems - - if let prevSelected = prevSelected?.first { - collectionView.selectItem(at: prevSelected, animated: false, scrollPosition: .top) - } - } - private func reloadLists(_ lists: [List], animated: Bool) { if let selectedItem, case .list(let list) = selectedItem, diff --git a/Tusker/Screens/Report/ReportView.swift b/Tusker/Screens/Report/ReportView.swift index 72cd5e6b..f418bf50 100644 --- a/Tusker/Screens/Report/ReportView.swift +++ b/Tusker/Screens/Report/ReportView.swift @@ -24,9 +24,6 @@ struct ReportView: View { self.account = mastodonController.persistentContainer.account(for: report.accountID)! self.mastodonController = mastodonController self._report = StateObject(wrappedValue: report) - if mastodonController.instance?.rules == nil { - report.reason = .spam - } } var body: some View { @@ -173,6 +170,11 @@ struct ReportView: View { } } } + .onReceive(mastodonController.$instance) { instance in + if instance?.rules == nil { + report.reason = .spam + } + } } private func sendReport() {