import { createStore } from "solid-js/store" import { createSimpleContext } from "./helper" import type { PromptInfo } from "../component/prompt/history" export type HomeRoute = { type: "home" initialPrompt?: PromptInfo } export type SessionRoute = { type: "session" sessionID: string initialPrompt?: PromptInfo } export type PluginRoute = { type: "plugin" id: string data?: Record } export type Route = HomeRoute | SessionRoute | PluginRoute export const { use: useRoute, provider: RouteProvider } = createSimpleContext({ name: "Route", init: () => { const [store, setStore] = createStore( process.env["OPENCODE_ROUTE"] ? JSON.parse(process.env["OPENCODE_ROUTE"]) : { type: "home", }, ) return { get data() { return store }, navigate(route: Route) { setStore(route) }, } }, }) export type RouteContext = ReturnType export function useRouteData(type: T) { const route = useRoute() return route.data as Extract }