Navigation refactor

This commit is contained in:
2025-08-11 15:20:30 +03:00
parent 585ae0eb5f
commit a69c5d95ae
25 changed files with 784 additions and 580 deletions

View File

@@ -25,5 +25,6 @@ interface ItemRepository {
suspend fun getAllLocations(): List<LocationOutCount>
suspend fun getAllLabels(): List<LabelOut>
suspend fun searchItems(query: String): PaginationResult<ItemSummary>
fun getRecentlyAddedItems(limit: Int): kotlinx.coroutines.flow.Flow<List<ItemSummary>>
}
// [END_FILE_ItemRepository.kt]

View File

@@ -0,0 +1,33 @@
// [PACKAGE] com.homebox.lens.domain.usecase
// [FILE] GetRecentlyAddedItemsUseCase.kt
package com.homebox.lens.domain.usecase
import com.homebox.lens.domain.model.ItemSummary
import com.homebox.lens.domain.repository.ItemRepository
import kotlinx.coroutines.flow.Flow
import javax.inject.Inject
/**
* [CONTRACT]
* Сценарий использования для получения списка недавно добавленных товаров.
*
* @param itemRepository Репозиторий для доступа к данным о товарах.
* @return Поток (Flow), содержащий список [ItemSummary].
* @precondition Количество запрашиваемых элементов (limit) должно быть положительным.
* @postcondition Возвращает Flow со списком товаров, отсортированных по дате создания в порядке убывания.
* Если товаров нет, возвращает пустой список.
*/
class GetRecentlyAddedItemsUseCase @Inject constructor(
private val itemRepository: ItemRepository
) {
// [ACTION]
operator fun invoke(limit: Int): Flow<List<ItemSummary>> {
// [PRECONDITION]
require(limit > 0) { "[PRECONDITION_FAILED] Limit must be positive." }
// [CORE-LOGIC]
return itemRepository.getRecentlyAddedItems(limit)
}
}
// [END_FILE_GetRecentlyAddedItemsUseCase.kt]