Navigation refactor
This commit is contained in:
@@ -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]
|
||||
@@ -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]
|
||||
Reference in New Issue
Block a user