import { useState, useCallback, useEffect } from 'react' import { AlertDialog, AlertDialogContent, AlertDialogDescription, AlertDialogHeader, AlertDialogTitle } from '@/components/ui/AlertDialog' import Button from '@/components/ui/Button' import Input from '@/components/ui/Input' import { useSettingsStore } from '@/stores/settings' import { useBackendState } from '@/stores/state' import { InvalidApiKeyError, RequireApiKeError } from '@/api/lightrag' import { toast } from 'sonner' const ApiKeyAlert = () => { const [opened, setOpened] = useState(true) const apiKey = useSettingsStore.use.apiKey() const [tempApiKey, setTempApiKey] = useState('') const message = useBackendState.use.message() useEffect(() => { setTempApiKey(apiKey || '') }, [apiKey, opened]) useEffect(() => { if (message) { if (message.includes(InvalidApiKeyError) || message.includes(RequireApiKeError)) { setOpened(true) } } }, [message, setOpened]) const setApiKey = useCallback(async () => { useSettingsStore.setState({ apiKey: tempApiKey || null }) if (await useBackendState.getState().check()) { setOpened(false) return } toast.error('API Key is invalid') }, [tempApiKey]) const handleTempApiKeyChange = useCallback( (e: React.ChangeEvent) => { setTempApiKey(e.target.value) }, [setTempApiKey] ) return ( API Key is required Please enter your API key
e.preventDefault()}>
) } export default ApiKeyAlert