feat: Refactor login screen - fix compilation error
This commit is contained in:
59
tasks/work_order_login_screen.xml
Normal file
59
tasks/work_order_login_screen.xml
Normal file
@@ -0,0 +1,59 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<WORK_ORDER>
|
||||
<META>
|
||||
<ID>WO-LOGIN-REFACTOR</ID>
|
||||
<TITLE>[ARCHITECT -> DEV] Рефакторинг экрана входа и логики первого запуска</TITLE>
|
||||
<DESCRIPTION>Цель этой задачи - изменить логику запуска приложения. Экран входа (SetupScreen) должен появляться только при первом запуске, когда учетные данные еще не сохранены. В последующие запуски пользователь должен сразу попадать на главный экран (Dashboard). Также необходимо улучшить визуальное оформление экрана входа.</DESCRIPTION>
|
||||
<CREATED_BY>architect-agent</CREATED_BY>
|
||||
<ASSIGNED_TO>developer-agent</ASSIGNED_TO>
|
||||
<STATUS>pending</STATUS>
|
||||
</META>
|
||||
|
||||
<TASK_BREAKDOWN>
|
||||
<STEP n="1" file="app/src/main/java/com/homebox/lens/ui/screen/setup/SetupViewModel.kt">
|
||||
<ACTION>Добавить public-метод для синхронной проверки наличия учетных данных.</ACTION>
|
||||
<DETAILS>
|
||||
Добавьте в класс `SetupViewModel` новый метод `fun areCredentialsSaved(): Boolean`.
|
||||
Этот метод должен синхронно проверять, сохранены ли учетные данные в `CredentialsRepository`.
|
||||
Текущая реализация `getCredentials()` асинхронна, что не подходит для быстрой проверки в `NavGraph`.
|
||||
Вам может потребоваться изменить `CredentialsRepository` для поддержки синхронной проверки (например, используя `SharedPreferences` напрямую).
|
||||
</DETAILS>
|
||||
</STEP>
|
||||
|
||||
<STEP n="2" file="app/src/main/java/com/homebox/lens/ui/screen/splash/SplashScreen.kt">
|
||||
<ACTION>Создать новый `SplashScreen`.</ACTION>
|
||||
<DETAILS>
|
||||
Создайте новый Composable-экран `SplashScreen.kt`.
|
||||
Этот экран будет новой точкой входа в `NavGraph`.
|
||||
Он будет использовать `SetupViewModel` для вызова `areCredentialsSaved()` и, в зависимости от результата, немедленно навигироваться либо на `Screen.Setup`, либо на `Screen.Dashboard`.
|
||||
Пока идет проверка, на экране должен отображаться `CircularProgressIndicator`.
|
||||
</DETAILS>
|
||||
</STEP>
|
||||
|
||||
<STEP n="3" file="app/src/main/java/com/homebox/lens/navigation/NavGraph.kt">
|
||||
<ACTION>Обновить `NavGraph` для использования `SplashScreen`.</ACTION>
|
||||
<DETAILS>
|
||||
Измените `startDestination` в `NavHost` на `Screen.Splash.route`.
|
||||
Добавьте `composable` для `SplashScreen`.
|
||||
В `SplashScreen` вызовите `navController.navigate` с очисткой бэкстека (`popUpTo(Screen.Splash.route) { inclusive = true }`), чтобы пользователь не мог вернуться на сплэш-экран.
|
||||
</DETAILS>
|
||||
</STEP>
|
||||
|
||||
<STEP n="4" file="app/src/main/java/com/homebox/lens/ui/screen/setup/SetupScreen.kt">
|
||||
<ACTION>Улучшить UI экрана `SetupScreen`.</ACTION>
|
||||
<DETAILS>
|
||||
Текущий UI слишком прост. Добавьте заголовок, иконку приложения, и более приятное расположение элементов.
|
||||
Используйте `Card` для группировки полей ввода. Добавьте `Spacer` для лучшего отступа.
|
||||
Кнопку "Connect" сделайте более заметной.
|
||||
</DETAILS>
|
||||
</STEP>
|
||||
|
||||
</TASK_BREAKDOWN>
|
||||
|
||||
<ACCEPTANCE_CRITERIA>
|
||||
<CRITERION>При первом запуске приложения открывается `SetupScreen`.</CRITERION>
|
||||
<CRITERION>После успешного ввода данных и входа, при последующих перезапусках приложения открывается `DashboardScreen`, минуя `SetupScreen`.</CRITERION>
|
||||
<CRITERION>`SetupScreen` имеет улучшенный и более привлекательный дизайн.</CRITERION>
|
||||
</ACCEPTANCE_CRITERIA>
|
||||
|
||||
</WORK_ORDER>
|
||||
Reference in New Issue
Block a user