Commit 92f4fdad authored by StyleZhang's avatar StyleZhang

fix: setting plugin

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