diff --git a/src/app/workspace/workspace.less b/src/app/workspace/workspace.less index f8d4777a..9365560a 100644 --- a/src/app/workspace/workspace.less +++ b/src/app/workspace/workspace.less @@ -14,6 +14,15 @@ border-radius: 8px; transition: width 0.2s ease; margin-bottom: 0.5em; + + .center-message { + display: flex; + align-items: center; + justify-content: center; + height: 100%; + width: 100%; + color: @text-secondary; + } } .collapsed + .session-view { max-width: calc(100% - 6.7em); diff --git a/src/app/workspace/workspaceview.tsx b/src/app/workspace/workspaceview.tsx index 9c6f6608..0e2ea5cd 100644 --- a/src/app/workspace/workspaceview.tsx +++ b/src/app/workspace/workspaceview.tsx @@ -25,7 +25,11 @@ class WorkspaceView extends React.Component<{}, {}> { let model = GlobalModel; let session = model.getActiveSession(); if (session == null) { - return
(no active session)
; + return ( +
+
(no active workspace)
+
+ ); } let activeScreen = session.getActiveScreen(); let cmdInputHeight = model.inputModel.cmdInputHeight.get(); diff --git a/wavesrv/cmd/main-server.go b/wavesrv/cmd/main-server.go index 27ce5cc6..4fe9e595 100644 --- a/wavesrv/cmd/main-server.go +++ b/wavesrv/cmd/main-server.go @@ -825,7 +825,7 @@ func main() { log.Printf("[error] ensuring local remote: %v\n", err) return } - _, err = sstore.EnsureDefaultSession(context.Background()) + err = sstore.EnsureOneSession(context.Background()) if err != nil { log.Printf("[error] ensuring default session: %v\n", err) return diff --git a/wavesrv/pkg/sstore/dbops.go b/wavesrv/pkg/sstore/dbops.go index 1062dd0e..ca446a1c 100644 --- a/wavesrv/pkg/sstore/dbops.go +++ b/wavesrv/pkg/sstore/dbops.go @@ -507,6 +507,15 @@ func GetSessionById(ctx context.Context, id string) (*SessionType, error) { return nil, nil } +// counts non-archived sessions +func GetSessionCount(ctx context.Context) (int, error) { + return WithTxRtn(ctx, func(tx *TxWrap) (int, error) { + query := `SELECT COALESCE(count(*), 0) FROM session WHERE NOT archived` + numSessions := tx.GetInt(query) + return numSessions, nil + }) +} + func GetSessionByName(ctx context.Context, name string) (*SessionType, error) { var session *SessionType txErr := WithTx(ctx, func(tx *TxWrap) error { diff --git a/wavesrv/pkg/sstore/sstore.go b/wavesrv/pkg/sstore/sstore.go index a1421b1d..3c3c4173 100644 --- a/wavesrv/pkg/sstore/sstore.go +++ b/wavesrv/pkg/sstore/sstore.go @@ -1197,19 +1197,19 @@ func EnsureLocalRemote(ctx context.Context) error { return nil } -func EnsureDefaultSession(ctx context.Context) (*SessionType, error) { - session, err := GetSessionByName(ctx, DefaultSessionName) +func EnsureOneSession(ctx context.Context) error { + numSessions, err := GetSessionCount(ctx) if err != nil { - return nil, err + return err } - if session != nil { - return session, nil + if numSessions > 0 { + return nil } _, err = InsertSessionWithName(ctx, DefaultSessionName, true) if err != nil { - return nil, err + return err } - return GetSessionByName(ctx, DefaultSessionName) + return nil } func createClientData(tx *TxWrap) error {