feat: Implement setup screen and login logic
- Add SetupScreen with UI for server URL, username, and password input. - Make SetupScreen the initial screen in the navigation graph. - Implement secure credential storage using EncryptedSharedPreferences. - Create CredentialsRepository and AuthRepository to manage credentials and auth tokens. - Add LoginUseCase to handle the business logic for logging in. - Implement a temporary Retrofit client in ItemRepository to handle login against a user-provided URL. - Integrate login logic into SetupViewModel. - Update all relevant project documentation and DI modules.
This commit is contained in:
@@ -59,6 +59,15 @@
|
||||
<file name="app/src/main/java/com/homebox/lens/ui/screen/search/SearchViewModel.kt" status="stub" spec_ref_id="screen_search">
|
||||
<purpose_summary>ViewModel for the Search screen.</purpose_summary>
|
||||
</file>
|
||||
<file name="app/src/main/java/com/homebox/lens/ui/screen/setup/SetupScreen.kt" status="stub" spec_ref_id="screen_setup">
|
||||
<purpose_summary>UI for the Setup screen.</purpose_summary>
|
||||
</file>
|
||||
<file name="app/src/main/java/com/homebox/lens/ui/screen/setup/SetupViewModel.kt" status="stub" spec_ref_id="screen_setup">
|
||||
<purpose_summary>ViewModel for the Setup screen.</purpose_summary>
|
||||
</file>
|
||||
<file name="app/src/main/java/com/homebox/lens/ui/screen/setup/SetupUiState.kt" status="implemented" spec_ref_id="screen_setup">
|
||||
<purpose_summary>UI state for the Setup screen.</purpose_summary>
|
||||
</file>
|
||||
</module>
|
||||
<module name="data" type="android_library">
|
||||
<purpose_summary>Data layer, responsible for data sources (network, local DB) and repository implementations.</purpose_summary>
|
||||
@@ -80,12 +89,33 @@
|
||||
<file name="data/src/main/java/com/homebox/lens/data/di/RepositoryModule.kt" status="implemented" ref_id="di_repo">
|
||||
<purpose_summary>Hilt module for binding repository interfaces to their implementations.</purpose_summary>
|
||||
</file>
|
||||
<file name="data/src/main/java/com/homebox/lens/data/di/StorageModule.kt" status="implemented" ref_id="di_storage">
|
||||
<purpose_summary>Hilt module for providing storage-related dependencies (EncryptedSharedPreferences).</purpose_summary>
|
||||
</file>
|
||||
<file name="data/src/main/java/com/homebox/lens/data/repository/CredentialsRepositoryImpl.kt" status="implemented" ref_id="repo_credentials_impl">
|
||||
<purpose_summary>Implementation of the CredentialsRepository.</purpose_summary>
|
||||
</file>
|
||||
<file name="data/src/main/java/com/homebox/lens/data/repository/AuthRepositoryImpl.kt" status="implemented" ref_id="repo_auth_impl">
|
||||
<purpose_summary>Implementation of the AuthRepository.</purpose_summary>
|
||||
</file>
|
||||
</module>
|
||||
<module name="domain" type="kotlin_jvm_library">
|
||||
<purpose_summary>Domain layer, contains business logic, use cases, and repository interfaces. Pure Kotlin module.</purpose_summary>
|
||||
<file name="domain/src/main/java/com/homebox/lens/domain/model/Credentials.kt" status="implemented" ref_id="model_credentials">
|
||||
<purpose_summary>Data class for holding user credentials.</purpose_summary>
|
||||
</file>
|
||||
<file name="domain/src/main/java/com/homebox/lens/domain/repository/AuthRepository.kt" status="implemented" ref_id="repo_auth_interface">
|
||||
<purpose_summary>Interface for the auth repository.</purpose_summary>
|
||||
</file>
|
||||
<file name="domain/src/main/java/com/homebox/lens/domain/repository/CredentialsRepository.kt" status="implemented" ref_id="repo_credentials_interface">
|
||||
<purpose_summary>Interface for the credentials repository.</purpose_summary>
|
||||
</file>
|
||||
<file name="domain/src/main/java/com/homebox/lens/domain/repository/ItemRepository.kt" status="implemented" ref_id="repo_interface">
|
||||
<purpose_summary>Interface defining the contract for data operations related to items.</purpose_summary>
|
||||
</file>
|
||||
<file name="domain/src/main/java/com/homebox/lens/domain/usecase/LoginUseCase.kt" status="implemented" spec_ref_id="uc_login">
|
||||
<purpose_summary>Use case for user login.</purpose_summary>
|
||||
</file>
|
||||
<file name="domain/src/main/java/com/homebox/lens/domain/usecase/CreateItemUseCase.kt" status="implemented" spec_ref_id="uc_create_item">
|
||||
<purpose_summary>Use case for creating a new item.</purpose_summary>
|
||||
</file>
|
||||
|
||||
@@ -117,6 +117,7 @@
|
||||
<USE_CASE id="uc_delete_item" file_ref="domain/src/main/java/com/homebox/lens/domain/usecase/DeleteItemUseCase.kt" />
|
||||
<USE_CASE id="uc_get_all_labels" file_ref="domain/src/main/java/com/homebox/lens/domain/usecase/GetAllLabelsUseCase.kt" />
|
||||
<USE_CASE id="uc_get_all_locations" file_ref="domain/src/main/java/com/homebox/lens/domain/usecase/GetAllLocationsUseCase.kt" />
|
||||
<USE_CASE id="uc_login" file_ref="domain/src/main/java/com/homebox/lens/domain/usecase/LoginUseCase.kt" />
|
||||
|
||||
<!-- UI Screens -->
|
||||
<UI_SCREEN id="screen_dashboard" file_ref="app/src/main/java/com/homebox/lens/ui/screen/dashboard/DashboardScreen.kt" />
|
||||
@@ -126,5 +127,6 @@
|
||||
<UI_SCREEN id="screen_labels_list" file_ref="app/src/main/java/com/homebox/lens/ui/screen/labelslist/LabelsListScreen.kt" />
|
||||
<UI_SCREEN id="screen_locations_list" file_ref="app/src/main/java/com/homebox/lens/ui/screen/locationslist/LocationsListScreen.kt" />
|
||||
<UI_SCREEN id="screen_search" file_ref="app/src/main/java/com/homebox/lens/ui/screen/search/SearchScreen.kt" />
|
||||
<UI_SCREEN id="screen_setup" file_ref="app/src/main/java/com/homebox/lens/ui/screen/setup/SetupScreen.kt" />
|
||||
</IMPLEMENTATION_MAP>
|
||||
</PROJECT_SPECIFICATION>
|
||||
Reference in New Issue
Block a user