mirror of
https://github.com/mastodon/mastodon-ios
synced 2025-04-11 22:58:02 +02:00
Download accounts at start and don't fail if there's no me (IOS-192)
Known issue for know is that the profile-tab shows a blank screen. Still gotta fix that.
This commit is contained in:
parent
64dc97ab9b
commit
cea6129229
@ -89,38 +89,39 @@ class MainTabBarController: UITabBarController {
|
||||
|
||||
@MainActor
|
||||
func viewController(context: AppContext, authContext: AuthContext?, coordinator: SceneCoordinator) -> UIViewController {
|
||||
guard let authContext, let me = authContext.mastodonAuthenticationBox.authentication.account() else {
|
||||
return UITableViewController()
|
||||
}
|
||||
guard let authContext else { return UITableViewController() }
|
||||
|
||||
let viewController: UIViewController
|
||||
switch self {
|
||||
case .home:
|
||||
let _viewController = HomeTimelineViewController()
|
||||
_viewController.context = context
|
||||
_viewController.coordinator = coordinator
|
||||
_viewController.viewModel = .init(context: context, authContext: authContext)
|
||||
viewController = _viewController
|
||||
case .search:
|
||||
let _viewController = SearchViewController()
|
||||
_viewController.context = context
|
||||
_viewController.coordinator = coordinator
|
||||
_viewController.viewModel = .init(context: context, authContext: authContext)
|
||||
viewController = _viewController
|
||||
case .compose:
|
||||
viewController = UIViewController()
|
||||
case .notifications:
|
||||
let _viewController = NotificationViewController()
|
||||
_viewController.context = context
|
||||
_viewController.coordinator = coordinator
|
||||
_viewController.viewModel = .init(context: context, authContext: authContext)
|
||||
viewController = _viewController
|
||||
case .me:
|
||||
let _viewController = ProfileViewController()
|
||||
_viewController.context = context
|
||||
_viewController.coordinator = coordinator
|
||||
_viewController.viewModel = ProfileViewModel(context: context, authContext: authContext, account: me, relationship: nil, me: me)
|
||||
viewController = _viewController
|
||||
case .home:
|
||||
let _viewController = HomeTimelineViewController()
|
||||
_viewController.context = context
|
||||
_viewController.coordinator = coordinator
|
||||
_viewController.viewModel = HomeTimelineViewModel(context: context, authContext: authContext)
|
||||
viewController = _viewController
|
||||
case .search:
|
||||
let _viewController = SearchViewController()
|
||||
_viewController.context = context
|
||||
_viewController.coordinator = coordinator
|
||||
_viewController.viewModel = .init(context: context, authContext: authContext)
|
||||
viewController = _viewController
|
||||
case .compose:
|
||||
viewController = UIViewController()
|
||||
case .notifications:
|
||||
let _viewController = NotificationViewController()
|
||||
_viewController.context = context
|
||||
_viewController.coordinator = coordinator
|
||||
_viewController.viewModel = .init(context: context, authContext: authContext)
|
||||
viewController = _viewController
|
||||
case .me:
|
||||
#warning("What happens if there's no me at the beginning? I guess we _do_ need another migration?")
|
||||
guard let me = authContext.mastodonAuthenticationBox.authentication.account() else { return UIViewController() }
|
||||
|
||||
let _viewController = ProfileViewController()
|
||||
_viewController.context = context
|
||||
_viewController.coordinator = coordinator
|
||||
_viewController.viewModel = ProfileViewModel(context: context, authContext: authContext, account: me, relationship: nil, me: me)
|
||||
viewController = _viewController
|
||||
}
|
||||
viewController.title = self.title
|
||||
return AdaptiveStatusBarStyleNavigationController(rootViewController: viewController)
|
||||
|
@ -77,6 +77,7 @@ private extension FeedDataController {
|
||||
func load(kind: MastodonFeed.Kind, sinceId: MastodonStatus.ID?) async throws -> [MastodonFeed] {
|
||||
switch kind {
|
||||
case .home:
|
||||
await context.authenticationService.authenticationServiceProvider.fetchAccounts(apiService: context.apiService)
|
||||
return try await context.apiService.homeTimeline(sinceID: sinceId, authenticationBox: authContext.mastodonAuthenticationBox)
|
||||
.value.map { .fromStatus(.fromEntity($0), kind: .home) }
|
||||
case .notificationAll:
|
||||
|
Loading…
x
Reference in New Issue
Block a user