Skip to content

Commit 99f2dea

Browse files
authored
fixes in fetch models (#775)
Signed-off-by: Evangelos Argyropoulos <vag.argyropoulos@gmail.com>
1 parent 67d41c6 commit 99f2dea

File tree

1 file changed

+49
-20
lines changed

1 file changed

+49
-20
lines changed

src/components/AIConfigPopup.tsx

Lines changed: 49 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,6 @@ const AIConfigPopup = ({ isOpen, onClose }: AIConfigPopupProps) => {
130130

131131
useEffect(() => {
132132
setAvailableModels([]);
133-
setModel('');
134133
if (!provider || !debouncedApiKey) return;
135134

136135
const controller = new AbortController();
@@ -159,28 +158,36 @@ const AIConfigPopup = ({ isOpen, onClose }: AIConfigPopupProps) => {
159158
}
160159

161160
const data = await res.json();
162-
if (!signal.aborted) setAvailableModels(data.data?.map((m: any) => m.id) || []);
161+
if (!signal.aborted) {
162+
let models = data.data?.map((m: any) => m.id) || []
163+
setAvailableModels(models);
164+
setModel(prev => models.includes(prev) ? prev : '');
165+
}
163166
break;
164167

165168
case 'anthropic':
166-
if (!apiKey) return;
167-
{
168-
const res = await fetch('https://api.anthropic.com/v1/models', {
169-
headers: {
170-
'x-api-key': apiKey,
171-
'anthropic-version': '2023-06-01',
172-
'content-type': 'application/json',
173-
},
174-
signal,
175-
});
169+
if (!apiKey) return;
170+
{
171+
const res = await fetch('https://api.anthropic.com/v1/models', {
172+
headers: {
173+
'x-api-key': apiKey,
174+
'anthropic-version': '2023-06-01',
175+
'anthropic-dangerous-direct-browser-access': 'true',
176+
},
177+
signal,
178+
});
176179
if (!res.ok) {
177180
console.error(`Fetch error (${res.status}): ${res.statusText}`);
178181
return;
179182
}
180-
const data = await res.json();
181-
if (!signal.aborted) setAvailableModels(data.models?.map((m: any) => m.name) || []);
182-
}
183-
break;
183+
const data = await res.json();
184+
if (!signal.aborted) {
185+
let models = data.data?.map((m: any) => m.id) || [];
186+
setAvailableModels(models);
187+
setModel(prev => models.includes(prev) ? prev : '');
188+
}
189+
}
190+
break;
184191

185192
case 'google':
186193
if (!apiKey) return;
@@ -194,7 +201,11 @@ const AIConfigPopup = ({ isOpen, onClose }: AIConfigPopupProps) => {
194201
return;
195202
}
196203
const data = await res.json();
197-
if (!signal.aborted) setAvailableModels(data.models?.map((m: any) => m.name) || []);
204+
if (!signal.aborted) {
205+
let models = data.models?.map((m: any) => m.name) || [];
206+
setAvailableModels(models);
207+
setModel(prev => models.includes(prev) ? prev : '');
208+
}
198209
}
199210
break;
200211

@@ -210,7 +221,11 @@ const AIConfigPopup = ({ isOpen, onClose }: AIConfigPopupProps) => {
210221
return;
211222
}
212223
const data = await res.json();
213-
if (!signal.aborted) setAvailableModels(data.models?.map((m: any) => m.name) || []);
224+
if (!signal.aborted) {
225+
let models = data.models?.map((m: any) => m.id) || [];
226+
setAvailableModels(models);
227+
setModel(prev => models.includes(prev) ? prev : '');
228+
}
214229
}
215230
break;
216231

@@ -222,7 +237,11 @@ const AIConfigPopup = ({ isOpen, onClose }: AIConfigPopupProps) => {
222237
return;
223238
}
224239
const data = await res.json();
225-
if (!signal.aborted) setAvailableModels(data.models?.map((m: any) => m.name || m.model) || []);
240+
if (!signal.aborted) {
241+
let models = data.models?.map((m: any) => m.name || m.model) || [];
242+
setAvailableModels(models);
243+
setModel(prev => models.includes(prev) ? prev : '');
244+
}
226245
}
227246
break;
228247

@@ -238,7 +257,11 @@ const AIConfigPopup = ({ isOpen, onClose }: AIConfigPopupProps) => {
238257
return;
239258
}
240259
const data = await res.json();
241-
if (!signal.aborted) setAvailableModels(data.models?.map((m: any) => m.name) || []);
260+
if (!signal.aborted) {
261+
let models = data.data?.map((m: any) => m.id) || [];
262+
setAvailableModels(models);
263+
setModel(prev => models.includes(prev) ? prev : '');
264+
}
242265
}
243266
break;
244267

@@ -260,6 +283,12 @@ const AIConfigPopup = ({ isOpen, onClose }: AIConfigPopupProps) => {
260283
};
261284
}, [provider, debouncedApiKey, customEndpoint]);
262285

286+
useEffect(() => {
287+
if (availableModels.length > 0 && model && !availableModels.includes(model)) {
288+
setModel('');
289+
}
290+
}, [model, availableModels]);
291+
263292
const handleSave = async () => {
264293
localStorage.setItem('aiProvider', provider);
265294
localStorage.setItem('aiModel', model);

0 commit comments

Comments
 (0)