diff --git a/pkg/cmdrunner/cmdrunner.go b/pkg/cmdrunner/cmdrunner.go index 1b1a72b0..180f2dec 100644 --- a/pkg/cmdrunner/cmdrunner.go +++ b/pkg/cmdrunner/cmdrunner.go @@ -2332,10 +2332,16 @@ func LineViewCommand(ctx context.Context, pk *scpacket.FeCommandPacketType) (sst if err != nil { return nil, fmt.Errorf("/line:view invalid session arg: %v", err) } + if sessionId == "" { + return nil, fmt.Errorf("/line:view no session found") + } screenRItem, err := resolveSessionScreen(ctx, sessionId, screenArg, "") if err != nil { return nil, fmt.Errorf("/line:view invalid screen arg: %v", err) } + if screenRItem == nil { + return nil, fmt.Errorf("/line:view no screen found") + } screen, err := sstore.GetScreenById(ctx, screenRItem.Id) if err != nil { return nil, fmt.Errorf("/line:view could not get screen: %v", err) @@ -2348,15 +2354,17 @@ func LineViewCommand(ctx context.Context, pk *scpacket.FeCommandPacketType) (sst if err != nil { return nil, err } - updateMap := make(map[string]interface{}) - updateMap[sstore.ScreenField_SelectedLine] = lineRItem.Num - updateMap[sstore.ScreenField_AnchorLine] = lineRItem.Num - updateMap[sstore.ScreenField_AnchorOffset] = 0 - screen, err = sstore.UpdateScreen(ctx, screenRItem.Id, updateMap) - if err != nil { - return nil, err + if lineRItem != nil { + updateMap := make(map[string]interface{}) + updateMap[sstore.ScreenField_SelectedLine] = lineRItem.Num + updateMap[sstore.ScreenField_AnchorLine] = lineRItem.Num + updateMap[sstore.ScreenField_AnchorOffset] = 0 + screen, err = sstore.UpdateScreen(ctx, screenRItem.Id, updateMap) + if err != nil { + return nil, err + } + update.Screens = []*sstore.ScreenType{screen} } - update.Screens = []*sstore.ScreenType{screen} return update, nil } diff --git a/pkg/sstore/sstore.go b/pkg/sstore/sstore.go index 3bbad9e3..e3105f26 100644 --- a/pkg/sstore/sstore.go +++ b/pkg/sstore/sstore.go @@ -34,7 +34,7 @@ const LineNoHeight = -1 const DBFileName = "prompt.db" const DBFileNameBackup = "backup.prompt.db" const MaxWebShareLineCount = 50 -const MaxWebShareScreenCount = 5 +const MaxWebShareScreenCount = 3 const DefaultSessionName = "default" const LocalRemoteAlias = "local"