fix(codex): auto-sync API key from auth.json to form field
- Add useEffect to automatically extract and sync OPENAI_API_KEY from codexAuth to codexApiKey state - Fix issue where API key wasn't populated in form after applying configuration wizard - Optimize handleCodexApiKeyChange to trim input upfront - Move getCodexAuthApiKey function closer to usage for better code organization - Remove redundant dependency from useEffect dependency array
This commit is contained in:
@@ -68,6 +68,24 @@ export function useCodexConfigState({ initialData }: UseCodexConfigStateProps) {
|
|||||||
}
|
}
|
||||||
}, [codexConfig, codexBaseUrl]);
|
}, [codexConfig, codexBaseUrl]);
|
||||||
|
|
||||||
|
// 获取 API Key(从 auth JSON)
|
||||||
|
const getCodexAuthApiKey = useCallback((authString: string): string => {
|
||||||
|
try {
|
||||||
|
const auth = JSON.parse(authString || "{}");
|
||||||
|
return typeof auth.OPENAI_API_KEY === "string" ? auth.OPENAI_API_KEY : "";
|
||||||
|
} catch {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
// 从 codexAuth 中提取并同步 API Key
|
||||||
|
useEffect(() => {
|
||||||
|
const extractedKey = getCodexAuthApiKey(codexAuth);
|
||||||
|
if (extractedKey !== codexApiKey) {
|
||||||
|
setCodexApiKey(extractedKey);
|
||||||
|
}
|
||||||
|
}, [codexAuth, codexApiKey]);
|
||||||
|
|
||||||
// 验证 Codex Auth JSON
|
// 验证 Codex Auth JSON
|
||||||
const validateCodexAuth = useCallback((value: string): string => {
|
const validateCodexAuth = useCallback((value: string): string => {
|
||||||
if (!value.trim()) return "";
|
if (!value.trim()) return "";
|
||||||
@@ -106,10 +124,11 @@ export function useCodexConfigState({ initialData }: UseCodexConfigStateProps) {
|
|||||||
// 处理 Codex API Key 输入并写回 auth.json
|
// 处理 Codex API Key 输入并写回 auth.json
|
||||||
const handleCodexApiKeyChange = useCallback(
|
const handleCodexApiKeyChange = useCallback(
|
||||||
(key: string) => {
|
(key: string) => {
|
||||||
setCodexApiKey(key);
|
const trimmed = key.trim();
|
||||||
|
setCodexApiKey(trimmed);
|
||||||
try {
|
try {
|
||||||
const auth = JSON.parse(codexAuth || "{}");
|
const auth = JSON.parse(codexAuth || "{}");
|
||||||
auth.OPENAI_API_KEY = key.trim();
|
auth.OPENAI_API_KEY = trimmed;
|
||||||
setCodexAuth(JSON.stringify(auth, null, 2));
|
setCodexAuth(JSON.stringify(auth, null, 2));
|
||||||
} catch {
|
} catch {
|
||||||
// ignore
|
// ignore
|
||||||
@@ -178,16 +197,6 @@ export function useCodexConfigState({ initialData }: UseCodexConfigStateProps) {
|
|||||||
[setCodexAuth, setCodexConfig],
|
[setCodexAuth, setCodexConfig],
|
||||||
);
|
);
|
||||||
|
|
||||||
// 获取 API Key(从 auth JSON)
|
|
||||||
const getCodexAuthApiKey = useCallback((authString: string): string => {
|
|
||||||
try {
|
|
||||||
const auth = JSON.parse(authString || "{}");
|
|
||||||
return typeof auth.OPENAI_API_KEY === "string" ? auth.OPENAI_API_KEY : "";
|
|
||||||
} catch {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
codexAuth,
|
codexAuth,
|
||||||
codexConfig,
|
codexConfig,
|
||||||
|
|||||||
Reference in New Issue
Block a user