Add backend and Ollama API URL settings in WebsearchSettings.jsx
This commit is contained in:
@@ -1,21 +1,89 @@
|
|||||||
// src/WebsearchSettings.jsx
|
// src/WebsearchSettings.jsx
|
||||||
import React from 'react';
|
import React, { useEffect, useState } from 'react';
|
||||||
import { WEBSEARCH_ENGINE_OPTIONS, normalizeWebsearchEngines } from './websearchEngines'
|
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({
|
export default function WebsearchSettings({
|
||||||
|
onBackendApiUrlChange,
|
||||||
searxUrl,
|
searxUrl,
|
||||||
setSearxUrl,
|
setSearxUrl,
|
||||||
engines,
|
engines,
|
||||||
setEngines,
|
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 toggleEngine = (name) => {
|
||||||
const set = new Set(engines || []);
|
const set = new Set(engines || []);
|
||||||
if (set.has(name)) set.delete(name); else set.add(name);
|
if (set.has(name)) set.delete(name); else set.add(name);
|
||||||
setEngines(normalizeWebsearchEngines(Array.from(set)));
|
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 (
|
return (
|
||||||
<div className="settings-content-panel">
|
<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">
|
<div className="setting-section">
|
||||||
<h3>SearXNG URL</h3>
|
<h3>SearXNG URL</h3>
|
||||||
<input
|
<input
|
||||||
|
|||||||
Reference in New Issue
Block a user