Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
Vanessa 2024-12-14 12:08:17 +08:00
commit 775efe6a8e
18 changed files with 100 additions and 12 deletions

View file

@ -392,6 +392,14 @@ export const repos = {
<option value="3" ${window.siyuan.config.sync.mode === 3 ? "selected" : ""}>${window.siyuan.languages.syncMode3}</option>
</select>
</div>
<label class="fn__flex b3-label${(window.siyuan.config.sync.mode !== 1 || window.siyuan.config.system.container === "docker" || window.siyuan.config.sync.provider !== 0) ? " fn__none" : ""}">
<div class="fn__flex-1">
${window.siyuan.languages.syncInterval}
<div class="b3-label__text">${window.siyuan.languages.syncIntervalTip}</div>
</div>
<span class="fn__space"></span>
<input type="number" min="30" max="43200" id="syncInterval" class="b3-text-field fn__flex-center" value="${window.siyuan.config.sync.interval}" > ${window.siyuan.languages.second}
</label>
<label class="fn__flex b3-label${(window.siyuan.config.sync.mode !== 1 || window.siyuan.config.system.container === "docker" || window.siyuan.config.sync.provider !== 0) ? " fn__none" : ""}">
<div class="fn__flex-1">
${window.siyuan.languages.syncPerception}
@ -434,6 +442,21 @@ export const repos = {
processSync();
});
});
const syncIntervalElement = repos.element.querySelector("#syncInterval") as HTMLInputElement;
syncIntervalElement.addEventListener("change", () => {
let interval = parseInt(syncIntervalElement.value);
if (30 > interval) {
interval = 30;
}
if (43200 < interval) {
interval = 43200;
}
fetchPost("/api/sync/setSyncInterval", {interval: interval}, () => {
window.siyuan.config.sync.interval = interval;
processSync();
});
});
const syncPerceptionElement = repos.element.querySelector("#syncPerception") as HTMLInputElement;
syncPerceptionElement.addEventListener("change", () => {
fetchPost("/api/sync/setSyncPerception", {enabled: syncPerceptionElement.checked}, () => {
@ -452,8 +475,10 @@ export const repos = {
fetchPost("/api/sync/setSyncMode", {mode: parseInt(syncModeElement.value, 10)}, () => {
if (syncModeElement.value === "1" && window.siyuan.config.sync.provider === 0 && window.siyuan.config.system.container !== "docker") {
syncPerceptionElement.parentElement.classList.remove("fn__none");
syncIntervalElement.parentElement.classList.remove("fn__none");
} else {
syncPerceptionElement.parentElement.classList.add("fn__none");
syncIntervalElement.parentElement.classList.add("fn__none");
}
window.siyuan.config.sync.mode = parseInt(syncModeElement.value, 10);
});
@ -475,8 +500,10 @@ export const repos = {
syncConfigElement.classList.add("fn__none");
if (window.siyuan.config.sync.mode !== 1 || window.siyuan.config.system.container === "docker" || window.siyuan.config.sync.provider !== 0) {
syncPerceptionElement.parentElement.classList.add("fn__none");
syncIntervalElement.parentElement.classList.add("fn__none");
} else {
syncPerceptionElement.parentElement.classList.remove("fn__none");
syncIntervalElement.parentElement.classList.remove("fn__none");
}
});
});

View file

@ -1349,6 +1349,10 @@ declare namespace Config {
* - `3`: Completely manual synchronization
*/
mode: number;
/**
* Synchronization interval (unit: seconds)
*/
interval: number;
/**
* Whether to enable synchronization perception
*/