diff --git a/app/src/config/repos.ts b/app/src/config/repos.ts
index d6102e919..bd586993c 100644
--- a/app/src/config/repos.ts
+++ b/app/src/config/repos.ts
@@ -71,48 +71,79 @@ const renderProvider = (provider: number) => {
return `
`
} else if (provider === 3) {
return `
`
}
return "";
}
+const bindProviderEvent = () => {
+ if (window.siyuan.config.sync.provider === 0) {
+ return;
+ }
+ const providerPanelElement = repos.element.querySelector("#syncProviderPanel")
+ providerPanelElement.querySelectorAll(".b3-text-field").forEach(item => {
+ item.addEventListener("blur", () => {
+ const provider = window.siyuan.config.sync.provider;
+ if (window.siyuan.config.sync.provider === 2) {
+ fetchPost("/api/sync/setSyncProviderS3", {
+ s3: {
+ endpoint: (providerPanelElement.querySelector("#endpoint") as HTMLInputElement).value,
+ accessKey: (providerPanelElement.querySelector("#accessKey") as HTMLInputElement).value,
+ secretKey: (providerPanelElement.querySelector("#secretKey") as HTMLInputElement).value,
+ bucket: (providerPanelElement.querySelector("#bucket") as HTMLInputElement).value,
+ region: (providerPanelElement.querySelector("#region") as HTMLInputElement).value,
+ }
+ })
+ } else if (window.siyuan.config.sync.provider === 3) {
+ fetchPost("/api/sync/setSyncProviderWebDAV", {
+ webdav: {
+ endpoint: (providerPanelElement.querySelector("#endpoint") as HTMLInputElement).value,
+ username: (providerPanelElement.querySelector("#username") as HTMLInputElement).value,
+ password: (providerPanelElement.querySelector("#password") as HTMLInputElement).value,
+ }
+ })
+ }
+ })
+ })
+}
+
export const repos = {
element: undefined as Element,
genHTML: () => {
@@ -214,9 +245,7 @@ ${syncModeHTML}
`;
},
bindEvent: () => {
- if (needSubscribe("")) {
- return;
- }
+ bindProviderEvent();
renderCloudBackup();
const switchElement = repos.element.querySelector("#reposCloudSyncSwitch") as HTMLInputElement;
switchElement.addEventListener("change", () => {
@@ -261,6 +290,7 @@ ${syncModeHTML}
window.siyuan.config.sync.mode = parseInt(syncProviderElement.value, 10);
}
repos.element.querySelector("#syncProviderPanel").innerHTML = renderProvider(parseInt(syncProviderElement.value, 10));
+ bindProviderEvent();
});
});
const loadingElement = repos.element.querySelector("#reposLoading") as HTMLElement;