Skip to content

Commit eac7257

Browse files
committed
Fix: fix the custom provider won't update after changed
1 parent 1d8723b commit eac7257

File tree

11 files changed

+490
-543
lines changed

11 files changed

+490
-543
lines changed

.cursor/control/MAIN_CONTROL.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,6 @@ External Dependency:
5151
- axios v1.8.4
5252
- katex v0.16.21
5353
- lucide-react v0.344.0
54-
- primeicons v7.0.0
55-
- primereact v10.9.3
5654
- prism-themes v1.9.0
5755
- prismjs v1.30.0
5856
- react v18.3.1

app/main.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import * as path from 'path';
44
import * as fs from 'fs';
55
import * as os from 'os';
66
import { execSync } from 'child_process';
7+
import axios from 'axios';
78

89
// Main window reference
910
let win: BrowserWindow | null = null;
@@ -174,9 +175,40 @@ function createWindow(): BrowserWindow {
174175
app.quit();
175176
});
176177

178+
// testCallAnthropic();
179+
177180
return win;
178181
}
179182

183+
async function testCallAnthropic() {
184+
try {
185+
const response = await axios.post("https://api.anthropic.com/v1/messages", {
186+
headers: {
187+
"x-api-key": "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",
188+
"Content-Type": "application/json",
189+
"anthropic-version": "2023-06-01",
190+
"anthropic-dangerous-direct-browser-access": "true",
191+
},
192+
body: JSON.stringify({
193+
messages: [{
194+
role: "user",
195+
content: "Hello, how are you?"
196+
}],
197+
model: "claude-3-5-sonnet-20241022",
198+
max_tokens: 1024,
199+
}),
200+
});
201+
202+
console.log(response);
203+
204+
const data = response.data;
205+
return data;
206+
} catch (error) {
207+
console.error(error);
208+
return null;
209+
}
210+
}
211+
180212
/**
181213
* Get system information including OS, CPU, and RAM
182214
*/

package.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@
2727
"dotenv": "^16.4.7",
2828
"katex": "^0.16.21",
2929
"lucide-react": "^0.344.0",
30-
"primeicons": "^7.0.0",
31-
"primereact": "^10.9.3",
3230
"prism-themes": "^1.9.0",
3331
"prismjs": "^1.30.0",
3432
"react": "^18.3.1",

pnpm-lock.yaml

Lines changed: 220 additions & 302 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/components/layout/MainLayout.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ const MainLayout: React.FC<MainLayoutProps> = ({ children }) => {
2828

2929
// Handle selecting a model
3030
const handleSelectModel = (modelId: string, provider: string) => {
31-
console.log('--------------------Selecting Model: ', modelId, ' for Provider: ', provider);
3231
SettingsService.getInstance().setSelectedModel(modelId);
3332
SettingsService.getInstance().setSelectedProvider(provider);
3433
};

src/components/settings/ApiManagement.tsx

Lines changed: 218 additions & 208 deletions
Large diffs are not rendered by default.

src/index.css

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,6 @@
1-
@layer tailwind-base, primereact, tailwind-utilities;
2-
3-
@import 'primereact/resources/themes/lara-light-blue/theme.css' layer(primereact);
4-
5-
@layer tailwind-base {
6-
@tailwind base;
7-
}
8-
9-
@layer tailwind-utilities {
10-
@tailwind components;
11-
@tailwind utilities;
12-
}
1+
@tailwind base;
2+
@tailwind components;
3+
@tailwind utilities;
134

145
/* Add these styles for Electron window dragging */
156
.app-region-drag {

src/main.tsx

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,10 @@ import { StrictMode } from 'react'
22
import { createRoot } from 'react-dom/client'
33
import App from './App.tsx'
44
import './index.css'
5-
import { PrimeReactProvider } from 'primereact/api';
65
import 'katex/dist/katex.min.css';
76

87
createRoot(document.getElementById('root')!).render(
98
<StrictMode>
10-
<PrimeReactProvider>
11-
<App />
12-
</PrimeReactProvider>
9+
<App />
1310
</StrictMode>,
1411
)

src/pages/ChatPage.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export const ChatPage = () => {
1616
const [error, setError] = useState<Error | null>(null);
1717
const [selectedModel, setSelectedModel] = useState('');
1818
const [selectedProvider, setSelectedProvider] = useState('');
19+
const [isApiKeyMissing, setIsApiKeyMissing] = useState(true);
1920

2021
// Initialize the services
2122
useEffect(() => {
@@ -96,8 +97,11 @@ export const ChatPage = () => {
9697
const handleSettingsChange = () => {
9798
setSelectedProvider(SettingsService.getInstance().getSelectedProvider());
9899
setSelectedModel(SettingsService.getInstance().getSelectedModel());
100+
setIsApiKeyMissing(!SettingsService.getInstance().getApiKey());
99101
};
100102

103+
setIsApiKeyMissing(!SettingsService.getInstance().getApiKey());
104+
101105
window.addEventListener(SETTINGS_CHANGE_EVENT, handleSettingsChange);
102106
}, []);
103107

@@ -278,9 +282,6 @@ export const ChatPage = () => {
278282
}
279283
}, [conversations.length, createNewChat, isServiceInitialized]);
280284

281-
// Show API key missing message if needed
282-
const isApiKeyMissing = !SettingsService.getInstance().getApiKey(SettingsService.getInstance().getSelectedProvider());
283-
284285
// Handle stopping a streaming response
285286
const handleStopStreaming = () => {
286287
if (!chatServiceRef.current) return;

src/services/ai-service.ts

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,21 +56,25 @@ export class AIService {
5656
*/
5757
private constructor() {
5858
// Initialize with default providers
59-
this.addProviders();
59+
this.refreshProviders();
6060
this.setupSettingsListener();
6161
}
6262

63-
private addProviders(): void {
63+
private refreshProviders(): void {
6464
const settingsService = SettingsService.getInstance();
6565
const settings = settingsService.getSettings();
6666

67-
for (const provider of Object.keys(settings.providers)) {
68-
const providerSettings = settings.providers[provider];
69-
if (!this.providers.has(provider) && providerSettings && providerSettings.apiKey && providerSettings.apiKey.length > 0) {
67+
for (const providerID of Object.keys(settings.providers)) {
68+
const providerSettings = settings.providers[providerID];
7069

71-
const providerInstance = ProviderFactory.getNewProvider(provider);
70+
if(this.providers.has(providerID)) {
71+
this.providers.delete(providerID);
72+
this.providers.set(providerID, ProviderFactory.getNewProvider(providerID));
73+
}
74+
else if (providerSettings && providerSettings.apiKey && providerSettings.apiKey.length > 0) {
75+
const providerInstance = ProviderFactory.getNewProvider(providerID);
7276
if (providerInstance) {
73-
this.providers.set(provider, providerInstance);
77+
this.providers.set(providerID, providerInstance);
7478
}
7579
}
7680
}
@@ -393,7 +397,7 @@ export class AIService {
393397
this.modelCache.clear();
394398
this.lastFetchTime.clear();
395399

396-
this.addProviders();
400+
this.refreshProviders();
397401

398402
// Re-fetch all models
399403
await this.getCachedAllModels();

0 commit comments

Comments
 (0)