diff --git a/kernel/api/router.go b/kernel/api/router.go index 0a2d07fec..b85967587 100644 --- a/kernel/api/router.go +++ b/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) diff --git a/kernel/api/workspace.go b/kernel/api/workspace.go index 3c374b328..4fa5b78df 100644 --- a/kernel/api/workspace.go +++ b/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)