Как объединить два запроса к API через Retrofit2

я делаю два асинхронных запроса с помощью Retrofit2 и RxJava3, один для получения информации о тикере (компания, логотип, валюта), а через второй запрос получаю данные о его цене (изменение, текущую стоимость). В каждом запросе используется одно и то же название тикера. Как мне объединить данные с этих двух запросов в одно, для последующего вывода? Вот инициализация ViewModels:

priceModel = ViewModelProvider(this).get(PriceViewModel::class.java)
    priceModel.getPriceObserver().observe(this, Observer<RealTimePriceModel> { it ->
        if(it != null) {
            Log.d(TAG, it.toString())
        }
        else {
            Log.e(TAG, "Error in fetching data")
        }
    })

profileModel = ViewModelProvider(this).get(CompanyProfileViewModel::class.java)
        profileModel.getCompanyProfileObserver().observe(this, Observer<CompanyProfileModel> {
            if(it != null) {
                Log.d(TAG, it.toString())
            }
            else {
                Log.e(TAG, "Error in fetching data")
            }
        })

Вот ViewModel Профиля:

var profile: MutableLiveData<CompanyProfileModel> = MutableLiveData()

    fun getCompanyProfileObserver(): MutableLiveData<CompanyProfileModel> {
        return profile
    }

    fun makeApiCall(symbol: String) {
        val retrofitInstance = RetrofitFinhubInstance.getRetrofitInstance().create(RetrofitService::class.java)
        retrofitInstance.getCompanyInfoFromAPI(symbol)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(getCompanyProfileObserverRx())
    }

    private fun getCompanyProfileObserverRx(): Observer<CompanyProfileModel> {
        return object : Observer<CompanyProfileModel> {
            override fun onComplete() {
                // Hide progress bar
            }

            override fun onError(e: Throwable?) {
                profile.postValue(null)
            }

            override fun onNext(t: CompanyProfileModel?) {
                profile.postValue(t)
            }

            override fun onSubscribe(d: Disposable?) {
                // Show progress bar
            }
        }
    }

А вот ViewModel цены:

var price: MutableLiveData<RealTimePriceModel> = MutableLiveData()

    fun getPriceObserver(): MutableLiveData<RealTimePriceModel> {
        return price
    }

    fun makeApiCall(ticker: String) {
        val retrofitInstance = RetrofitYahooFinanceInstance.getRetrofitInstance().create(RetrofitService::class.java)
        retrofitInstance.getRealTimePrice(ticker)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(getPriceObserverRx())
    }

    private fun getPriceObserverRx(): Observer<RealTimePriceModel> {
        return object : Observer<RealTimePriceModel> {
            override fun onComplete() {
                // Hide progress bar
            }

            override fun onError(e: Throwable?) {
                price.postValue(null)
            }

            override fun onNext(t: RealTimePriceModel?) {
                price.postValue(t)
            }

            override fun onSubscribe(d: Disposable?) {
                // Show progress bar
            }
        }
    }

И вот как вызываю запросы:

fun getRealTimePrice(input: String) {
        priceModel.makeApiCall(input)
    }
fun getCompanyProfile(symbol: String) {
        profileModel.makeApiCall(symbol)
    }

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