(RIDER-101819) Settings Import: skip unavailable providers

GitOrigin-RevId: aec011a6be455023482f128a5001136542cfb21d
This commit is contained in:
Ivan Migalev
2024-03-01 15:40:55 +01:00
committed by intellij-monorepo-bot
parent e6051ac129
commit 4884013697

View File

@@ -31,7 +31,9 @@ class TransferSettingsDataProvider(val providers: List<TransferSettingsProvider>
suspend fun hasDataToImport(): Boolean =
coroutineScope {
val result: Boolean = providers.map { provider ->
async { logger.runAndLogException { provider.hasDataToImport() } ?: false }::await.asFlow()
async {
logger.runAndLogException { provider.isAvailable() && provider.hasDataToImport() } ?: false
}::await.asFlow()
}.merge().firstOrNull { it } ?: false
coroutineContext.job.cancelChildren()
@@ -72,6 +74,7 @@ private class TransferSettingsDataProviderSession(private val providers: List<Tr
try {
val startTime = System.nanoTime().nanoseconds
@Suppress("SSBasedInspection") // we are ok with Steam API because of parallelStream
val result = provider.getIdeVersions(skipIds ?: emptyList()).stream()
val endTime = System.nanoTime().nanoseconds
TransferSettingsCollector.logPerformanceMeasured(