mirror of
https://github.com/Kilo-Org/kilocode.git
synced 2026-09-19 01:51:21 +08:00
fix(vscode): distinguish filtered marketplace empty states
Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
This commit is contained in:
co-authored by
kiloconnect[bot]
parent
04d454b5b3
commit
5fe01e71c7
@@ -7,7 +7,12 @@ import {
|
||||
type MarketplaceRemoveContext,
|
||||
} from "../../src/services/marketplace/actions"
|
||||
import type { McpMarketplaceItem } from "../../src/services/marketplace/types"
|
||||
import { filterItems, installedScopes, retain } from "../../webview-ui/src/components/marketplace/utils"
|
||||
import {
|
||||
filterItems,
|
||||
hasRelevantItems,
|
||||
installedScopes,
|
||||
retain,
|
||||
} from "../../webview-ui/src/components/marketplace/utils"
|
||||
import type { MarketplaceItem } from "../../webview-ui/src/types/marketplace"
|
||||
|
||||
const project = "/repo"
|
||||
@@ -133,11 +138,10 @@ describe("Marketplace installation metadata", () => {
|
||||
"mcp:warehouse": { vscodeExtension: ["data.warehouse"] },
|
||||
}).map((item) => item.id),
|
||||
).toEqual(["reviewer", "warehouse"])
|
||||
expect(
|
||||
filterItems(items, metadata, "warehouse", "all", [], [], {}, true, {
|
||||
"agent:reviewer": { filename: ["*.review.ts"] },
|
||||
}),
|
||||
).toEqual([])
|
||||
const relevance = { "agent:reviewer": { filename: ["*.review.ts"] } }
|
||||
expect(filterItems(items, metadata, "warehouse", "all", [], [], {}, true, relevance)).toEqual([])
|
||||
expect(hasRelevantItems(items, relevance)).toBe(true)
|
||||
expect(hasRelevantItems(items, {})).toBe(false)
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ import type {
|
||||
MarketplaceRelevanceMetadata,
|
||||
} from "../../types/marketplace"
|
||||
import { useLanguage } from "../../context/language"
|
||||
import { filterItems, retain } from "./utils"
|
||||
import { filterItems, hasRelevantItems, retain } from "./utils"
|
||||
import { ItemCard } from "./ItemCard"
|
||||
import { MarketplaceContribute } from "./MarketplaceContribute"
|
||||
|
||||
@@ -171,7 +171,9 @@ export const MarketplaceListView = (props: Props) => {
|
||||
fallback={
|
||||
<div class="marketplace-empty">
|
||||
<span class="marketplace-empty-message">
|
||||
{relevant() ? props.relevantEmptyMessage : props.emptyMessage}
|
||||
{relevant() && !hasRelevantItems(props.items, props.relevance)
|
||||
? props.relevantEmptyMessage
|
||||
: props.emptyMessage}
|
||||
</span>
|
||||
<MarketplaceContribute />
|
||||
</div>
|
||||
|
||||
@@ -4,6 +4,10 @@ import type {
|
||||
MarketplaceRelevanceMetadata,
|
||||
} from "../../types/marketplace"
|
||||
|
||||
export function hasRelevantItems(items: MarketplaceItem[], relevance: MarketplaceRelevanceMetadata): boolean {
|
||||
return items.some((item) => !!relevance[`${item.type}:${item.id}`])
|
||||
}
|
||||
|
||||
export function retain<T>(selected: T[], available: T[]): T[] {
|
||||
const values = new Set(available)
|
||||
const next = selected.filter((value) => values.has(value))
|
||||
|
||||
Reference in New Issue
Block a user