Android Architecture Patterns: MVI, Clean Architecture, and Hilt - Mobile Development Hub
suspend fun searchArticles(query: String, page: Int): Result
>
suspend fun bookmarkArticle(id: String): Result
suspend fun getBookmarkedArticles(): Result
>
}
data class PaginatedResult
(
val items: List
,
val currentPage: Int,
val totalPages: Int,
val hasMore: Boolean
)
// domain/usecase/article/FetchArticlesUseCase.kt
class FetchArticlesUseCase @Inject constructor(
private val repository: ArticleRepository
) {
operator fun invoke(page: Int = 1, pageSize: Int = 20): Result
> {
require(page > 0) { "Page must be positive" }
require(pageSize in 1..100) { "Page size must be 1-100" }
return repository.fetchArticles(page, pageSize)
}
}
// domain/usecase/article/SearchArticlesUseCase.kt
class SearchArticlesUseCase @Inject constructor(
private val repository: ArticleRepository
) {
operator fun invoke(query: String, page: Int = 1): Result
> {
require(query.isNotBlank()) { "Query cannot be blank" }
return repository.searchArticles(query.trim(), page)
}
}
Comments
Post a Comment