chore: parse marketplace bundle new api

pull/12372/head
Joel 1 year ago
parent 26288e71d3
commit 498222371c

@ -89,17 +89,17 @@ const InstallByDSLList: FC<Props> = ({
}, [isFetchingMarketplaceDataFromDSL]) }, [isFetchingMarketplaceDataFromDSL])
useEffect(() => { useEffect(() => {
if (!isFetchingMarketplaceDataFromLocal && marketplaceResFromLocalRes?.data.versions) { if (!isFetchingMarketplaceDataFromLocal && marketplaceResFromLocalRes?.data.list) {
const payloads = marketplaceResFromLocalRes?.data.versions const payloads = marketplaceResFromLocalRes?.data.list
const failedIndex: number[] = [] const failedIndex: number[] = []
const nextPlugins = produce(getPlugins(), (draft) => { const nextPlugins = produce(getPlugins(), (draft) => {
marketPlaceInDSLIndex.forEach((index, i) => { marketPlaceInDSLIndex.forEach((index, i) => {
if (payloads[i]) { if (payloads[i]) {
const item = payloads[i] const item = payloads[i]
draft[index] = { // TODO: wait for api change draft[index] = {
name: 'xxx', ...item.plugin,
plugin_id: item.unique_identifier, plugin_id: item.version.unique_identifier,
} as Plugin }
} }
else { else {
failedIndex.push(index) failedIndex.push(index)

@ -311,10 +311,13 @@ export type PluginsFromMarketplaceResponse = {
plugins: Plugin[] plugins: Plugin[]
} }
export type PluginsFromMarketplaceByInfoResponse = { export type PluginsFromMarketplaceByInfoResponse = {
versions: { list: {
plugin_name: string plugin: Plugin
plugin_org: string version: {
unique_identifier: string plugin_name: string
plugin_org: string
unique_identifier: string
}
}[] }[]
} }

@ -22,11 +22,13 @@ import {
PortalToFollowElemTrigger, PortalToFollowElemTrigger,
} from '@/app/components/base/portal-to-follow-elem' } from '@/app/components/base/portal-to-follow-elem'
import Input from '@/app/components/base/input' import Input from '@/app/components/base/input'
import SearchBox from '@/app/components/plugins/marketplace/search-box'
import { import {
Plus02, Plus02,
} from '@/app/components/base/icons/src/vender/line/general' } from '@/app/components/base/icons/src/vender/line/general'
interface NodeSelectorProps { type NodeSelectorProps = {
open?: boolean open?: boolean
onOpenChange?: (open: boolean) => void onOpenChange?: (open: boolean) => void
onSelect: OnSelectBlock onSelect: OnSelectBlock
@ -60,6 +62,7 @@ const NodeSelector: FC<NodeSelectorProps> = ({
}) => { }) => {
const { t } = useTranslation() const { t } = useTranslation()
const [searchText, setSearchText] = useState('') const [searchText, setSearchText] = useState('')
const [tags, setTags] = useState<string[]>([])
const [localOpen, setLocalOpen] = useState(false) const [localOpen, setLocalOpen] = useState(false)
const open = openFromProps === undefined ? localOpen : openFromProps const open = openFromProps === undefined ? localOpen : openFromProps
const handleOpenChange = useCallback((newOpen: boolean) => { const handleOpenChange = useCallback((newOpen: boolean) => {
@ -127,15 +130,28 @@ const NodeSelector: FC<NodeSelectorProps> = ({
<PortalToFollowElemContent className='z-[1000]'> <PortalToFollowElemContent className='z-[1000]'>
<div className={`rounded-lg border-[0.5px] border-gray-200 bg-white shadow-lg ${popupClassName}`}> <div className={`rounded-lg border-[0.5px] border-gray-200 bg-white shadow-lg ${popupClassName}`}>
<div className='px-2 pt-2' onClick={e => e.stopPropagation()}> <div className='px-2 pt-2' onClick={e => e.stopPropagation()}>
<Input {activeTab === TabsEnum.Blocks && (
showLeftIcon <Input
showClearIcon showLeftIcon
autoFocus showClearIcon
value={searchText} autoFocus
placeholder={searchPlaceholder} value={searchText}
onChange={e => setSearchText(e.target.value)} placeholder={searchPlaceholder}
onClear={() => setSearchText('')} onChange={e => setSearchText(e.target.value)}
/> onClear={() => setSearchText('')}
/>
)}
{activeTab === TabsEnum.Tools && (
<SearchBox
search={searchText}
onSearchChange={setSearchText}
tags={tags}
onTagsChange={setTags}
size='small'
placeholder={t('plugin.searchTools')!}
/>
)}
</div> </div>
<Tabs <Tabs
activeTab={activeTab} activeTab={activeTab}

@ -257,7 +257,7 @@ export const useFetchPluginsInMarketPlaceByIds = (unique_identifiers: string[])
export const useFetchPluginsInMarketPlaceByInfo = (infos: Record<string, any>[]) => { export const useFetchPluginsInMarketPlaceByInfo = (infos: Record<string, any>[]) => {
return useQuery({ return useQuery({
queryKey: [NAME_SPACE, 'fetchPluginsInMarketPlaceByInfo', infos], queryKey: [NAME_SPACE, 'fetchPluginsInMarketPlaceByInfo', infos],
queryFn: () => postMarketplace<{ data: PluginsFromMarketplaceByInfoResponse }>('/plugins/versions', { queryFn: () => postMarketplace<{ data: PluginsFromMarketplaceByInfoResponse }>('/plugins/versions/batch', {
body: { body: {
plugin_tuples: infos.map(info => ({ plugin_tuples: infos.map(info => ({
org: info.organization, org: info.organization,

Loading…
Cancel
Save