Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 0 additions & 7 deletions frontend/app/modals/userinputmodal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ const UserInputModal = (userInputRequest: UserInputRequest) => {
);
modalsModel.popModal();
}, [responseText, userInputRequest]);
console.log("bar");

const handleSendConfirm = useCallback(
(response: boolean) => {
Expand All @@ -64,7 +63,6 @@ const UserInputModal = (userInputRequest: UserInputRequest) => {
break;
}
}, [handleSendConfirm, handleSendText, userInputRequest.responsetype]);
console.log("baz");

const handleKeyDown = useCallback(
(waveEvent: WaveKeyboardEvent): boolean => {
Expand All @@ -86,7 +84,6 @@ const UserInputModal = (userInputRequest: UserInputRequest) => {
}
return <span className="userinput-text">{userInputRequest.querytext}</span>;
}, [userInputRequest.markdown, userInputRequest.querytext]);
console.log("foobarbaz");

const inputBox = useMemo(() => {
if (userInputRequest.responsetype === "confirm") {
Expand All @@ -104,7 +101,6 @@ const UserInputModal = (userInputRequest: UserInputRequest) => {
/>
);
}, [userInputRequest.responsetype, userInputRequest.publictext, responseText, handleKeyDown, setResponseText]);
console.log("mem1");

const optionalCheckbox = useMemo(() => {
if (userInputRequest.checkboxmsg == "") {
Expand All @@ -124,7 +120,6 @@ const UserInputModal = (userInputRequest: UserInputRequest) => {
</div>
);
}, []);
console.log("mem2");

useEffect(() => {
let timeout: ReturnType<typeof setTimeout>;
Expand All @@ -139,7 +134,6 @@ const UserInputModal = (userInputRequest: UserInputRequest) => {
}
return () => clearTimeout(timeout);
}, [countdown]);
console.log("count");

const handleNegativeResponse = useCallback(() => {
switch (userInputRequest.responsetype) {
Expand All @@ -151,7 +145,6 @@ const UserInputModal = (userInputRequest: UserInputRequest) => {
break;
}
}, [userInputRequest.responsetype, handleSendErrResponse, handleSendConfirm]);
console.log("before end");

return (
<Modal
Expand Down
3 changes: 2 additions & 1 deletion frontend/app/store/global.ts
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ function initGlobalAtoms(initOpts: GlobalInitOptions) {
};
}

function initGlobalWaveEventSubs() {
function initGlobalWaveEventSubs(initOpts: WaveInitOpts) {
waveEventSubscribe(
{
eventType: "waveobj:update",
Expand All @@ -193,6 +193,7 @@ function initGlobalWaveEventSubs() {
const data: UserInputRequest = event.data;
modalsModel.pushModal("UserInputModal", { ...data });
},
scope: initOpts.windowId,
},
{
eventType: "blockfile",
Expand Down
2 changes: 1 addition & 1 deletion frontend/wave.ts
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ async function initWave(initOpts: WaveInitOpts) {
(window as any).globalWS = globalWS;
(window as any).TabRpcClient = TabRpcClient;
await loadConnStatus();
initGlobalWaveEventSubs();
initGlobalWaveEventSubs(initOpts);
subscribeToConnEvents();

// ensures client/window/workspace are loaded into the cache before rendering
Expand Down
26 changes: 26 additions & 0 deletions pkg/genconn/genconn.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,32 @@ import (
"github.com/wavetermdev/waveterm/pkg/util/syncbuf"
)

type connContextKeyType struct{}

var connContextKey connContextKeyType

type connData struct {
BlockId string
}

func ContextWithConnData(ctx context.Context, blockId string) context.Context {
if blockId == "" {
return ctx
}
return context.WithValue(ctx, connContextKey, &connData{BlockId: blockId})
}

func GetConnData(ctx context.Context) *connData {
if ctx == nil {
return nil
}
dataPtr := ctx.Value(connContextKey)
if dataPtr == nil {
return nil
}
return dataPtr.(*connData)
}

type CommandSpec struct {
Cmd string
Env map[string]string
Expand Down
28 changes: 23 additions & 5 deletions pkg/userinput/userinput.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@ import (
"time"

"github.com/google/uuid"
"github.com/wavetermdev/waveterm/pkg/genconn"
"github.com/wavetermdev/waveterm/pkg/wps"
"github.com/wavetermdev/waveterm/pkg/wstore"
)

var MainUserInputHandler = UserInputHandler{Channels: make(map[string](chan *UserInputResponse), 1)}
Expand Down Expand Up @@ -61,10 +63,11 @@ func (ui *UserInputHandler) unregisterChannel(id string) {
delete(ui.Channels, id)
}

func (ui *UserInputHandler) sendRequestToFrontend(request *UserInputRequest) {
func (ui *UserInputHandler) sendRequestToFrontend(request *UserInputRequest, windowId string) {
wps.Broker.Publish(wps.WaveEvent{
Event: wps.Event_UserInput,
Data: request,
Event: wps.Event_UserInput,
Data: request,
Scopes: []string{windowId},
})
}

Expand All @@ -74,10 +77,25 @@ func GetUserInput(ctx context.Context, request *UserInputRequest) (*UserInputRes
request.RequestId = id
deadline, _ := ctx.Deadline()
request.TimeoutMs = int(time.Until(deadline).Milliseconds()) - 500
MainUserInputHandler.sendRequestToFrontend(request)

connData := genconn.GetConnData(ctx)
// resolve windowId from blockId
tabId, err := wstore.DBFindTabForBlockId(ctx, connData.BlockId)
if err != nil {
return nil, fmt.Errorf("unabled to determine tab for route: %w", err)
}
workspaceId, err := wstore.DBFindWorkspaceForTabId(ctx, tabId)
if err != nil {
return nil, fmt.Errorf("unabled to determine workspace for route: %w", err)
}
windowId, err := wstore.DBFindWindowForWorkspaceId(ctx, workspaceId)
if err != nil {
return nil, fmt.Errorf("unabled to determine window for route: %w", err)
}

MainUserInputHandler.sendRequestToFrontend(request, windowId)

var response *UserInputResponse
var err error
select {
case resp := <-uiCh:
log.Printf("checking received: %v", resp.RequestId)
Expand Down
5 changes: 5 additions & 0 deletions pkg/wshrpc/wshserver/wshserver.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import (
"github.com/wavetermdev/waveterm/pkg/blockcontroller"
"github.com/wavetermdev/waveterm/pkg/blocklogger"
"github.com/wavetermdev/waveterm/pkg/filestore"
"github.com/wavetermdev/waveterm/pkg/genconn"
"github.com/wavetermdev/waveterm/pkg/panichandler"
"github.com/wavetermdev/waveterm/pkg/remote"
"github.com/wavetermdev/waveterm/pkg/remote/conncontroller"
Expand Down Expand Up @@ -238,6 +239,7 @@ func (ws *WshServer) ControllerStopCommand(ctx context.Context, blockId string)
}

func (ws *WshServer) ControllerResyncCommand(ctx context.Context, data wshrpc.CommandControllerResyncData) error {
ctx = genconn.ContextWithConnData(ctx, data.BlockId)
ctx = termCtxWithLogBlockId(ctx, data.BlockId)
return blockcontroller.ResyncController(ctx, data.TabId, data.BlockId, data.RtOpts, data.ForceRestart)
}
Expand Down Expand Up @@ -627,6 +629,7 @@ func termCtxWithLogBlockId(ctx context.Context, logBlockId string) context.Conte
}

func (ws *WshServer) ConnEnsureCommand(ctx context.Context, data wshrpc.ConnExtData) error {
ctx = genconn.ContextWithConnData(ctx, data.LogBlockId)
ctx = termCtxWithLogBlockId(ctx, data.LogBlockId)
if strings.HasPrefix(data.ConnName, "wsl://") {
distroName := strings.TrimPrefix(data.ConnName, "wsl://")
Expand Down Expand Up @@ -656,6 +659,7 @@ func (ws *WshServer) ConnDisconnectCommand(ctx context.Context, connName string)
}

func (ws *WshServer) ConnConnectCommand(ctx context.Context, connRequest wshrpc.ConnRequest) error {
ctx = genconn.ContextWithConnData(ctx, connRequest.LogBlockId)
ctx = termCtxWithLogBlockId(ctx, connRequest.LogBlockId)
connName := connRequest.Host
if strings.HasPrefix(connName, "wsl://") {
Expand All @@ -678,6 +682,7 @@ func (ws *WshServer) ConnConnectCommand(ctx context.Context, connRequest wshrpc.
}

func (ws *WshServer) ConnReinstallWshCommand(ctx context.Context, data wshrpc.ConnExtData) error {
ctx = genconn.ContextWithConnData(ctx, data.LogBlockId)
ctx = termCtxWithLogBlockId(ctx, data.LogBlockId)
connName := data.ConnName
if strings.HasPrefix(connName, "wsl://") {
Expand Down
Loading