| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- 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 Route = HomeRoute | SessionRoute
- export const { use: useRoute, provider: RouteProvider } = createSimpleContext({
- name: "Route",
- init: () => {
- const [store, setStore] = createStore<Route>(
- process.env["OPENCODE_ROUTE"]
- ? JSON.parse(process.env["OPENCODE_ROUTE"])
- : {
- type: "home",
- },
- )
- return {
- get data() {
- return store
- },
- navigate(route: Route) {
- console.log("navigate", route)
- setStore(route)
- },
- }
- },
- })
- export type RouteContext = ReturnType<typeof useRoute>
- export function useRouteData<T extends Route["type"]>(type: T) {
- const route = useRoute()
- return route.data as Extract<Route, { type: typeof type }>
- }
|