forked from shadowfacts/Tusker
Remove direct accesses of MastodonController.instance
Fixes potential race conditions
This commit is contained in:
parent
2b5b749dc8
commit
cb5b70a23a
|
@ -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) {
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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() {
|
||||
|
|
Loading…
Reference in New Issue