Update GeneralSettings.jsx to conditionally load model catalog and handle panel changes
This commit is contained in:
@@ -98,14 +98,11 @@ export default function GeneralSettings({
|
|||||||
}
|
}
|
||||||
|
|
||||||
setBackendApiUrl(resolveBackendApiUrl(settings));
|
setBackendApiUrl(resolveBackendApiUrl(settings));
|
||||||
setOllamaApiUrl(settings.ollamaApiUrl || DEFAULT_OLLAMA_API_URL);
|
|
||||||
setEmbedModel(settings.embedModel || DEFAULT_EMBED_MODEL);
|
setEmbedModel(settings.embedModel || DEFAULT_EMBED_MODEL);
|
||||||
setRerankModel(settings.rerankModel || settings.embedModel || DEFAULT_EMBED_MODEL);
|
setRerankModel(settings.rerankModel || settings.embedModel || DEFAULT_EMBED_MODEL);
|
||||||
setSelectedModel(settings.chatModel || '');
|
setSelectedModel(settings.chatModel || '');
|
||||||
setVisionModel(settings.visionModel || settings.chatModel || '');
|
setVisionModel(settings.visionModel || settings.chatModel || '');
|
||||||
setTranscriptionModel(settings.transcriptionModel || DEFAULT_TRANSCRIPTION_MODEL);
|
setTranscriptionModel(settings.transcriptionModel || DEFAULT_TRANSCRIPTION_MODEL);
|
||||||
setStreamOutput(settings.streamOutput || false);
|
|
||||||
setAudioInputEnabled(settings.audioInputEnabled === true);
|
|
||||||
setAudioInputDeviceId(
|
setAudioInputDeviceId(
|
||||||
typeof settings.audioInputDeviceId === 'string'
|
typeof settings.audioInputDeviceId === 'string'
|
||||||
? settings.audioInputDeviceId
|
? settings.audioInputDeviceId
|
||||||
@@ -129,6 +126,10 @@ export default function GeneralSettings({
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
if (panel !== 'AI Models') {
|
||||||
|
setIsLoadingModelCatalog(false);
|
||||||
|
return () => {};
|
||||||
|
}
|
||||||
if (!backendApiUrl) {
|
if (!backendApiUrl) {
|
||||||
setIsLoadingModelCatalog(false);
|
setIsLoadingModelCatalog(false);
|
||||||
return () => {};
|
return () => {};
|
||||||
@@ -163,9 +164,12 @@ export default function GeneralSettings({
|
|||||||
return () => {
|
return () => {
|
||||||
cancelled = true;
|
cancelled = true;
|
||||||
};
|
};
|
||||||
}, [backendApiUrl, ollamaApiUrl]);
|
}, [backendApiUrl, panel]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
if (panel !== 'AI Models') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!settingsHydrated) {
|
if (!settingsHydrated) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -183,9 +187,12 @@ export default function GeneralSettings({
|
|||||||
if (onModelChange) {
|
if (onModelChange) {
|
||||||
onModelChange(nextModel);
|
onModelChange(nextModel);
|
||||||
}
|
}
|
||||||
}, [chatModels, selectedModel, onModelChange, settingsHydrated]);
|
}, [chatModels, selectedModel, onModelChange, panel, settingsHydrated]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
if (panel !== 'AI Models') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!settingsHydrated) {
|
if (!settingsHydrated) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -203,9 +210,12 @@ export default function GeneralSettings({
|
|||||||
if (onVisionModelChange) {
|
if (onVisionModelChange) {
|
||||||
onVisionModelChange(nextModel);
|
onVisionModelChange(nextModel);
|
||||||
}
|
}
|
||||||
}, [visionModels, visionModel, onVisionModelChange, settingsHydrated]);
|
}, [visionModels, visionModel, onVisionModelChange, panel, settingsHydrated]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
if (panel !== 'AI Models') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!settingsHydrated) {
|
if (!settingsHydrated) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -216,9 +226,12 @@ export default function GeneralSettings({
|
|||||||
const nextModel = embeddingModels[0] || DEFAULT_EMBED_MODEL;
|
const nextModel = embeddingModels[0] || DEFAULT_EMBED_MODEL;
|
||||||
setEmbedModel(nextModel);
|
setEmbedModel(nextModel);
|
||||||
window.electronAPI.setSetting(EMBED_MODEL_KEY, nextModel);
|
window.electronAPI.setSetting(EMBED_MODEL_KEY, nextModel);
|
||||||
}, [embeddingModels, embedModel, settingsHydrated]);
|
}, [embeddingModels, embedModel, panel, settingsHydrated]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
if (panel !== 'AI Models') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!settingsHydrated) {
|
if (!settingsHydrated) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -229,9 +242,12 @@ export default function GeneralSettings({
|
|||||||
const nextModel = embedModel || rerankingModels[0] || DEFAULT_EMBED_MODEL;
|
const nextModel = embedModel || rerankingModels[0] || DEFAULT_EMBED_MODEL;
|
||||||
setRerankModel(nextModel);
|
setRerankModel(nextModel);
|
||||||
window.electronAPI.setSetting(RERANK_MODEL_KEY, nextModel);
|
window.electronAPI.setSetting(RERANK_MODEL_KEY, nextModel);
|
||||||
}, [rerankingModels, rerankModel, embedModel, settingsHydrated]);
|
}, [rerankingModels, rerankModel, embedModel, panel, settingsHydrated]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
if (panel !== 'AI Models') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!settingsHydrated) {
|
if (!settingsHydrated) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -245,9 +261,12 @@ export default function GeneralSettings({
|
|||||||
if (onTranscriptionModelChange) {
|
if (onTranscriptionModelChange) {
|
||||||
onTranscriptionModelChange(nextModel);
|
onTranscriptionModelChange(nextModel);
|
||||||
}
|
}
|
||||||
}, [whisperModels, transcriptionModel, onTranscriptionModelChange, settingsHydrated]);
|
}, [whisperModels, transcriptionModel, onTranscriptionModelChange, panel, settingsHydrated]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
if (panel !== 'Microphone') {
|
||||||
|
return () => {};
|
||||||
|
}
|
||||||
if (!audioInputSupported) {
|
if (!audioInputSupported) {
|
||||||
setAudioInputStatus({
|
setAudioInputStatus({
|
||||||
tone: 'warning',
|
tone: 'warning',
|
||||||
@@ -303,7 +322,7 @@ export default function GeneralSettings({
|
|||||||
mediaDevices.removeEventListener('devicechange', refreshDevices);
|
mediaDevices.removeEventListener('devicechange', refreshDevices);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}, [audioInputSupported]);
|
}, [audioInputSupported, panel]);
|
||||||
|
|
||||||
const handleBackendUrlChange = (event) => {
|
const handleBackendUrlChange = (event) => {
|
||||||
const newUrl = event.target.value;
|
const newUrl = event.target.value;
|
||||||
|
|||||||
Reference in New Issue
Block a user