fun addFromSearch()

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()
                )
            }
        }
    }