bug fixes for screen primary

This commit is contained in:
sawka 2023-03-13 12:10:23 -07:00
parent 1059a10727
commit 49e56f91cd
5 changed files with 19 additions and 15 deletions

View File

@ -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
}

View File

@ -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

View File

@ -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)
}

View File

@ -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
})
}

View File

@ -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"`
}