From 23457365cfecd178a78c9eba45434d7d1dcfc9d7 Mon Sep 17 00:00:00 2001 From: Haileyesus Date: Wed, 18 Feb 2026 13:16:49 +0300 Subject: [PATCH] refactor: remove unused ApiKeysSettings component --- src/components/ApiKeysSettings.jsx | 373 ----------------------------- 1 file changed, 373 deletions(-) delete mode 100644 src/components/ApiKeysSettings.jsx diff --git a/src/components/ApiKeysSettings.jsx b/src/components/ApiKeysSettings.jsx deleted file mode 100644 index 1ab27df..0000000 --- a/src/components/ApiKeysSettings.jsx +++ /dev/null @@ -1,373 +0,0 @@ -import { useState, useEffect } from 'react'; -import { Button } from './ui/button'; -import { Input } from './ui/input'; -import { Key, Plus, Trash2, Eye, EyeOff, Copy, Check, Github } from 'lucide-react'; -import { authenticatedFetch } from '../utils/api'; -import { useTranslation } from 'react-i18next'; - -function ApiKeysSettings() { - const { t } = useTranslation('settings'); - const [apiKeys, setApiKeys] = useState([]); - const [githubTokens, setGithubTokens] = useState([]); - const [loading, setLoading] = useState(true); - const [showNewKeyForm, setShowNewKeyForm] = useState(false); - const [showNewTokenForm, setShowNewTokenForm] = useState(false); - const [newKeyName, setNewKeyName] = useState(''); - const [newTokenName, setNewTokenName] = useState(''); - const [newGithubToken, setNewGithubToken] = useState(''); - const [showToken, setShowToken] = useState({}); - const [copiedKey, setCopiedKey] = useState(null); - const [newlyCreatedKey, setNewlyCreatedKey] = useState(null); - - useEffect(() => { - fetchData(); - }, []); - - const fetchData = async () => { - try { - setLoading(true); - - // Fetch API keys - const apiKeysRes = await authenticatedFetch('/api/settings/api-keys'); - const apiKeysData = await apiKeysRes.json(); - setApiKeys(apiKeysData.apiKeys || []); - - // Fetch GitHub tokens - const githubRes = await authenticatedFetch('/api/settings/credentials?type=github_token'); - const githubData = await githubRes.json(); - setGithubTokens(githubData.credentials || []); - } catch (error) { - console.error('Error fetching settings:', error); - } finally { - setLoading(false); - } - }; - - const createApiKey = async () => { - if (!newKeyName.trim()) return; - - try { - const res = await authenticatedFetch('/api/settings/api-keys', { - method: 'POST', - body: JSON.stringify({ keyName: newKeyName }) - }); - - const data = await res.json(); - if (data.success) { - setNewlyCreatedKey(data.apiKey); - setNewKeyName(''); - setShowNewKeyForm(false); - fetchData(); - } - } catch (error) { - console.error('Error creating API key:', error); - } - }; - - const deleteApiKey = async (keyId) => { - if (!confirm(t('apiKeys.confirmDelete'))) return; - - try { - await authenticatedFetch(`/api/settings/api-keys/${keyId}`, { - method: 'DELETE' - }); - fetchData(); - } catch (error) { - console.error('Error deleting API key:', error); - } - }; - - const toggleApiKey = async (keyId, isActive) => { - try { - await authenticatedFetch(`/api/settings/api-keys/${keyId}/toggle`, { - method: 'PATCH', - body: JSON.stringify({ isActive: !isActive }) - }); - fetchData(); - } catch (error) { - console.error('Error toggling API key:', error); - } - }; - - const createGithubToken = async () => { - if (!newTokenName.trim() || !newGithubToken.trim()) return; - - try { - const res = await authenticatedFetch('/api/settings/credentials', { - method: 'POST', - body: JSON.stringify({ - credentialName: newTokenName, - credentialType: 'github_token', - credentialValue: newGithubToken - }) - }); - - const data = await res.json(); - if (data.success) { - setNewTokenName(''); - setNewGithubToken(''); - setShowNewTokenForm(false); - fetchData(); - } - } catch (error) { - console.error('Error creating GitHub token:', error); - } - }; - - const deleteGithubToken = async (tokenId) => { - if (!confirm(t('apiKeys.github.confirmDelete'))) return; - - try { - await authenticatedFetch(`/api/settings/credentials/${tokenId}`, { - method: 'DELETE' - }); - fetchData(); - } catch (error) { - console.error('Error deleting GitHub token:', error); - } - }; - - const toggleGithubToken = async (tokenId, isActive) => { - try { - await authenticatedFetch(`/api/settings/credentials/${tokenId}/toggle`, { - method: 'PATCH', - body: JSON.stringify({ isActive: !isActive }) - }); - fetchData(); - } catch (error) { - console.error('Error toggling GitHub token:', error); - } - }; - - const copyToClipboard = (text, id) => { - navigator.clipboard.writeText(text); - setCopiedKey(id); - setTimeout(() => setCopiedKey(null), 2000); - }; - - if (loading) { - return
{t('apiKeys.loading')}
; - } - - return ( -
- {/* New API Key Alert */} - {newlyCreatedKey && ( -
-

{t('apiKeys.newKey.alertTitle')}

-

- {t('apiKeys.newKey.alertMessage')} -

-
- - {newlyCreatedKey.apiKey} - - -
- -
- )} - - {/* API Keys Section */} -
-
-
- -

{t('apiKeys.title')}

-
- -
- -

- {t('apiKeys.description')} -

- - {showNewKeyForm && ( -
- setNewKeyName(e.target.value)} - className="mb-2" - /> -
- - -
-
- )} - -
- {apiKeys.length === 0 ? ( -

{t('apiKeys.empty')}

- ) : ( - apiKeys.map((key) => ( -
-
-
{key.key_name}
- {key.api_key} -
- {t('apiKeys.list.created')} {new Date(key.created_at).toLocaleDateString()} - {key.last_used && ` • ${t('apiKeys.list.lastUsed')} ${new Date(key.last_used).toLocaleDateString()}`} -
-
-
- - -
-
- )) - )} -
-
- - {/* GitHub Tokens Section */} -
-
-
- -

{t('apiKeys.github.title')}

-
- -
- -

- {t('apiKeys.github.description')} -

- - {showNewTokenForm && ( -
- setNewTokenName(e.target.value)} - className="mb-2" - /> -
- setNewGithubToken(e.target.value)} - className="mb-2 pr-10" - /> - -
-
- - -
-
- )} - -
- {githubTokens.length === 0 ? ( -

{t('apiKeys.github.empty')}

- ) : ( - githubTokens.map((token) => ( -
-
-
{token.credential_name}
-
- {t('apiKeys.github.added')} {new Date(token.created_at).toLocaleDateString()} -
-
-
- - -
-
- )) - )} -
-
- - {/* Documentation Link */} -
-

{t('apiKeys.documentation.title')}

-

- {t('apiKeys.documentation.description')} -

- - {t('apiKeys.documentation.viewLink')} - -
-
- ); -} - -export default ApiKeysSettings;