diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index df212ea51..cd6cf24c7 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -1,4 +1,6 @@ { + "syncDataRepo": "⏰ Use data repo sync mechanism", + "syncDataRepoTip": "The data repo sync mechanism will be used in the upcoming v2.1.0, the existing sync mechanism will be offline", "dataRepo": "Data repo", "newSubDoc": "Create sub doc", "newDocBelow": "Create doc below", diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json index 2ff6a6bb8..ac713aca6 100644 --- a/app/appearance/langs/es_ES.json +++ b/app/appearance/langs/es_ES.json @@ -1,4 +1,6 @@ { + "syncDataRepo": "⏰ Usar mecanismo de sincronización de repositorio de datos", + "syncDataRepoTip": "El mecanismo de sincronización del repositorio de datos se usará en la próxima v2.1.0, el mecanismo de sincronización existente estará fuera de línea", "dataRepo": "Repositorio de datos", "newSubDoc": "Crear subdocumento", "newDocBelow": "Crear documento a continuación", diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index d71d5fc7a..525ea312b 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -1,4 +1,6 @@ { + "syncDataRepo": "⏰ Utiliser le mécanisme de synchronisation du référentiel de données", + "syncDataRepoTip": "Le mécanisme de synchronisation du référentiel de données sera utilisé dans la prochaine v2.1.0, le mécanisme de synchronisation existant sera hors ligne", "dataRepo": "Dépôt de données", "newSubDoc": "Créer un sous-doc", "newDocBelow": "Créer un document ci-dessous", diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index 1f370d1fa..29020b402 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -1,4 +1,6 @@ { + "syncDataRepo": "⏰ 使用數據倉庫同步機制", + "syncDataRepoTip": "在即將到來的 v2.1.0 版本將使用數據倉庫同步機制,屆時現有的同步機制會下線", "dataRepo": "數據倉庫", "newSubDoc": "新建子文檔", "newDocBelow": "在下方新建文檔", diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index fa408885d..b04383f34 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -1,4 +1,6 @@ { + "syncDataRepo": "⏰ 使用数据仓库同步机制", + "syncDataRepoTip": "在即将到来的 v2.1.0 版本将使用数据仓库同步机制,届时现有的同步机制会下线", "dataRepo": "数据仓库", "newSubDoc": "新建子文档", "newDocBelow": "在下方新建文档", diff --git a/app/src/config/repos.ts b/app/src/config/repos.ts index 0e9b4f837..4178262fd 100644 --- a/app/src/config/repos.ts +++ b/app/src/config/repos.ts @@ -361,6 +361,14 @@ ${passwordHTML} +
${window.siyuan.languages.cloudSync}
@@ -409,6 +417,17 @@ ${passwordHTML} } }); }); + const useDataRepoElement = repos.element.querySelector("#useDataRepo") as HTMLInputElement; + useDataRepoElement.addEventListener("change", () => { + fetchPost("/api/sync/setSyncUseDataRepo", {enabled: useDataRepoElement.checked}, (response) => { + if (response.code === 1) { + showMessage(response.msg); + useDataRepoElement.checked = false; + } else { + window.siyuan.config.sync.useDataRepo = useDataRepoElement.checked; + } + }); + }); const loadingElement = repos.element.querySelector("#reposLoading") as HTMLElement; loadingElement.style.width = repos.element.clientWidth + "px"; loadingElement.style.height = repos.element.clientHeight + "px"; diff --git a/app/src/types/index.d.ts b/app/src/types/index.d.ts index 06e57bef4..41d621705 100644 --- a/app/src/types/index.d.ts +++ b/app/src/types/index.d.ts @@ -255,6 +255,7 @@ declare interface IConfig { stat: string interval: number cloudName: string + useDataRepo: boolean }, lang: string api: { diff --git a/kernel/api/router.go b/kernel/api/router.go index e9b23502a..c1f7955a0 100644 --- a/kernel/api/router.go +++ b/kernel/api/router.go @@ -167,6 +167,7 @@ func ServeAPI(ginServer *gin.Engine) { ginServer.Handle("POST", "/api/backup/removeCloudBackup", model.CheckAuth, model.CheckReadonly, removeCloudBackup) ginServer.Handle("POST", "/api/sync/setSyncEnable", model.CheckAuth, setSyncEnable) + ginServer.Handle("POST", "/api/sync/setSyncUseDataRepo", model.CheckAuth, setSyncUseDataRepo) ginServer.Handle("POST", "/api/sync/setSyncMode", model.CheckAuth, setSyncMode) ginServer.Handle("POST", "/api/sync/setCloudSyncDir", model.CheckAuth, setCloudSyncDir) ginServer.Handle("POST", "/api/sync/createCloudSyncDir", model.CheckAuth, model.CheckReadonly, createCloudSyncDir) diff --git a/kernel/api/sync.go b/kernel/api/sync.go index 78e882e5f..047720f5d 100644 --- a/kernel/api/sync.go +++ b/kernel/api/sync.go @@ -121,6 +121,25 @@ func createCloudSyncDir(c *gin.Context) { } } +func setSyncUseDataRepo(c *gin.Context) { + ret := gulu.Ret.NewResult() + defer c.JSON(http.StatusOK, ret) + + arg, ok := util.JsonArg(c, ret) + if !ok { + return + } + + enabled := arg["enabled"].(bool) + err := model.SetSyncUseDataRepo(enabled) + if nil != err { + ret.Code = 1 + ret.Msg = err.Error() + ret.Data = map[string]interface{}{"closeTimeout": 5000} + return + } +} + func setSyncEnable(c *gin.Context) { ret := gulu.Ret.NewResult() defer c.JSON(http.StatusOK, ret) diff --git a/kernel/model/sync.go b/kernel/model/sync.go index ffd036218..05185fb91 100644 --- a/kernel/model/sync.go +++ b/kernel/model/sync.go @@ -491,6 +491,15 @@ func SetSyncEnable(b bool) (err error) { return } +func SetSyncUseDataRepo(b bool) (err error) { + syncLock.Lock() + defer syncLock.Unlock() + + Conf.Sync.UseDataRepo = b + Conf.Save() + return +} + func SetSyncMode(mode int) (err error) { syncLock.Lock() defer syncLock.Unlock()