import { Tr } from "@/translate"; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from "./ui/alert-dialog"; import { useContext } from "react"; import { AppChatStoreContext, AppContext } from "@/pages/App"; import { STORAGE_NAME } from "@/const"; const Item = ({ children }: { children: React.ReactNode }) => (
{children}
); const ImportDialog = ({ open, setOpen, }: { open: boolean; setOpen: (open: boolean) => void; }) => { const { handleNewChatStoreWithOldOne } = useContext(AppContext); const { chatStore } = useContext(AppChatStoreContext); const params = new URLSearchParams(window.location.search); const api = params.get("api"); const key = params.get("key"); const sys = params.get("sys"); const mode = params.get("mode"); const model = params.get("model"); const max = params.get("max"); const temp = params.get("temp"); const dev = params.get("dev"); const whisper_api = params.get("whisper-api"); const whisper_key = params.get("whisper-key"); const tts_api = params.get("tts-api"); const tts_key = params.get("tts-key"); return ( Import Configuration There are some configurations in the URL, import them? {key && Key: {key}} {api && API: {api}} {sys && Sys: {sys}} {mode && Mode: {mode}} {model && Model: {model}} {max && Max: {max}} {temp && Temp: {temp}} {dev && Dev: {dev}} {whisper_api && Whisper API: {whisper_api}} {whisper_key && Whisper Key: {whisper_key}} {tts_api &&
TTS API: {tts_api}
} {tts_key &&
TTS Key: {tts_key}
}
setOpen(false)}> Cancel { params.delete("key"); params.delete("api"); params.delete("sys"); params.delete("mode"); params.delete("model"); params.delete("max"); params.delete("temp"); params.delete("dev"); params.delete("whisper-api"); params.delete("whisper-key"); params.delete("tts-api"); params.delete("tts-key"); const newChatStore = structuredClone(chatStore); if (key) newChatStore.apiKey = key; if (api) newChatStore.apiEndpoint = api; if (sys) newChatStore.systemMessageContent = sys; if (mode) newChatStore.streamMode = mode === "stream"; if (model) newChatStore.model = model; if (max) { try { newChatStore.maxTokens = parseInt(max); } catch (e) { console.error(e); } } if (temp) { try { newChatStore.temperature = parseFloat(temp); } catch (e) { console.error(e); } } if (dev) newChatStore.develop_mode = dev === "true"; if (whisper_api) newChatStore.whisper_api = whisper_api; if (whisper_key) newChatStore.whisper_key = whisper_key; if (tts_api) newChatStore.tts_api = tts_api; if (tts_key) newChatStore.tts_key = tts_key; await handleNewChatStoreWithOldOne(newChatStore); const newUrl = window.location.pathname + (params.toString() ? `?${params}` : ""); window.history.replaceState(null, "", newUrl); // 替换URL不刷新页面 setOpen(false); }} > Import
); }; export default ImportDialog;