import {needSubscribe} from "../util/needSubscribe";
import {fetchPost} from "../util/fetch";
import {isMobile} from "../util/functions";
import {showMessage} from "../dialog/message";
import {bindSyncCloudListEvent, getSyncCloudList} from "../sync/syncGuide";
const renderCloudBackup = () => {
fetchPost("/api/cloud/getCloudSpace", {}, (response) => {
repos.element.querySelector("#reposLoading").classList.add("fn__none");
if (response.code === 1) {
repos.element.querySelector("#reposData").innerHTML = response.msg;
return;
} else {
repos.element.querySelector("#reposData").innerHTML = `
${window.siyuan.languages.cloudStorage}
- ${window.siyuan.languages.sync}${response.data.sync ? response.data.sync.hSize : "0B"}
- ${window.siyuan.languages.backup}${response.data.backup ? response.data.backup.hSize : "0B"}
- ${window.siyuan.languages.cdn}${response.data.hAssetSize}
- ${window.siyuan.languages.total}${response.data.hSize}
- ${window.siyuan.languages.sizeLimit}${response.data.hTotalSize}
${window.siyuan.languages.trafficStat}
- ${window.siyuan.languages.upload}${response.data.hTrafficUploadSize}
- ${window.siyuan.languages.download}${response.data.hTrafficDownloadSize}
`;
}
});
};
export const repos = {
element: undefined as Element,
genHTML: () => {
if (needSubscribe("")) {
return `${window.siyuan.config.system.container === "ios" ? window.siyuan.languages._kernel[122] : window.siyuan.languages._kernel[29]}
${window.siyuan.languages.cloudIntro1}
- ${window.siyuan.languages.cloudIntro2}
- ${window.siyuan.languages.cloudIntro3}
- ${window.siyuan.languages.cloudIntro4}
- ${window.siyuan.languages.cloudIntro5}
- ${window.siyuan.languages.cloudIntro6}
- ${window.siyuan.languages.cloudIntro7}
- ${window.siyuan.languages.cloudIntro8}
${window.siyuan.languages.cloudIntro9}
- ${window.siyuan.languages.cloudIntro10}
- ${window.siyuan.languages.cloudIntro11}
`;
}
let syncModeHTML = ``;
if (isMobile()) {
syncModeHTML = `
${window.siyuan.languages.syncMode}
${window.siyuan.languages.syncModeTip}
`;
}
return `
${window.siyuan.languages.cloudStorage}
${window.siyuan.languages.trafficStat}
${syncModeHTML}
${window.siyuan.languages.cloudBackup}
${window.siyuan.languages.cloudBackupTip}
`;
},
bindEvent: () => {
if (needSubscribe("")) {
return;
}
renderCloudBackup();
const switchElement = repos.element.querySelector("#reposCloudSyncSwitch") as HTMLInputElement;
switchElement.addEventListener("change", () => {
if (switchElement.checked && window.siyuan.config.sync.cloudName === "") {
switchElement.checked = false;
showMessage(window.siyuan.languages._kernel[123]);
return;
}
fetchPost("/api/sync/setSyncEnable", {enabled: switchElement.checked}, (response) => {
if (response.code === 1) {
showMessage(response.msg);
switchElement.checked = false;
} else {
window.siyuan.config.sync.enabled = switchElement.checked;
}
});
});
const switchConflictElement = repos.element.querySelector("#generateConflictDoc") as HTMLInputElement;
switchConflictElement.addEventListener("change", () => {
fetchPost("/api/sync/setSyncGenerateConflictDoc", {enabled: switchConflictElement.checked}, () => {
window.siyuan.config.sync.generateConflictDoc = switchConflictElement.checked;
});
});
const syncModeElement = repos.element.querySelector("#syncMode") as HTMLSelectElement;
syncModeElement.addEventListener("change", () => {
fetchPost("/api/sync/setSyncMode", {mode: parseInt(syncModeElement.value, 10)}, (response) => {
if (response.code === 1) {
showMessage(response.msg);
syncModeElement.value = "1";
} else {
window.siyuan.config.sync.mode = parseInt(syncModeElement.value, 10);
}
});
});
const loadingElement = repos.element.querySelector("#reposLoading") as HTMLElement;
loadingElement.style.width = repos.element.clientWidth + "px";
loadingElement.style.height = repos.element.clientHeight + "px";
const syncConfigElement = repos.element.querySelector("#reposCloudSyncList");
bindSyncCloudListEvent(syncConfigElement);
repos.element.querySelector('[data-type="config"]').addEventListener("click", () => {
if (syncConfigElement.classList.contains("fn__none")) {
getSyncCloudList(syncConfigElement);
syncConfigElement.classList.remove("fn__none");
} else {
syncConfigElement.classList.add("fn__none");
}
});
},
};