Add backend and Ollama API URL settings in WebsearchSettings.jsx

This commit is contained in:
2026-04-17 08:59:58 +02:00
parent b7f62ce884
commit f06864c72b

View File

@@ -1,21 +1,89 @@
// src/WebsearchSettings.jsx
import React from 'react';
import React, { useEffect, useState } from 'react';
import { WEBSEARCH_ENGINE_OPTIONS, normalizeWebsearchEngines } from './websearchEngines'
const BACKEND_API_URL_KEY = 'backendApiUrl'
const OLLAMA_API_URL_KEY = 'ollamaApiUrl'
const DEFAULT_BACKEND_API_URL = 'http://127.0.0.1:8000'
const DEFAULT_OLLAMA_API_URL = 'http://127.0.0.1:11434'
function resolveBackendApiUrl(settings) {
return settings.backendApiUrl || settings.ollamaApiUrl || DEFAULT_BACKEND_API_URL
}
export default function WebsearchSettings({
onBackendApiUrlChange,
searxUrl,
setSearxUrl,
engines,
setEngines,
}) {
const [backendApiUrl, setBackendApiUrl] = useState('')
const [ollamaApiUrl, setOllamaApiUrl] = useState('')
useEffect(() => {
let cancelled = false
window.electronAPI.getSettings().then(settings => {
if (cancelled) {
return
}
setBackendApiUrl(resolveBackendApiUrl(settings))
setOllamaApiUrl(settings.ollamaApiUrl || DEFAULT_OLLAMA_API_URL)
})
return () => {
cancelled = true
}
}, [])
const toggleEngine = (name) => {
const set = new Set(engines || []);
if (set.has(name)) set.delete(name); else set.add(name);
setEngines(normalizeWebsearchEngines(Array.from(set)));
}
const handleBackendUrlChange = (event) => {
const newUrl = event.target.value
setBackendApiUrl(newUrl)
window.electronAPI.setSetting(BACKEND_API_URL_KEY, newUrl)
if (onBackendApiUrlChange) {
onBackendApiUrlChange(newUrl)
}
}
const handleOllamaUrlChange = (event) => {
const newUrl = event.target.value
setOllamaApiUrl(newUrl)
window.electronAPI.setSetting(OLLAMA_API_URL_KEY, newUrl)
}
return (
<div className="settings-content-panel">
<div className="setting-section">
<h3>Heimgeist Backend URL</h3>
<input
type="text"
className="input"
value={backendApiUrl}
onChange={handleBackendUrlChange}
placeholder={`e.g., ${DEFAULT_BACKEND_API_URL}`}
/>
<p className="setting-description">Internal UI requests like chats, sessions, and databases go to this URL.</p>
</div>
<div className="setting-section">
<h3>Ollama URL</h3>
<input
type="text"
className="input"
value={ollamaApiUrl}
onChange={handleOllamaUrlChange}
placeholder={`e.g., ${DEFAULT_OLLAMA_API_URL}`}
/>
<p className="setting-description">Heimgeist uses this URL to talk to Ollama for models and chat generation.</p>
</div>
<div className="setting-section">
<h3>SearXNG URL</h3>
<input