import {Constants} from "../../constants"; import {setAccessAuthCode} from "../../config/util/setAccessAuthCode"; import {Dialog} from "../../dialog"; import {fetchPost} from "../../util/fetch"; import {confirmDialog} from "../../dialog/confirmDialog"; import {showMessage} from "../../dialog/message"; import {openByMobile, writeText} from "../../protyle/util/compatibility"; import {exitSiYuan, processSync} from "../../dialog/processSystem"; import {pathPosix} from "../../util/pathName"; import {openModel} from "../util/model"; export const initAbout = () => { if (!window.siyuan.config.localIPs || window.siyuan.config.localIPs.length === 0 || (window.siyuan.config.localIPs.length === 1 && window.siyuan.config.localIPs[0] === "")) { window.siyuan.config.localIPs = ["127.0.0.1"]; } openModel({ title: window.siyuan.languages.about, icon: "iconInfo", html: `
${window.siyuan.languages.about11}
${window.siyuan.languages.about12}
${window.siyuan.languages.about2}
${window.siyuan.languages.about3.replace("${port}", location.port)}
${window.siyuan.config.localIPs.join(" ")}
${window.siyuan.languages.about5}
${window.siyuan.languages.about6}
${window.siyuan.languages.dataRepoKey}
${window.siyuan.languages.dataRepoKeyTip1}
${window.siyuan.languages.dataRepoKeyTip2}
${window.siyuan.languages.about13} ${window.siyuan.config.api.token}
${window.siyuan.languages.about14}
${window.siyuan.languages.export}
${window.siyuan.languages.exportDataTip}
${window.siyuan.languages.systemLogTip}
${window.siyuan.languages.import}
${window.siyuan.languages.importDataTip}
${window.siyuan.languages.workspaceList}
会泽百家 至公天下
${window.siyuan.languages.about1}
`, bindEvent(modelMainElement: HTMLElement) { const workspaceDirElement = modelMainElement.querySelector("#workspaceDir"); genWorkspace(workspaceDirElement); const importKeyElement = modelMainElement.querySelector("#importKey"); modelMainElement.addEventListener("click", (event) => { let target = event.target as HTMLElement; while (target && !target.isSameNode(modelMainElement)) { if (target.id === "authCode") { setAccessAuthCode(); event.preventDefault(); event.stopPropagation(); break; } else if (target.id === "importKey") { const passwordDialog = new Dialog({ title: "🔑 " + window.siyuan.languages.key, content: `
`, width: "80vw", }); const textAreaElement = passwordDialog.element.querySelector("textarea"); textAreaElement.focus(); const btnsElement = passwordDialog.element.querySelectorAll(".b3-button"); btnsElement[0].addEventListener("click", () => { passwordDialog.destroy(); }); btnsElement[1].addEventListener("click", () => { fetchPost("/api/repo/importRepoKey", {key: textAreaElement.value}, () => { window.siyuan.config.repo.key = textAreaElement.value; importKeyElement.parentElement.classList.add("fn__none"); importKeyElement.parentElement.nextElementSibling.classList.remove("fn__none"); passwordDialog.destroy(); }); }); event.preventDefault(); event.stopPropagation(); break; } else if (target.id === "initKey") { confirmDialog("🔑 " + window.siyuan.languages.genKey, window.siyuan.languages.initRepoKeyTip, () => { fetchPost("/api/repo/initRepoKey", {}, (response) => { window.siyuan.config.repo.key = response.data.key; importKeyElement.parentElement.classList.add("fn__none"); importKeyElement.parentElement.nextElementSibling.classList.remove("fn__none"); }); }); event.preventDefault(); event.stopPropagation(); break; } else if (target.id === "initKeyByPW") { const initDialog = new Dialog({ title: "🔑 " + window.siyuan.languages.genKeyByPW, content: `
`, width: "80vw", }); const inputElement = initDialog.element.querySelector(".b3-text-field") as HTMLInputElement; inputElement.focus(); const btnsElement = initDialog.element.querySelectorAll(".b3-button"); initDialog.bindInput(inputElement, () => { (btnsElement[1] as HTMLButtonElement).click(); }); btnsElement[0].addEventListener("click", () => { initDialog.destroy(); }); btnsElement[1].addEventListener("click", () => { if (!inputElement.value) { showMessage(window.siyuan.languages._kernel[142]); return; } confirmDialog("🔑 " + window.siyuan.languages.genKeyByPW, window.siyuan.languages.initRepoKeyTip, () => { initDialog.destroy(); fetchPost("/api/repo/initRepoKeyFromPassphrase", {pass: inputElement.value}, (response) => { window.siyuan.config.repo.key = response.data.key; importKeyElement.parentElement.classList.add("fn__none"); importKeyElement.parentElement.nextElementSibling.classList.remove("fn__none"); }); }); }); event.preventDefault(); event.stopPropagation(); break; } else if (target.id === "copyKey") { showMessage(window.siyuan.languages.copied); writeText(window.siyuan.config.repo.key); event.preventDefault(); event.stopPropagation(); break; } else if (target.id === "removeKey") { confirmDialog("⚠️ " + window.siyuan.languages.resetRepo, window.siyuan.languages.resetRepoTip, () => { fetchPost("/api/repo/resetRepo", {}, () => { window.siyuan.config.repo.key = ""; window.siyuan.config.sync.enabled = false; processSync(); importKeyElement.parentElement.classList.remove("fn__none"); importKeyElement.parentElement.nextElementSibling.classList.add("fn__none"); }); }); event.preventDefault(); event.stopPropagation(); break; } else if (target.id === "token") { showMessage(window.siyuan.languages.copied); writeText(window.siyuan.config.api.token); event.preventDefault(); event.stopPropagation(); break; } else if (target.id === "exportData") { fetchPost("/api/export/exportData", {}, response => { openByMobile(response.data.zip); }); event.preventDefault(); event.stopPropagation(); break; } else if (target.id === "exportLog") { fetchPost("/api/system/exportLog", {}, (response) => { openByMobile(response.data.zip); }); event.preventDefault(); event.stopPropagation(); break; } else if (target.id === "openWorkspace") { fetchPost("/api/system/getMobileWorkspaces", {}, (response) => { let selectHTML = ""; response.data.forEach((item: string, index: number) => { selectHTML += ``; }); const openWorkspaceDialog = new Dialog({ title: window.siyuan.languages.openBy, content: `
`, width: "80vw", }); const btnsElement = openWorkspaceDialog.element.querySelectorAll(".b3-button"); btnsElement[0].addEventListener("click", () => { openWorkspaceDialog.destroy(); }); btnsElement[1].addEventListener("click", () => { const openPath = openWorkspaceDialog.element.querySelector("select").value; if (openPath === window.siyuan.config.system.workspaceDir) { openWorkspaceDialog.destroy(); return; } confirmDialog(window.siyuan.languages.confirm, `${pathPosix().basename(window.siyuan.config.system.workspaceDir)} -> ${pathPosix().basename(openPath)}?`, () => { fetchPost("/api/system/setWorkspaceDir", { path: openPath }, () => { exitSiYuan(); }); }); }); }); event.preventDefault(); event.stopPropagation(); break; } else if (target.id === "creatWorkspace") { const createWorkspaceDialog = new Dialog({ title: window.siyuan.languages.new, content: `
`, width: "80vw", }); const inputElement = createWorkspaceDialog.element.querySelector("input"); inputElement.focus(); const btnsElement = createWorkspaceDialog.element.querySelectorAll(".b3-button"); btnsElement[0].addEventListener("click", () => { createWorkspaceDialog.destroy(); }); btnsElement[1].addEventListener("click", () => { fetchPost("/api/system/createWorkspaceDir", { path: pathPosix().join(pathPosix().dirname(window.siyuan.config.system.workspaceDir), inputElement.value) }, () => { genWorkspace(workspaceDirElement); createWorkspaceDialog.destroy(); }); }); event.preventDefault(); event.stopPropagation(); break; } else if (target.getAttribute("data-type") === "remove") { fetchPost("/api/system/removeWorkspaceDir", {path: target.parentElement.getAttribute("data-path")}, () => { genWorkspace(workspaceDirElement); }); event.preventDefault(); event.stopPropagation(); break; } else if (target.classList.contains("b3-list-item") && !target.classList.contains("b3-list-item--focus")) { confirmDialog(window.siyuan.languages.confirm, `${pathPosix().basename(window.siyuan.config.system.workspaceDir)} -> ${pathPosix().basename(target.getAttribute("data-path"))}?`, () => { fetchPost("/api/system/setWorkspaceDir", { path: target.getAttribute("data-path") }, () => { exitSiYuan(); }); }); event.preventDefault(); event.stopPropagation(); break; } target = target.parentElement; } }); modelMainElement.querySelector("#importData").addEventListener("change", (event: InputEvent & { target: HTMLInputElement }) => { const formData = new FormData(); formData.append("file", event.target.files[0]); fetchPost("/api/import/importData", formData); }); const networkServeElement = modelMainElement.querySelector("#networkServe") as HTMLInputElement; networkServeElement.addEventListener("change", () => { fetchPost("/api/system/setNetworkServe", {networkServe: networkServeElement.checked}, () => { exitSiYuan(); }); }); } }); }; const genWorkspace = (workspaceDirElement: Element) => { fetchPost("/api/system/getWorkspaces", {}, (response) => { let html = ""; response.data.forEach((item: IWorkspace) => { html += `
  • ${pathPosix().basename(item.path)}
  • `; }); workspaceDirElement.innerHTML = html; }); };