From 5862a2cdc4ad701cee8c591df82c854949b5ba04 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Tue, 24 Nov 2020 18:42:03 +0100 Subject: [PATCH] plugin list --- packages/api/src/controllers/plugins.js | 6 ++++-- packages/web/src/widgets/PluginsWidget.js | 14 +++++++++++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/packages/api/src/controllers/plugins.js b/packages/api/src/controllers/plugins.js index 1129d9857..e382c0f1d 100644 --- a/packages/api/src/controllers/plugins.js +++ b/packages/api/src/controllers/plugins.js @@ -41,11 +41,13 @@ module.exports = { // const { results } = json || {}; // return (results || []).map((x) => x.package); + // DOCS: https://github.com/npm/registry/blob/master/docs/REGISTRY-API.md#get-v1search const response = await fetch( - `https://www.npmjs.com/search/suggestions?q=dbgate-plugin ${encodeURIComponent(filter)}` + `http://registry.npmjs.com/-/v1/search?text=${encodeURIComponent(filter)}+keywords:dbgateplugin&size=25&from=0` ); const json = await response.json(); - return json || []; + const { objects } = json || {}; + return (objects || []).map((x) => x.package); }, info_meta: 'get', diff --git a/packages/web/src/widgets/PluginsWidget.js b/packages/web/src/widgets/PluginsWidget.js index 6479cfa51..2419257a9 100644 --- a/packages/web/src/widgets/PluginsWidget.js +++ b/packages/web/src/widgets/PluginsWidget.js @@ -1,4 +1,5 @@ import React from 'react'; +import _ from 'lodash'; import { SearchBoxWrapper, WidgetsInnerContainer } from './WidgetStyles'; import WidgetColumnBar, { WidgetColumnBarItem } from './WidgetColumnBar'; import { useInstalledPlugins } from '../utility/metadataLoaders'; @@ -18,15 +19,26 @@ function InstalledPluginsList() { function AvailablePluginsList() { const [filter, setFilter] = React.useState(''); + const [search, setSearch] = React.useState(''); const plugins = useFetch({ url: 'plugins/search', params: { - filter, + filter: search, }, defaultValue: [], }); + const setDebouncedFilter = React.useRef( + // @ts-ignore + _.debounce((value) => setSearch(value), 500) + ); + + React.useEffect(() => { + // @ts-ignore + setDebouncedFilter.current(filter); + }, [filter]); + return ( <>