Browse Source

:art: 移动端支持重新打开已经移除的工作空间 https://github.com/siyuan-note/siyuan/issues/7353

Liang Ding 2 years ago
parent
commit
e8c90a2c80
2 changed files with 31 additions and 0 deletions
  1. 1 0
      kernel/api/router.go
  2. 30 0
      kernel/api/workspace.go

+ 1 - 0
kernel/api/router.go

@@ -46,6 +46,7 @@ func ServeAPI(ginServer *gin.Engine) {
 	ginServer.Handle("POST", "/api/system/setNetworkProxy", model.CheckAuth, setNetworkProxy)
 	ginServer.Handle("POST", "/api/system/setWorkspaceDir", model.CheckAuth, setWorkspaceDir)
 	ginServer.Handle("POST", "/api/system/getWorkspaces", model.CheckAuth, getWorkspaces)
+	ginServer.Handle("POST", "/api/system/getMobileWorkspaces", model.CheckAuth, getMobileWorkspaces)
 	ginServer.Handle("POST", "/api/system/createWorkspaceDir", model.CheckAuth, createWorkspaceDir)
 	ginServer.Handle("POST", "/api/system/removeWorkspaceDir", model.CheckAuth, removeWorkspaceDir)
 	ginServer.Handle("POST", "/api/system/setAppearanceMode", model.CheckAuth, setAppearanceMode)

+ 30 - 0
kernel/api/workspace.go

@@ -117,6 +117,36 @@ type Workspace struct {
 	Closed bool   `json:"closed"`
 }
 
+func getMobileWorkspaces(c *gin.Context) {
+	ret := gulu.Ret.NewResult()
+	defer c.JSON(http.StatusOK, ret)
+
+	if util.ContainerIOS != util.Container && util.ContainerAndroid != util.Container {
+		return
+	}
+
+	root := filepath.Dir(util.WorkspaceDir)
+	dirs, err := os.ReadDir(root)
+	if nil != err {
+		logging.LogErrorf("read dir [%s] failed: %s", root, err)
+		ret.Code = -1
+		ret.Msg = err.Error()
+		return
+	}
+
+	var names []string
+	for _, dir := range dirs {
+		if dir.IsDir() {
+			if isInvalidWorkspacePath(filepath.Join(root, dir.Name())) {
+				continue
+			}
+
+			names = append(names, dir.Name())
+		}
+	}
+	ret.Data = names
+}
+
 func getWorkspaces(c *gin.Context) {
 	ret := gulu.Ret.NewResult()
 	defer c.JSON(http.StatusOK, ret)