mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-29 05:51:26 +08:00
* fix(apiServer): use 127.0.0.1 instead of localhost for better compatibility - Change default host from localhost to 127.0.0.1 in config and settings - Add buildApiServerUrl helper to properly construct API server URLs - Update OpenAPI documentation server URL - Update test files to use 127.0.0.1 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * fix(migration): migrate existing localhost config to 127.0.0.1 - Add migration 180 to automatically update localhost to 127.0.0.1 - Handle both plain host and hosts with http/https protocol - Increment store version to 180 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * refactor(apiServer): simplify buildApiServerUrl implementation - Remove complex URL parsing and protocol handling - Use simple string concatenation for URL building - Assume http protocol since API server is local 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * refactor: remove buildApiServerUrl helper and simplify migration - Remove buildApiServerUrl helper function - Use 127.0.0.1 directly in URL construction - Simplify migration 180 to unconditionally set host to 127.0.0.1 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * refactor(apiServer): fix critical bugs and improve code structure 🔴 Critical Fixes: - Fix config.ts to use stored host value instead of ignoring it - Fix hardcoded 127.0.0.1 URLs to use apiServerConfig.host 🟡 Improvements: - Extract API_SERVER_DEFAULTS to shared constants in packages/shared/config/constant.ts - Apply consistent fallback pattern using API_SERVER_DEFAULTS.HOST and API_SERVER_DEFAULTS.PORT - Update all imports to use shared constants across main and renderer processes Files changed: - packages/shared/config/constant.ts: Add API_SERVER_DEFAULTS constants - src/main/apiServer/config.ts: Use stored host with fallback - src/main/apiServer/middleware/openapi.ts: Use constants - src/renderer/src/pages/settings/ToolSettings/ApiServerSettings/ApiServerSettings.tsx: Use config host and constants - src/renderer/src/store/settings.ts: Use constants in initial state - src/renderer/src/store/migrate.ts: Use constants in migration 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * update * fix(apiServer): use relative URL in OpenAPI spec for better compatibility - Change server URL from hardcoded defaults to relative path '/' - This ensures Swagger UI "Try it out" works correctly regardless of configured host/port - Remove unused API_SERVER_DEFAULTS import 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
64 lines
1.8 KiB
TypeScript
64 lines
1.8 KiB
TypeScript
import { API_SERVER_DEFAULTS } from '@shared/config/constant'
|
|
import type { ApiServerConfig } from '@types'
|
|
import { v4 as uuidv4 } from 'uuid'
|
|
|
|
import { loggerService } from '../services/LoggerService'
|
|
import { reduxService } from '../services/ReduxService'
|
|
|
|
const logger = loggerService.withContext('ApiServerConfig')
|
|
|
|
class ConfigManager {
|
|
private _config: ApiServerConfig | null = null
|
|
|
|
private generateApiKey(): string {
|
|
return `cs-sk-${uuidv4()}`
|
|
}
|
|
|
|
async load(): Promise<ApiServerConfig> {
|
|
try {
|
|
const settings = await reduxService.select('state.settings')
|
|
const serverSettings = settings?.apiServer
|
|
let apiKey = serverSettings?.apiKey
|
|
if (!apiKey || apiKey.trim() === '') {
|
|
apiKey = this.generateApiKey()
|
|
await reduxService.dispatch({
|
|
type: 'settings/setApiServerApiKey',
|
|
payload: apiKey
|
|
})
|
|
}
|
|
this._config = {
|
|
enabled: serverSettings?.enabled ?? false,
|
|
port: serverSettings?.port ?? API_SERVER_DEFAULTS.PORT,
|
|
host: serverSettings?.host ?? API_SERVER_DEFAULTS.HOST,
|
|
apiKey: apiKey
|
|
}
|
|
return this._config
|
|
} catch (error: any) {
|
|
logger.warn('Failed to load config from Redux, using defaults', { error })
|
|
this._config = {
|
|
enabled: false,
|
|
port: API_SERVER_DEFAULTS.PORT,
|
|
host: API_SERVER_DEFAULTS.HOST,
|
|
apiKey: this.generateApiKey()
|
|
}
|
|
return this._config
|
|
}
|
|
}
|
|
|
|
async get(): Promise<ApiServerConfig> {
|
|
if (!this._config) {
|
|
await this.load()
|
|
}
|
|
if (!this._config) {
|
|
throw new Error('Failed to load API server configuration')
|
|
}
|
|
return this._config
|
|
}
|
|
|
|
async reload(): Promise<ApiServerConfig> {
|
|
return await this.load()
|
|
}
|
|
}
|
|
|
|
export const config = new ConfigManager()
|