Как установить тело двух запросов в один RecyclerView?

У меня есть RecyclerView, который наследуется от PagingDataAdapter, внутри адаптера у меня два viewHolder'a, они делятся по viewType'aм, дело в том что я написал код, который объединил тело двух запросов в один MutableLiveData, которые можно будет потом обсервить во фрагменте и установить его значение через submitDatа.

private val _searchResult = MutableLiveData<Resource<PagingData<SearchItems>>>()
val searchResult: LiveData<Resource<PagingData<SearchItems>>> = _searchResult

fun getSearchResult(q: String, id: String) = viewModelScope.launch {
    _searchResult.postValue(Resource.Loading())
    val searchDeferred = async { repository.getSearch(q) }
    val channelsDeferred = async { repository.fetchChannels(id) }

    val search = searchDeferred.await()
    val channels = channelsDeferred.await()

    channels.collect {
        _searchResult.value = Resource.Success(it)
    }
    search.collect {
        _searchResult.value = Resource.Success(it)
    }

}

это код во ViewModel'e

viewModel.searchResult.observe(viewLifecycleOwner, {
        when (it) {
            is Resource.Error -> {
                it.message?.let { it1 -> Log.d("mecal", it1) }
            }

            is Resource.Success -> {
                lifecycleScope.launch {
                    it.data?.map { item ->
                        viewModel.getSearchResult(
                            args.query,
                            item.snippet?.channelId.toString()
                        )
                    }
                    it.data?.let { it1 -> searchAdapter.submitData(it1) }
                }
            }
        }
    })

a это код во Фрагменте. Дело в том что этот код не работает, т.е он не отображает данные в recyclerview. Но я не знаю что именно я сделал не так, если у вас есть предложения почему он не работает или есть другой способ, прошу пишите, мне очень это нужно!

class SearchRepository @Inject constructor(
private val apiService: SearchApiService
) : BaseRepository() {

fun getSearch(
    q: String,
    max: Int
): Flow<PagingData<SearchItems>> {
    return Pager(
        config = PagingConfig(
            pageSize = max,
            initialLoadSize = max,
            enablePlaceholders = false
        )
    ) {
        SearchPagingSource(apiService, q)
    }.flow.map {
        it.map { items ->
            items.toSearch()
        }
    }
}

fun fetchChannels(
id: String
): Flow<PagingData<SearchItems>> {
    return Pager(
        config = PagingConfig(
            pageSize = 10,
            initialLoadSize = 10,
            enablePlaceholders = false
        )
    ) {
        ChannelsPagingSource(apiService)
    }.flow.map {
        it.map { items ->
            items.toSearch()
        }
    }
}
}

Ответы (0 шт):