WO-LOGIN-REFACTOR [ARCHITECT -> DEV] Рефакторинг экрана входа и логики первого запуска Цель этой задачи - изменить логику запуска приложения. Экран входа (SetupScreen) должен появляться только при первом запуске, когда учетные данные еще не сохранены. В последующие запуски пользователь должен сразу попадать на главный экран (Dashboard). Также необходимо улучшить визуальное оформление экрана входа. architect-agent developer-agent pending Добавить public-метод для синхронной проверки наличия учетных данных.
Добавьте в класс `SetupViewModel` новый метод `fun areCredentialsSaved(): Boolean`. Этот метод должен синхронно проверять, сохранены ли учетные данные в `CredentialsRepository`. Текущая реализация `getCredentials()` асинхронна, что не подходит для быстрой проверки в `NavGraph`. Вам может потребоваться изменить `CredentialsRepository` для поддержки синхронной проверки (например, используя `SharedPreferences` напрямую).
Создать новый `SplashScreen`.
Создайте новый Composable-экран `SplashScreen.kt`. Этот экран будет новой точкой входа в `NavGraph`. Он будет использовать `SetupViewModel` для вызова `areCredentialsSaved()` и, в зависимости от результата, немедленно навигироваться либо на `Screen.Setup`, либо на `Screen.Dashboard`. Пока идет проверка, на экране должен отображаться `CircularProgressIndicator`.
Обновить `NavGraph` для использования `SplashScreen`.
Измените `startDestination` в `NavHost` на `Screen.Splash.route`. Добавьте `composable` для `SplashScreen`. В `SplashScreen` вызовите `navController.navigate` с очисткой бэкстека (`popUpTo(Screen.Splash.route) { inclusive = true }`), чтобы пользователь не мог вернуться на сплэш-экран.
Улучшить UI экрана `SetupScreen`.
Текущий UI слишком прост. Добавьте заголовок, иконку приложения, и более приятное расположение элементов. Используйте `Card` для группировки полей ввода. Добавьте `Spacer` для лучшего отступа. Кнопку "Connect" сделайте более заметной.
При первом запуске приложения открывается `SetupScreen`. После успешного ввода данных и входа, при последующих перезапусках приложения открывается `DashboardScreen`, минуя `SetupScreen`. `SetupScreen` имеет улучшенный и более привлекательный дизайн.