nose-pluto/src/js/dispatch.ts
2025-10-02 14:38:50 -07:00

37 lines
1.2 KiB
TypeScript

////
// Dispatch server->client Messages received via WebSocket
import type { Message } from "@/shared/types"
import { cacheCommands } from "./commands"
import { handleOutput } from "./scrollback"
import { handleStreamStart, handleStreamAppend, handleStreamReplace, handleStreamEnd } from "./stream"
import { handleGameStart } from "./game"
import { handleSessionStart, handleSessionUpdate } from "./session"
// message received from server
export async function dispatchMessage(msg: Message) {
switch (msg.type) {
case "output":
handleOutput(msg); break
case "commands":
cacheCommands(msg.data as string[]); break
case "error":
console.error(msg.data); break
case "stream:start":
handleStreamStart(msg); break
case "stream:end":
handleStreamEnd(msg); break
case "stream:append":
handleStreamAppend(msg); break
case "stream:replace":
handleStreamReplace(msg); break
case "game:start":
await handleGameStart(msg); break
case "session:start":
handleSessionStart(msg); break
case "session:update":
handleSessionUpdate(msg); break
default:
console.error("unknown message type", msg)
}
}