Код: Выделить всё
class SearchDialogComponentImpl(
componentContext: ComponentContext,
componentFactory: ComponentFactory,
private val searchService: SearchService,
) : SearchDialogComponent, BaseComponent(componentContext, SearchDialogState()),
KoinComponent {
private val searchProductRepositoryPagingSource: SearchProductRepositoryPagingSource by inject {
parametersOf(
viewState.searchTextField
)
}
override val products: Flow
> = Pager(
initialKey = BuildKonfig.PAGING_INITIAL_PAGE,
config = PagingConfig(
pageSize = BuildKonfig.PAGING_OFFSET,
initialLoadSize = BuildKonfig.PAGING_OFFSET,
),
pagingSourceFactory = { searchProductRepositoryPagingSource }
).flow
override fun onSearchTextFieldValueChanged(value: String) {
viewState = viewState.copy(searchTextField = value)
searchTextFieldValueChanged(value)
if (viewState.searchedProduct) {
searchJob?.cancel()
if (viewState.searchTextField.isNotEmpty()) {
searchJob = scope.launch(Dispatchers.IO) {
delay(500)
searchProductRepositoryPagingSource.invalidate()
}
} else {
viewState =
viewState.copy(productsLoadingState = LoadingState.Empty(EmptyType.EmptyTextField))
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/786 ... in-paging3