20250906_100000[ARCHITECT -> DEV] Implement Label Management Feature
This work order is to implement the full lifecycle of label management,
including creating, viewing, editing, and deleting labels.
This involves creating a new screen for editing labels, a view model to handle the logic,
and integrating it with the existing label list screen.
Completedagent-developer
Create a new ViewModel `LabelEditViewModel.kt` in `app/src/main/java/com/homebox/lens/ui/screen/labeledit/`.
This ViewModel should handle the business logic for creating and updating a label.
It should use `GetLabelDetailsUseCase`, `CreateLabelUseCase`, and `UpdateLabelUseCase`.
Create `app/src/main/java/com/homebox/lens/ui/screen/labeledit/LabelEditViewModel.kt`Inject `GetLabelDetailsUseCase`, `CreateLabelUseCase`, `UpdateLabelUseCase`.Implement state management for the label editing screen.Implement methods to create and update a label.
Create a new Jetpack Compose screen `LabelEditScreen.kt` in `app/src/main/java/com/homebox/lens/ui/screen/labeledit/`.
This screen will be used for both creating a new label and editing an existing one.
The UI should be similar to the `LocationEditScreen`.
Create `app/src/main/java/com/homebox/lens/ui/screen/labeledit/LabelEditScreen.kt`Implement the UI for creating/editing a label (e.g., a text field for the name and a color picker).Connect the screen to `LabelEditViewModel`.
Update the navigation graph to include the new `LabelEditScreen`.
The `LabelsListScreen` should navigate to `LabelEditScreen` when the user wants to create or edit a label.
Add a route for `LabelEditScreen` in `Screen.kt`.Add the new screen to the `NavGraph.kt`.Implement navigation from `LabelsListScreen` to `LabelEditScreen`.
Create a new UseCase `GetLabelDetailsUseCase.kt` in `domain/src/main/java/com/homebox/lens/domain/usecase/`.
This UseCase will be responsible for getting the details of a single label.
Create `domain/src/main/java/com/homebox/lens/domain/usecase/GetLabelDetailsUseCase.kt`Implement the logic to get label details from the `ItemRepository`.