diff --git a/cmd/main-server.go b/cmd/main-server.go index 966919d3..f6c2e374 100644 --- a/cmd/main-server.go +++ b/cmd/main-server.go @@ -206,8 +206,7 @@ func HandleGetScreenLines(w http.ResponseWriter, r *http.Request) { WriteJsonError(w, err) return } - update := &sstore.ModelUpdate{ScreenLines: screenLines} - WriteJsonSuccess(w, update) + WriteJsonSuccess(w, screenLines) return } diff --git a/pkg/cmdrunner/cmdrunner.go b/pkg/cmdrunner/cmdrunner.go index 08cb61ef..a6f4d28e 100644 --- a/pkg/cmdrunner/cmdrunner.go +++ b/pkg/cmdrunner/cmdrunner.go @@ -151,10 +151,7 @@ func init() { registerCmdFn("remote:installcancel", RemoteInstallCancelCommand) registerCmdFn("remote:reset", RemoteResetCommand) - registerCmdFn("sw:resize", SwResizeCommand) - - // sw:resize - registerCmdFn("window:resize", SwResizeCommand) + registerCmdFn("screen:resize", ScreenResizeCommand) registerCmdFn("line", LineCommand) registerCmdFn("line:show", LineShowCommand) @@ -556,6 +553,7 @@ func ScreenSetCommand(ctx context.Context, pk *scpacket.FeCommandPacketType) (ss if ritem == nil { return nil, fmt.Errorf("/screen:set could not resolve line %q", pk.Kwargs["line"]) } + varsUpdated = append(varsUpdated, "line") setNonAnchor = true updateMap[sstore.ScreenField_SelectedLine] = ritem.Num } @@ -565,6 +563,7 @@ func ScreenSetCommand(ctx context.Context, pk *scpacket.FeCommandPacketType) (ss return nil, fmt.Errorf("/screen:set invalid anchor argument (must be [line] or [line]:[offset])") } anchorLine, _ := strconv.Atoi(m[1]) + varsUpdated = append(varsUpdated, "anchor") updateMap[sstore.ScreenField_AnchorLine] = anchorLine if m[2] != "" { anchorOffset, _ := strconv.Atoi(m[2]) @@ -970,7 +969,7 @@ func RemoteShowAllCommand(ctx context.Context, pk *scpacket.FeCommandPacketType) func ScreenShowAllCommand(ctx context.Context, pk *scpacket.FeCommandPacketType) (sstore.UpdatePacket, error) { ids, err := resolveUiIds(ctx, pk, R_Session) - screenArr, err := sstore.GetBareSessionScreens(ctx, ids.SessionId) + screenArr, err := sstore.GetSessionScreens(ctx, ids.SessionId) if err != nil { return nil, fmt.Errorf("/screen:showall error getting screen list: %v", err) } @@ -1991,7 +1990,7 @@ func resizeRunningCommand(ctx context.Context, cmd *sstore.CmdType, newCols int) return nil } -func SwResizeCommand(ctx context.Context, pk *scpacket.FeCommandPacketType) (sstore.UpdatePacket, error) { +func ScreenResizeCommand(ctx context.Context, pk *scpacket.FeCommandPacketType) (sstore.UpdatePacket, error) { ids, err := resolveUiIds(ctx, pk, R_Session|R_Screen|R_Window) if err != nil { return nil, err diff --git a/pkg/cmdrunner/resolver.go b/pkg/cmdrunner/resolver.go index 8d15d064..05a11b39 100644 --- a/pkg/cmdrunner/resolver.go +++ b/pkg/cmdrunner/resolver.go @@ -291,7 +291,7 @@ func resolveUiIds(ctx context.Context, pk *scpacket.FeCommandPacketType, rtype i } func resolveSessionScreen(ctx context.Context, sessionId string, screenArg string, curScreenArg string) (*ResolveItem, error) { - screens, err := sstore.GetBareSessionScreens(ctx, sessionId) + screens, err := sstore.GetSessionScreens(ctx, sessionId) if err != nil { return nil, fmt.Errorf("could not retreive screens for session=%s: %v", sessionId, err) } diff --git a/pkg/sstore/dbops.go b/pkg/sstore/dbops.go index 20c9aef1..07fd4bed 100644 --- a/pkg/sstore/dbops.go +++ b/pkg/sstore/dbops.go @@ -406,6 +406,9 @@ func GetAllSessions(ctx context.Context) (*ModelUpdate, error) { } query = `SELECT * FROM screen ORDER BY archived, screenidx, archivedts` update.Screens = SelectMapsGen[*ScreenType](tx, query) + for _, screen := range update.Screens { + screen.Full = true + } query = `SELECT * FROM remote_instance` riArr := SelectMapsGen[*RemoteInstance](tx, query) for _, ri := range riArr { @@ -436,14 +439,15 @@ func GetScreenLinesById(ctx context.Context, screenId string) (*ScreenLinesType, } // includes archived screens (does not include screen windows) -func GetBareSessionScreens(ctx context.Context, sessionId string) ([]*ScreenType, error) { - var rtn []*ScreenType - txErr := WithTx(ctx, func(tx *TxWrap) error { +func GetSessionScreens(ctx context.Context, sessionId string) ([]*ScreenType, error) { + return WithTxRtn(ctx, func(tx *TxWrap) ([]*ScreenType, error) { query := `SELECT * FROM screen WHERE sessionid = ? ORDER BY archived, screenidx, archivedts` - tx.Select(&rtn, query, sessionId) - return nil + rtn := SelectMapsGen[*ScreenType](tx, query, sessionId) + for _, screen := range rtn { + screen.Full = true + } + return rtn, nil }) - return rtn, txErr } func GetSessionById(ctx context.Context, id string) (*SessionType, error) { @@ -678,6 +682,7 @@ func GetScreenById(ctx context.Context, screenId string) (*ScreenType, error) { return WithTxRtn(ctx, func(tx *TxWrap) (*ScreenType, error) { query := `SELECT * FROM screen WHERE screenid = ?` screen := GetMapGen[*ScreenType](tx, query, screenId) + screen.Full = true return screen, nil }) } diff --git a/pkg/sstore/sstore.go b/pkg/sstore/sstore.go index 90b7666d..fb5813c8 100644 --- a/pkg/sstore/sstore.go +++ b/pkg/sstore/sstore.go @@ -414,6 +414,7 @@ type ScreenType struct { ArchivedTs int64 `json:"archivedts,omitempty"` // only for updates + Full bool `json:"full,omitempty"` Remove bool `json:"remove,omitempty"` }