feat: Refactor login screen - fix compilation error

This commit is contained in:
2025-10-02 13:11:49 +03:00
parent 8816377361
commit eccc7ee970
21 changed files with 494 additions and 174 deletions

View File

@@ -16,6 +16,7 @@ package com.homebox.lens.domain.model
data class LabelOut(
val id: String,
val name: String,
val description: String?,
val color: String,
val isArchived: Boolean,
val createdAt: String,

View File

@@ -44,8 +44,25 @@ interface CredentialsRepository {
* @summary Retrieves the saved authorization token.
* @return The saved token as a String, or null if no token is saved.
*/
suspend fun getToken(): String?
// [END_ENTITY: Function('getToken')]
suspend fun getToken(): String?
// [END_ENTITY: Function('getToken')]
// [ENTITY: Function('areCredentialsSavedSync')]
/**
* @summary Synchronously checks if user credentials are saved.
* @return true if all essential credentials (URL, username, password) are present, false otherwise.
*/
fun areCredentialsSavedSync(): Boolean
// [END_ENTITY: Function('areCredentialsSavedSync')]
// [ENTITY: Function('clearAllCredentials')]
/**
* @summary Clears all saved credentials and tokens.
* @sideeffect Removes all credential-related entries from SharedPreferences.
*/
suspend fun clearAllCredentials()
// [END_ENTITY: Function('clearAllCredentials')]
}
// [END_ENTITY: Interface('CredentialsRepository')]
// [END_FILE_CredentialsRepository.kt]

View File

@@ -1,7 +1,6 @@
// [PACKAGE] com.homebox.lens.domain.usecase
// [FILE] GetLabelDetailsUseCase.kt
// [SEMANTICS] business_logic, use_case, label_retrieval
// [SEMANTICS] business_logic, use_case, label, get
package com.homebox.lens.domain.usecase
// [IMPORTS]
@@ -13,23 +12,25 @@ import javax.inject.Inject
// [ENTITY: UseCase('GetLabelDetailsUseCase')]
// [RELATION: UseCase('GetLabelDetailsUseCase')] -> [DEPENDS_ON] -> [Interface('ItemRepository')]
/**
* @summary Получает детальную информацию о метке по ее ID.
* @param itemRepository Репозиторий для работы с данными о метках.
* @summary Сценарий использования для получения деталей метки.
* @param repository Репозиторий для доступа к данным.
*/
class GetLabelDetailsUseCase @Inject constructor(
private val itemRepository: ItemRepository
private val repository: ItemRepository
) {
// [ENTITY: Function('invoke')]
/**
* @summary Выполняет получение детальной информации о метке.
* @param labelId ID запрашиваемой метки.
* @return Детальная информация о метке [LabelOut].
* @throws IllegalArgumentException если `labelId` пустой.
* @throws NoSuchElementException если метка с указанным ID не найдена.
* @summary Выполняет получение деталей метки.
* @param labelId ID метки для получения деталей.
* @return Возвращает полную информацию о метке [LabelOut].
* @throws Exception в случае ошибки на уровне репозитория (сеть, API).
* @precondition `labelId` не должен быть пустым.
*/
suspend operator fun invoke(labelId: String): LabelOut {
require(labelId.isNotBlank()) { "Label ID cannot be blank." }
return itemRepository.getLabelDetails(labelId)
return repository.getLabelDetails(labelId)
}
// [END_ENTITY: Function('invoke')]
}
// [END_ENTITY: UseCase('GetLabelDetailsUseCase')]
// [END_FILE_GetLabelDetailsUseCase.kt]