Move task and async/await to call-site (IOS-192)

This commit is contained in:
Nathan Mattes 2024-01-09 17:45:01 +01:00
parent 97d1ab4e5b
commit e70a67caf0
8 changed files with 33 additions and 29 deletions

View File

@ -41,6 +41,7 @@ extension DataSourceFacade {
assertionFailure() assertionFailure()
return return
} }
await coordinateToProfileScene( await coordinateToProfileScene(
provider: provider, provider: provider,
account: redirectRecord account: redirectRecord
@ -100,30 +101,26 @@ extension DataSourceFacade {
} }
@MainActor @MainActor
static func coordinateToProfileScene( public static func coordinateToProfileScene(
provider: ViewControllerWithDependencies & AuthContextProvider, provider: ViewControllerWithDependencies & AuthContextProvider,
account: Mastodon.Entity.Account account: Mastodon.Entity.Account
) { ) async {
guard let me = provider.authContext.mastodonAuthenticationBox.authentication.account(),
let relationship = try? await provider.context.apiService.relationship(forAccounts: [account], authenticationBox: provider.authContext.mastodonAuthenticationBox).value.first else { return }
Task { @MainActor in let profileViewModel = ProfileViewModel(
context: provider.context,
authContext: provider.authContext,
account: account,
relationship: relationship,
me: me
)
guard let me = provider.authContext.mastodonAuthenticationBox.authentication.account(), _ = provider.coordinator.present(
let relationship = try? await provider.context.apiService.relationship(forAccounts: [account], authenticationBox: provider.authContext.mastodonAuthenticationBox).value.first else { return } scene: .profile(viewModel: profileViewModel),
from: provider,
let profileViewModel = ProfileViewModel( transition: .show
context: provider.context, )
authContext: provider.authContext,
account: account,
relationship: relationship,
me: me
)
_ = provider.coordinator.present(
scene: .profile(viewModel: profileViewModel),
from: provider,
transition: .show
)
}
} }
} }

View File

@ -23,7 +23,7 @@ extension UITableViewDelegate where Self: DataSourceProvider & AuthContextProvid
} }
switch item { switch item {
case .account(let account, relationship: _): case .account(let account, relationship: _):
DataSourceFacade.coordinateToProfileScene(provider: self, account: account) await DataSourceFacade.coordinateToProfileScene(provider: self, account: account)
case .status(let status): case .status(let status):
await DataSourceFacade.coordinateToStatusThreadScene( await DataSourceFacade.coordinateToStatusThreadScene(
provider: self, provider: self,

View File

@ -99,7 +99,9 @@ extension DiscoveryForYouViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
guard case let .account(account, _) = viewModel.diffableDataSource?.itemIdentifier(for: indexPath) else { return } guard case let .account(account, _) = viewModel.diffableDataSource?.itemIdentifier(for: indexPath) else { return }
DataSourceFacade.coordinateToProfileScene(provider: self, account: account) Task {
await DataSourceFacade.coordinateToProfileScene(provider: self, account: account)
}
} }
} }

View File

@ -295,7 +295,7 @@ extension NotificationTimelineViewController: TableViewControllerNavigateable {
) )
} else { } else {
DataSourceFacade.coordinateToProfileScene(provider: self, account: notification.account) await DataSourceFacade.coordinateToProfileScene(provider: self, account: notification.account)
} }
default: default:
break break

View File

@ -75,7 +75,7 @@ extension SearchHistoryViewController: UICollectionViewDelegate {
switch item { switch item {
case .account(account: let account, relationship: _): case .account(account: let account, relationship: _):
DataSourceFacade.coordinateToProfileScene(provider: self, account: account) await DataSourceFacade.coordinateToProfileScene(provider: self, account: account)
case .hashtag(let tag): case .hashtag(let tag):
await DataSourceFacade.coordinateToHashtagScene( await DataSourceFacade.coordinateToHashtagScene(

View File

@ -62,7 +62,7 @@ extension SearchResultViewController {
switch item { switch item {
case .account(let account, relationship: _): case .account(let account, relationship: _):
DataSourceFacade.coordinateToProfileScene(provider: self, account: account) await DataSourceFacade.coordinateToProfileScene(provider: self, account: account)
case .status(let status): case .status(let status):
await DataSourceFacade.coordinateToStatusThreadScene( await DataSourceFacade.coordinateToStatusThreadScene(
provider: self, provider: self,

View File

@ -216,8 +216,11 @@ extension SettingsCoordinator: ServerDetailsViewControllerDelegate {
} }
extension SettingsCoordinator: AboutInstanceViewControllerDelegate { extension SettingsCoordinator: AboutInstanceViewControllerDelegate {
@MainActor func showAdminAccount(_ viewController: AboutInstanceViewController, account: Mastodon.Entity.Account) { @MainActor
DataSourceFacade.coordinateToProfileScene(provider: viewController, account: account) func showAdminAccount(_ viewController: AboutInstanceViewController, account: Mastodon.Entity.Account) {
Task {
await DataSourceFacade.coordinateToProfileScene(provider: viewController, account: account)
}
} }
func sendEmailToAdmin(_ viewController: AboutInstanceViewController, emailAddress: String) { func sendEmailToAdmin(_ viewController: AboutInstanceViewController, emailAddress: String) {

View File

@ -90,8 +90,10 @@ extension SuggestionAccountViewController: UITableViewDelegate {
guard let tableViewDiffableDataSource = viewModel.tableViewDiffableDataSource else { return } guard let tableViewDiffableDataSource = viewModel.tableViewDiffableDataSource else { return }
guard let item = tableViewDiffableDataSource.itemIdentifier(for: indexPath) else { return } guard let item = tableViewDiffableDataSource.itemIdentifier(for: indexPath) else { return }
switch item { switch item {
case .account(let account, _): case .account(let account, _):
DataSourceFacade.coordinateToProfileScene(provider: self, account: account) Task {
await DataSourceFacade.coordinateToProfileScene(provider: self, account: account)
}
} }
tableView.deselectRow(at: indexPath, animated: true) tableView.deselectRow(at: indexPath, animated: true)