Commit 92f4fdad authored by StyleZhang's avatar StyleZhang

fix: setting plugin

parent c258287c
......@@ -5,6 +5,7 @@ import { AppContextProvider } from '@/context/app-context'
import GA, { GaType } from '@/app/components/base/ga'
import HeaderWrapper from '@/app/components/header/HeaderWrapper'
import Header from '@/app/components/header'
import { EventEmitterContextProvider } from '@/context/event-emitter'
const Layout = ({ children }: { children: ReactNode }) => {
return (
......@@ -12,10 +13,12 @@ const Layout = ({ children }: { children: ReactNode }) => {
<GA gaType={GaType.admin} />
<SwrInitor>
<AppContextProvider>
<HeaderWrapper>
<Header />
</HeaderWrapper>
{children}
<EventEmitterContextProvider>
<HeaderWrapper>
<Header />
</HeaderWrapper>
{children}
</EventEmitterContextProvider>
</AppContextProvider>
</SwrInitor>
</>
......
......@@ -99,7 +99,7 @@ const Plugins: FC<IPluginsProps> = ({
</FeaturePanel>
{
showSetSerpAPIKeyModal && (
<AccountSetting activeTab="data-source" onCancel={async () => {
<AccountSetting activeTab="plugin" onCancel={async () => {
setShowSetAPIKeyModal(false)
await checkSerpApiKey()
}} />
......
......@@ -10,7 +10,6 @@ import Indicator from '../indicator'
import AccountSetting from '../account-setting'
import AccountAbout from '../account-about'
import WorkplaceSelector from './workplace-selector'
import { KeyValidatorContextProvider } from '@/context/key-validator'
import I18n from '@/context/i18n'
import Avatar from '@/app/components/base/avatar'
import { logout } from '@/service/common'
......@@ -132,11 +131,7 @@ export default function AppSelector() {
}
</Menu>
{
settingVisible && (
<KeyValidatorContextProvider>
<AccountSetting onCancel={() => setSettingVisible(false)} />
</KeyValidatorContextProvider>
)
settingVisible && <AccountSetting onCancel={() => setSettingVisible(false)} />
}
{
aboutVisible && <AccountAbout onCancel={() => setAboutVisible(false)} langeniusVersionInfo={langeniusVersionInfo} />
......
......@@ -155,7 +155,7 @@ export default function AccountSetting({
{activeMenu === 'language' && <LanguagePage />}
{activeMenu === 'provider' && <ProviderPage />}
{activeMenu === 'data-source' && <DataSourcePage />}
{activeMenu === 'data-source' && <PluginPage />}
{activeMenu === 'plugin' && <PluginPage />}
</div>
</div>
</div>
......
......@@ -3,7 +3,7 @@ import Operate from './Operate'
import KeyInput from './KeyInput'
import { useValidate } from './hooks'
import type { Form, KeyFrom, Status, ValidateValue } from './declarations'
import { useKeyValidatorContext } from '@/context/key-validator'
import { useEventEmitterContextContext } from '@/context/event-emitter'
import { LinkExternal02 } from '@/app/components/base/icons/src/vender/line/general'
export type KeyValidatorProps = {
......@@ -23,7 +23,8 @@ const KeyValidator = ({
keyFrom,
onSave,
}: KeyValidatorProps) => {
const { trigger } = useKeyValidatorContext()
const triggerKey = `plugins/${type}`
const { eventEmitter } = useEventEmitterContextContext()
const [isOpen, setIsOpen] = useState(false)
const prevValue = forms.reduce((prev: ValidateValue, next: Form) => {
prev[next.key] = next.value
......@@ -32,8 +33,8 @@ const KeyValidator = ({
const [value, setValue] = useState(prevValue)
const [validate, validating, validatedStatusState] = useValidate(value)
trigger?.useSubscription((v) => {
if (v !== type) {
eventEmitter?.useSubscription((v) => {
if (v !== triggerKey) {
setIsOpen(false)
setValue(prevValue)
validate({ before: () => false })
......@@ -41,22 +42,22 @@ const KeyValidator = ({
})
const handleCancel = () => {
trigger?.emit('')
eventEmitter?.emit('')
}
const handleSave = async () => {
if (await onSave(value))
trigger?.emit('')
eventEmitter?.emit('')
}
const handleAdd = () => {
setIsOpen(true)
trigger?.emit(type)
eventEmitter?.emit(triggerKey)
}
const handleEdit = () => {
setIsOpen(true)
trigger?.emit(type)
eventEmitter?.emit(triggerKey)
}
const handleChange = (form: Form, val: string) => {
......
'use client'
import { createContext, useContext } from 'use-context-selector'
import { useEventEmitter } from 'ahooks'
import type { EventEmitter } from 'ahooks/lib/useEventEmitter'
const KeyValidatorContext = createContext<{ trigger: EventEmitter<string> | null }>({
trigger: null,
const EventEmitterContext = createContext<{ eventEmitter: EventEmitter<string> | null }>({
eventEmitter: null,
})
export const useKeyValidatorContext = () => useContext(KeyValidatorContext)
export const useEventEmitterContextContext = () => useContext(EventEmitterContext)
type KeyValidatorContextProviderProps = {
type EventEmitterContextProviderProps = {
children: React.ReactNode
}
export const KeyValidatorContextProvider = ({
export const EventEmitterContextProvider = ({
children,
}: KeyValidatorContextProviderProps) => {
const trigger = useEventEmitter<string>()
}: EventEmitterContextProviderProps) => {
const eventEmitter = useEventEmitter<string>()
return (
<KeyValidatorContext.Provider value={{ trigger }}>
<EventEmitterContext.Provider value={{ eventEmitter }}>
{children}
</KeyValidatorContext.Provider>
</EventEmitterContext.Provider>
)
}
export default KeyValidatorContext
export default EventEmitterContext
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment