diff --git a/desktop/app/src/chrome/plugin-manager/PluginInstaller.tsx b/desktop/app/src/chrome/plugin-manager/PluginInstaller.tsx index 9344f960a..dff791411 100644 --- a/desktop/app/src/chrome/plugin-manager/PluginInstaller.tsx +++ b/desktop/app/src/chrome/plugin-manager/PluginInstaller.tsx @@ -345,7 +345,7 @@ function useNPMSearch( (async () => { let cancelled = false; const updatablePlugins = await reportPlatformFailures( - getUpdatablePlugins(), + getUpdatablePlugins(query), `${TAG}:queryIndex`, ); if (cancelled) { diff --git a/desktop/plugin-lib/src/getUpdatablePlugins.ts b/desktop/plugin-lib/src/getUpdatablePlugins.ts index c7e2feecc..b9dc0b5ec 100644 --- a/desktop/plugin-lib/src/getUpdatablePlugins.ts +++ b/desktop/plugin-lib/src/getUpdatablePlugins.ts @@ -16,6 +16,7 @@ import getPluginDetails from './getPluginDetails'; import {getPluginInstallationDir} from './pluginInstaller'; import pmap from 'p-map'; import {notNull} from './typeUtils'; +const npmApi = new NpmApi(); export type UpdateResult = | {kind: 'not-installed'; version: string} @@ -30,8 +31,9 @@ export type UpdatablePlugin = { export type UpdatablePluginDetails = PluginDetails & UpdatablePlugin; -export async function getUpdatablePlugins(): Promise { - const npmApi = new NpmApi(); +export async function getUpdatablePlugins( + query?: string, +): Promise { const installedPlugins = await getInstalledPlugins(); const npmHostedPlugins = new Map( (await getNpmHostedPlugins()).map((p) => [p.name, p]), @@ -119,5 +121,12 @@ export async function getUpdatablePlugins(): Promise { ...annotatedNotInstalledPlugins .filter(notNull) .sort((p1, p2) => p1.name.localeCompare(p2.name)), - ]; + ].filter( + (p) => + !query || + p.name.includes(query) || + p.id.includes(query) || + p.description?.includes(query) || + p.title?.includes(query), + ); }