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 (
+
+ );
}
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 {