From 63b333cdb18fb9d58ce59081696e4d5c25aab958 Mon Sep 17 00:00:00 2001 From: JzoNg Date: Wed, 16 Oct 2024 15:37:32 +0800 Subject: [PATCH] modify plugin detail panel --- .../(commonLayout)/plugins/test/card/page.tsx | 6 -- .../plugins/plugin-detail-panel/index.tsx | 61 +++++-------------- .../plugins/plugin-page/plugins-panel.tsx | 10 +++ 3 files changed, 25 insertions(+), 52 deletions(-) diff --git a/web/app/(commonLayout)/plugins/test/card/page.tsx b/web/app/(commonLayout)/plugins/test/card/page.tsx index a2ec11e223..dd280aac38 100644 --- a/web/app/(commonLayout)/plugins/test/card/page.tsx +++ b/web/app/(commonLayout)/plugins/test/card/page.tsx @@ -4,12 +4,9 @@ import { customTool, extensionDallE, modelGPT4, toolNotion } from '@/app/compone import PluginItem from '@/app/components/plugins/plugin-item' import CardMoreInfo from '@/app/components/plugins/card/card-more-info' import ProviderCard from '@/app/components/plugins/provider-card' -import PluginDetailPanel from '@/app/components/plugins/plugin-detail-panel' -import { getLocaleOnServer } from '@/i18n/server' import Badge from '@/app/components/base/badge' const PluginList = async () => { - const locale = getLocaleOnServer() const pluginList = [toolNotion, extensionDallE, modelGPT4, customTool] return ( @@ -66,9 +63,6 @@ const PluginList = async () => { ))} - ) } diff --git a/web/app/components/plugins/plugin-detail-panel/index.tsx b/web/app/components/plugins/plugin-detail-panel/index.tsx index 62163008c1..8508ee2546 100644 --- a/web/app/components/plugins/plugin-detail-panel/index.tsx +++ b/web/app/components/plugins/plugin-detail-panel/index.tsx @@ -1,8 +1,8 @@ 'use client' -import React, { useEffect, useMemo, useState } from 'react' +import React, { useMemo } from 'react' import type { FC } from 'react' +import { useContext } from 'use-context-selector' import { useTranslation } from 'react-i18next' -import { usePathname, useRouter, useSearchParams } from 'next/navigation' import { RiCloseLine, RiVerifiedBadgeLine } from '@remixicon/react' import type { Plugin } from '../types' // import { PluginType } from '../types' @@ -14,35 +14,26 @@ import OperationDropdown from './operation-dropdown' import EndpointList from './endpoint-list' import ActionList from './action-list' import ModelList from './model-list' -import type { Locale } from '@/i18n' -import { fetchPluginDetail } from '@/app/(commonLayout)/plugins/test/card/actions' +// import type { Locale } from '@/i18n' import { BoxSparkleFill } from '@/app/components/base/icons/src/vender/plugin' import Button from '@/app/components/base/button' import ActionButton from '@/app/components/base/action-button' import Drawer from '@/app/components/base/drawer' -import Loading from '@/app/components/base/loading' +// import Loading from '@/app/components/base/loading' +import I18n from '@/context/i18n' import cn from '@/utils/classnames' -import { - // extensionDallE, - // modelGPT4, - toolNotion, -} from '@/app/components/plugins/card/card-mock' type Props = { - locale: Locale // The component is used in both client and server side, so we can't get the locale from both side(getLocaleOnServer and useContext) + pluginDetail: Plugin | undefined + onHide: () => void } const PluginDetailPanel: FC = ({ - locale, + pluginDetail, + onHide, }) => { const { t } = useTranslation() - const searchParams = useSearchParams() - const org = searchParams.get('org') - const name = searchParams.get('name') - const router = useRouter() - const pathname = usePathname() - const [loading, setLoading] = useState(true) - const [pluginDetail, setPluginDetail] = useState() + const { locale } = useContext(I18n) const hasNewVersion = useMemo(() => { if (!pluginDetail) @@ -50,45 +41,23 @@ const PluginDetailPanel: FC = ({ return pluginDetail.latest_version !== pluginDetail.version }, [pluginDetail]) - const getPluginDetail = async (org: string, name: string) => { - console.log('organization: ', org) - console.log('plugin name: ', name) - setLoading(true) - const detail = await fetchPluginDetail(org, name) - setPluginDetail({ - ...detail, - ...toolNotion, - } as any) - setLoading(false) - } - - const handleClose = () => { - setPluginDetail(undefined) - router.replace(pathname) - } - const handleUpdate = () => {} - useEffect(() => { - if (org && name) - getPluginDetail(org, name) - }, [org, name]) - - if (!org || !name) + if (!pluginDetail) return null return ( - {loading && } - {!loading && pluginDetail && ( + {/* {loading && } */} + {pluginDetail && ( <>
@@ -116,7 +85,7 @@ const PluginDetailPanel: FC = ({
- +
diff --git a/web/app/components/plugins/plugin-page/plugins-panel.tsx b/web/app/components/plugins/plugin-page/plugins-panel.tsx index da36e6c424..4db88a705b 100644 --- a/web/app/components/plugins/plugin-page/plugins-panel.tsx +++ b/web/app/components/plugins/plugin-page/plugins-panel.tsx @@ -1,4 +1,12 @@ 'use client' +import { useState } from 'react' +import type { Plugin } from '../types' +import PluginDetailPanel from '@/app/components/plugins/plugin-detail-panel' +import { + // extensionDallE, + // modelGPT4, + toolNotion, +} from '@/app/components/plugins/card/card-mock' import type { FilterState } from './filter-management' import FilterManagement from './filter-management' @@ -9,6 +17,7 @@ const PluginsPanel = () => { // } + const [currentPluginDetail, setCurrentPluginDetail] = useState(toolNotion as any) return ( <>
@@ -22,6 +31,7 @@ const PluginsPanel = () => {
+ setCurrentPluginDetail(undefined)} /> ) }