feat: persist selected provider and keys globally via node backend, remove Claude, Azure, and MiniMax from UI
This commit is contained in:
@@ -23,6 +23,7 @@ const App: React.FC = () => {
|
||||
const [error, setError] = useState<string | null>(null);
|
||||
|
||||
useEffect(() => {
|
||||
// 1. Tentar ler do localStorage primeiro
|
||||
const savedApiKey = localStorage.getItem('api-key');
|
||||
const savedProvider = localStorage.getItem('ai-provider') as AIProvider;
|
||||
const savedModel = localStorage.getItem('model-' + savedProvider);
|
||||
@@ -35,6 +36,33 @@ const App: React.FC = () => {
|
||||
if (savedEndpoint) setEndpoint(savedEndpoint);
|
||||
setHasKey(true);
|
||||
}
|
||||
|
||||
// 2. Sincronizar com as configurações globais persistidas no servidor (mesmo em outros navegadores)
|
||||
fetch('/api/config')
|
||||
.then(res => res.json())
|
||||
.then(config => {
|
||||
if (config.provider) {
|
||||
setProvider(config.provider);
|
||||
if (config.apiKey) setApiKey(config.apiKey);
|
||||
if (config.model) setModel(config.model);
|
||||
if (config.endpoint) setEndpoint(config.endpoint);
|
||||
setHasKey(true);
|
||||
|
||||
// Sincroniza o localStorage
|
||||
localStorage.setItem('ai-provider', config.provider);
|
||||
if (config.apiKey) {
|
||||
localStorage.setItem('api-key', config.apiKey);
|
||||
localStorage.setItem('last-api-key', config.apiKey);
|
||||
}
|
||||
if (config.model) {
|
||||
localStorage.setItem('model-' + config.provider, config.model);
|
||||
}
|
||||
if (config.endpoint) {
|
||||
localStorage.setItem('ollama-endpoint', config.endpoint);
|
||||
}
|
||||
}
|
||||
})
|
||||
.catch(err => console.warn('Erro ao carregar configurações do servidor:', err));
|
||||
}, []);
|
||||
|
||||
const handleFileChange = useCallback((selectedFile: File | null) => {
|
||||
@@ -60,6 +88,18 @@ const App: React.FC = () => {
|
||||
localStorage.setItem('ai-provider', newProvider);
|
||||
localStorage.setItem('model-' + newProvider, newModel);
|
||||
setHasKey(true);
|
||||
|
||||
// Salvar no servidor para persistência multi-navegador
|
||||
fetch('/api/config', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({
|
||||
provider: newProvider,
|
||||
apiKey: key,
|
||||
model: newModel,
|
||||
endpoint: newEndpoint || ''
|
||||
})
|
||||
}).catch(err => console.error('Erro ao persistir configurações no servidor:', err));
|
||||
}, []);
|
||||
|
||||
const handleAnalyzeClick = async () => {
|
||||
@@ -117,6 +157,13 @@ const App: React.FC = () => {
|
||||
localStorage.removeItem('api-key');
|
||||
setHasKey(false);
|
||||
handleReset();
|
||||
|
||||
// Limpar no servidor
|
||||
fetch('/api/config', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({})
|
||||
}).catch(err => console.error('Erro ao limpar configurações no servidor:', err));
|
||||
}, [handleReset]);
|
||||
|
||||
const handleExport = (action: 'preview' | 'download') => {
|
||||
|
||||
Reference in New Issue
Block a user