Fix tab selection timing to wait for account sign-in

Tab selection was being set immediately during app configuration, before
the user account had completed sign-in. This caused tabs that require
authentication (like Subscriptions and Playlists) to not be properly
selected on startup since they weren't visible yet.

Changes:
- Add notification system for account configuration completion
- Post notification after all account types finish configuration:
  * Accounts with existing tokens
  * Accounts requiring sign-in (after network request completes)
  * Anonymous/public accounts
  * Error cases (missing credentials, network failures)
- Set up observer before account configuration to ensure notification
  is received
- Set tab selection only when account is fully configured
This commit is contained in:
Arkadiusz Fal
2025-11-19 23:24:21 +01:00
parent b8f6dabbc9
commit c1b23d20f2
6 changed files with 61 additions and 11 deletions

View File

@@ -135,6 +135,10 @@ final class PipedAPI: Service, ObservableObject, VideosAPI {
FeedModel.shared.onAccountChange()
SubscribedChannelsModel.shared.onAccountChange()
PlaylistsModel.shared.onAccountChange()
DispatchQueue.main.async {
NotificationCenter.default.post(name: .accountConfigurationComplete, object: nil)
}
}
}
@@ -149,6 +153,9 @@ final class PipedAPI: Service, ObservableObject, VideosAPI {
let username,
let password
else {
DispatchQueue.main.async {
NotificationCenter.default.post(name: .accountConfigurationComplete, object: nil)
}
return
}
@@ -184,11 +191,14 @@ final class PipedAPI: Service, ObservableObject, VideosAPI {
self.configure()
NotificationCenter.default.post(name: .accountConfigurationComplete, object: nil)
case let .failure(error):
NavigationModel.shared.presentAlert(
title: "Account Error",
message: error.localizedDescription
)
NotificationCenter.default.post(name: .accountConfigurationComplete, object: nil)
}
}
}