import { t } from "./base" import { playerRouter } from "./player" import { observable } from "@trpc/server/observable" import type { GameEvent } from "../../shared/gameEvents" import { directorRouter } from "./director" import { game } from "../game" export const appRouter = t.router({ player: playerRouter, director: directorRouter, join: t.procedure .subscription(({ ctx }) => { return observable(emit => { const handleGameEvent = (event: GameEvent) => emit.next(event) const handleDestroyed = () => setTimeout(() => emit.complete(), 500) game.on("game-event", handleGameEvent) game.getInitialStateEvents().forEach(event => emit.next(event)) return () => { game.off("game-event", handleGameEvent) } }) }), }) export type AppRouter = typeof appRouter