Size: a a a

Kotlin Community

2020 November 02

PK

Pasha Khan in Kotlin Community
Helo
источник

PK

Pasha Khan in Kotlin Community
Helo good night
источник

AN

Alexander Nozik in Kotlin Community
Да, возможно. У меня градл синк на одном проектк в бесконечность уходит, но это видимо другое.
источник

АГ

Александр Горшков... in Kotlin Community
Всем привет. Подскажите, как можно разрешить такую ситуацию.

У меня есть функция, назовём её getFlow, которая возвращает Flow в зависимости от переданного в него условия, пусть это будет некий enum.

private fun getFlow(type: Type): Flow<Int> {
   return when (type) {
       FIRST_TYPE -> repo1.reloadFirstType()
       SECOND_TYPE -> repo2.reloadSecondType()
       THIRD_TYPE -> repo3.reloadThirdType()
   }
}


В этой функции из разных репозиториев получаются Flow: это запросы в сеть, которые делаются постранично, результаты обрабатываются в репозиториях, а наружу — просто отдаётся процент выполнения.

В эту функцию в самом начале я передаю FIRST_TYPE, а потом мне нужно после условия, что число = 100, вызвать getFlow со следующим типом.

Дело в том, что у меня одна подписка на Flow
var progressFlow = getFlow(FIRST_TYPE)

Вопрос: как можно сделать в данном случае переход от первого Flow ко второму?
источник

IE

Ivan Erofeev in Kotlin Community
Александр Горшков
Всем привет. Подскажите, как можно разрешить такую ситуацию.

У меня есть функция, назовём её getFlow, которая возвращает Flow в зависимости от переданного в него условия, пусть это будет некий enum.

private fun getFlow(type: Type): Flow<Int> {
   return when (type) {
       FIRST_TYPE -> repo1.reloadFirstType()
       SECOND_TYPE -> repo2.reloadSecondType()
       THIRD_TYPE -> repo3.reloadThirdType()
   }
}


В этой функции из разных репозиториев получаются Flow: это запросы в сеть, которые делаются постранично, результаты обрабатываются в репозиториях, а наружу — просто отдаётся процент выполнения.

В эту функцию в самом начале я передаю FIRST_TYPE, а потом мне нужно после условия, что число = 100, вызвать getFlow со следующим типом.

Дело в том, что у меня одна подписка на Flow
var progressFlow = getFlow(FIRST_TYPE)

Вопрос: как можно сделать в данном случае переход от первого Flow ко второму?
Порядок заранее известен? FIRST_TYPE -> SECOND_TYPE -> THIRD_TYPE?
источник

АГ

Александр Горшков... in Kotlin Community
Ivan Erofeev
Порядок заранее известен? FIRST_TYPE -> SECOND_TYPE -> THIRD_TYPE?
Да, порядок я могу определить. И мне важно, чтобы этот порядок сохранялся
источник

IE

Ivan Erofeev in Kotlin Community
Александр Горшков
Да, порядок я могу определить. И мне важно, чтобы этот порядок сохранялся
Мне кажется тебе нужно что-то вроде этого:
val progressFlow = arrayOf(FIRST_TYPE, SECOND_TYPE, THIRD_TYPE)
       .asFlow()
       .flatMapConcat { type ->
           getFlow(type)
               .filter { it == 100 }
       }
источник

AM

Andrew Mikhaylov in Kotlin Community
Ivan Erofeev
Мне кажется тебе нужно что-то вроде этого:
val progressFlow = arrayOf(FIRST_TYPE, SECOND_TYPE, THIRD_TYPE)
       .asFlow()
       .flatMapConcat { type ->
           getFlow(type)
               .filter { it == 100 }
       }
Только по дороге надо ещё вставить, похоже, dropWhile, на случай, если надо начать, к примеру, со второго типа.
источник

AM

Andrew Mikhaylov in Kotlin Community
listOf(FIRST_TYPE, SECOND_TYPE, THIRD_TYPE)
   .dropWhile { it != requestedType }
   .asFlow()
   ...
источник

АГ

Александр Горшков... in Kotlin Community
Ivan Erofeev
Мне кажется тебе нужно что-то вроде этого:
val progressFlow = arrayOf(FIRST_TYPE, SECOND_TYPE, THIRD_TYPE)
       .asFlow()
       .flatMapConcat { type ->
           getFlow(type)
               .filter { it == 100 }
       }
Спасибо! Это, фактически, то что нужно🤟
источник

АГ

Александр Горшков... in Kotlin Community
Andrew Mikhaylov
listOf(FIRST_TYPE, SECOND_TYPE, THIRD_TYPE)
   .dropWhile { it != requestedType }
   .asFlow()
   ...
И тебе тоже большое спасибо!
источник

AM

Andrew Mikhaylov in Kotlin Community
Александр Горшков
И тебе тоже большое спасибо!
Та не за что :) Я упустил изначально, что сам процесс работы с данными живёт под капотом, а эмитящееся число — это проценты, потому и не понял, как это число с переходом увызяывается. Теперь всё ясно :)
источник
2020 November 03

AN

Alexander Nozik in Kotlin Community
Ни у кого больше нет подвисания градл синка на многомодульном мпп проекте?
источник

AN

Alexander Nozik in Kotlin Community
У меня не на всех проектах, но на некоторых прямо на смерть
источник

AN

Alexander Nozik in Kotlin Community
При этом билд проходит мгновенно
источник

IP

Iaroslav Postovalov in Kotlin Community
пробуйте configure on demand
источник

IP

Iaroslav Postovalov in Kotlin Community
мне помогает
источник

AN

Alexander Nozik in Kotlin Community
Iaroslav Postovalov
пробуйте configure on demand
А можно ссылку?
источник

AN

Alexander Nozik in Kotlin Community
И проблема не в градле. Градл сам конфигурируется мгновенно. А вот синк в идее висит по 20 минут
источник

IP

Iaroslav Postovalov in Kotlin Community
Alexander Nozik
А можно ссылку?
org.gradle.configureondemand=true
источник