import {fetchPost} from "../util/fetch";
export const ai = {
element: undefined as Element,
genHTML: () => {
let responsiveHTML = "";
/// #if MOBILE
responsiveHTML = `
${window.siyuan.languages.apiProvider}
${window.siyuan.languages.apiProviderTip}
${window.siyuan.languages.apiTimeout}
s
${window.siyuan.languages.apiTimeoutTip}
${window.siyuan.languages.apiMaxTokens}
${window.siyuan.languages.apiMaxTokensTip}
${window.siyuan.languages.apiTemperature}
${window.siyuan.languages.apiTemperatureTip}
${window.siyuan.languages.apiMaxContexts}
${window.siyuan.languages.apiMaxContextsTip}
${window.siyuan.languages.apiModel}
${window.siyuan.languages.apiModelTip}
${window.siyuan.languages.apiKey}
${window.siyuan.languages.apiKeyTip}
${window.siyuan.languages.apiProxy}
${window.siyuan.languages.apiProxyTip}
${window.siyuan.languages.apiBaseURL}
${window.siyuan.languages.apiBaseURLTip}
${window.siyuan.languages.apiVersion}
${window.siyuan.languages.apiVersionTip}
User-Agent
${window.siyuan.languages.apiUserAgentTip}
`;
/// #else
responsiveHTML = `
${window.siyuan.languages.apiProvider}
${window.siyuan.languages.apiProviderTip}
${window.siyuan.languages.apiTimeout}
${window.siyuan.languages.apiTimeoutTip}
s
${window.siyuan.languages.apiModel}
${window.siyuan.languages.apiModelTip}
${window.siyuan.languages.apiKey}
${window.siyuan.languages.apiKeyTip}
`;
/// #endif
return ``;
},
bindEvent: () => {
const togglePassword = ai.element.querySelector('.b3-form__icona-icon[data-action="togglePassword"]');
togglePassword.addEventListener("click", () => {
const isEye = togglePassword.firstElementChild.getAttribute("xlink:href") === "#iconEye";
togglePassword.firstElementChild.setAttribute("xlink:href", isEye ? "#iconEyeoff" : "#iconEye");
togglePassword.previousElementSibling.setAttribute("type", isEye ? "text" : "password");
});
ai.element.querySelectorAll("input, select").forEach((item) => {
item.addEventListener("change", () => {
fetchPost("/api/setting/setAI", {
openAI: {
apiUserAgent: (ai.element.querySelector("#apiUserAgent") as HTMLInputElement).value,
apiBaseURL: (ai.element.querySelector("#apiBaseURL") as HTMLInputElement).value,
apiVersion: (ai.element.querySelector("#apiVersion") as HTMLInputElement).value,
apiKey: (ai.element.querySelector("#apiKey") as HTMLInputElement).value,
apiModel: (ai.element.querySelector("#apiModel") as HTMLSelectElement).value,
apiMaxTokens: parseInt((ai.element.querySelector("#apiMaxTokens") as HTMLInputElement).value),
apiTemperature: parseFloat((ai.element.querySelector("#apiTemperature") as HTMLInputElement).value),
apiMaxContexts: parseInt((ai.element.querySelector("#apiMaxContexts") as HTMLInputElement).value),
apiProxy: (ai.element.querySelector("#apiProxy") as HTMLInputElement).value,
apiTimeout: parseInt((ai.element.querySelector("#apiTimeout") as HTMLInputElement).value),
apiProvider: (ai.element.querySelector("#apiProvider") as HTMLSelectElement).value,
}
}, response => {
window.siyuan.config.ai = response.data;
});
});
});
},
};