feat: plugin homepage

This commit is contained in:
Yi
2024-09-16 18:58:39 +08:00
parent 21193c2fbf
commit d7d7281c93
4 changed files with 121 additions and 6 deletions

View File

@ -5,6 +5,7 @@ import { useCallback, useState } from 'react'
import { createContext, useContext, useContextSelector } from 'use-context-selector'
import { useRouter, useSearchParams } from 'next/navigation'
import AccountSetting from '@/app/components/header/account-setting'
import PluginSettingModal from '@/app/components/plugins/plugin-setting/modal'
import ApiBasedExtensionModal from '@/app/components/header/account-setting/api-based-extension-page/modal'
import ModerationSettingModal from '@/app/components/app/configuration/toolbox/moderation/moderation-setting-modal'
import ExternalDataToolModal from '@/app/components/app/configuration/tools/external-data-tool-modal'
@ -46,6 +47,7 @@ export type LoadBalancingEntryModalType = ModelModalType & {
}
export type ModalContextState = {
setShowAccountSettingModal: Dispatch<SetStateAction<ModalState<string> | null>>
setShowPluginSettingModal: () => void
setShowApiBasedExtensionModal: Dispatch<SetStateAction<ModalState<ApiBasedExtension> | null>>
setShowModerationSettingModal: Dispatch<SetStateAction<ModalState<ModerationConfig> | null>>
setShowExternalDataToolModal: Dispatch<SetStateAction<ModalState<ExternalDataTool> | null>>
@ -57,6 +59,7 @@ export type ModalContextState = {
}
const ModalContext = createContext<ModalContextState>({
setShowAccountSettingModal: () => { },
setShowPluginSettingModal: () => { },
setShowApiBasedExtensionModal: () => { },
setShowModerationSettingModal: () => { },
setShowExternalDataToolModal: () => { },
@ -92,6 +95,7 @@ export const ModalContextProvider = ({
const router = useRouter()
const [showPricingModal, setShowPricingModal] = useState(searchParams.get('show-pricing') === '1')
const [showAnnotationFullModal, setShowAnnotationFullModal] = useState(false)
const [showPluginSettingModal, setShowPluginSettingModal] = useState(false)
const handleCancelAccountSettingModal = () => {
setShowAccountSettingModal(null)
if (showAccountSettingModal?.onCancelCallback)
@ -167,6 +171,7 @@ export const ModalContextProvider = ({
return (
<ModalContext.Provider value={{
setShowAccountSettingModal,
setShowPluginSettingModal: () => setShowPluginSettingModal(true),
setShowApiBasedExtensionModal,
setShowModerationSettingModal,
setShowExternalDataToolModal,
@ -187,6 +192,15 @@ export const ModalContextProvider = ({
)
}
{
!!showPluginSettingModal && (
<PluginSettingModal
show={showPluginSettingModal}
onHide={() => setShowPluginSettingModal(false)}
/>
)
}
{
!!showApiBasedExtensionModal && (
<ApiBasedExtensionModal