Как скрестить два Flow чтобы чтобы запустить их значения как два аргумента в suspend-функцию, возвращающую String?

Раньше, когда метод из вьюМодели "suspend fun getCategoryName(categoryNumber: Int)" содержал только один аргумент categoryNumber: Int, я его запускал из фрагмента так:

In Fragment:

viewModel.categoryNumber.observe(viewLifecycleOwner) {
        viewLifecycleOwner.lifecycleScope.launch {
            (activity as MainActivity).supportActionBar?.title = viewModel.getCategoryName(it)
        }
    }

Сейчас я добавил второй аргумент NativeLanguage, и не пойму как мне "скрестить" их чтобы запускать из Фрагмента одним методом. Кто сможет подсказать? буду благодарен за помощь.

Я пытался что-то такое написать:

suspend fun catName(): String = combine( catNumFlow, natLangFlow ) { cN, nL ->
        Pair(cN, nL)
    }.flatMapLatest { (cN, nL) ->
        wordDao.getCategoryName(cN, nL)
    }

Но здесь type mismatch, потому что Dao метод - это suspend fun который возвращает String, а комбинирование Flow-ов дает Flow. Подскажите плиз как это правильно написать. Буду благодарен за помощь.

In ViewModel:

val catNumFlow = preferencesManager.categoryNumberFlow // returns Flow<Int>
private val natLangFlow = preferencesManager.nativeLanguageFlow // Flow<NativeLanguage> (enum)

suspend fun getCategoryName(categoryNumber: Int, nativeLanguage: NativeLanguage) = wordDao.getCategoryName(categoryNumber, nativeLanguage)

My Dao query:

suspend fun getCategoryName(categoryNumber: Int, nativeLanguage: NativeLanguage) =
    if (categoryNumber != 0) {
        when (nativeLanguage) {
            NativeLanguage.RUS -> getCategoryNameRus(categoryNumber)
            NativeLanguage.ENG -> getCategoryNameEng(categoryNumber)
        }
    } else {
        when (nativeLanguage) {
            NativeLanguage.RUS -> "Все категории"
            NativeLanguage.ENG -> "All categories"
        }
    }

@Query("SELECT categoryNameRus FROM category_table WHERE categoryNumber = :categoryNumber")
suspend fun getCategoryNameRus(categoryNumber: Int): String

@Query("SELECT categoryNameEng FROM category_table WHERE categoryNumber = :categoryNumber")
suspend fun getCategoryNameEng(categoryNumber: Int): String

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