in plugin/src/main/kotlin/com/jetbrains/packagesearch/plugin/ui/model/packageslist/PackageListBuilder.kt [258:316]
fun addFromSearch(searchResultMap: Map<PackageListItem.Header.Id.Remote, Search>) {
searchResultMap.forEach { (headerId, search) ->
when (search) {
is Search.Query.Base -> addHeader(
title = PackageSearchBundle.message("packagesearch.ui.toolwindow.tab.packages.searchResults"),
id = headerId,
state = when (headerCollapsedStates[headerId]) {
TargetState.OPEN -> PackageListItem.Header.State.LOADING
else -> PackageListItem.Header.State.CLOSED
}
)
is Search.Query.WithVariants -> addHeader(
title = PackageSearchBundle.message("packagesearch.ui.toolwindow.tab.packages.searchResults"),
id = headerId,
state = when (headerCollapsedStates[headerId]) {
TargetState.OPEN -> PackageListItem.Header.State.LOADING
else -> PackageListItem.Header.State.CLOSED
},
attributes = search.attributes,
additionalContent = search.buildVariantsText()
)
is Search.Response.Base.Success -> when {
search.packages.isNotEmpty() -> addFromSearchQueryBase(
headerId = headerId as PackageListItem.Header.Id.Remote.Base,
search = search,
module = modulesMap[headerId.moduleIdentity] as? PackageSearchModule.Base ?: return@forEach
)
else -> addSearchResultNoPackages(headerId = headerId)
}
is Search.Response.WithVariants.Success -> when {
search.packages.isNotEmpty() -> addFromSearchQueryWithVariants(
headerId = headerId as PackageListItem.Header.Id.Remote.WithVariant,
search = search,
module = modulesMap[headerId.moduleIdentity] as? PackageSearchModule.WithVariants
?: return@forEach
)
else -> addSearchResultNoPackages(
headerId = headerId,
additionalContent = search.buildVariantsText(),
attributes = search.attributes
)
}
is Search.Response.Base.Error -> addSearchResultError(headerId = headerId)
is Search.Response.WithVariants.Error -> addSearchResultError(
headerId = headerId,
attributes = search.attributes,
additionalContent = search.buildVariantsText()
)
}
}
}