nose-pluto/src/js/dispatch.ts

32 lines
1.0 KiB
TypeScript

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 { browserCommands } from "./commands"
// 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 "ui:mode":
browserCommands.mode?.(msg.data as string); break
default:
console.error("unknown message type", msg)
}
}