30 lines
1.1 KiB
TypeScript
30 lines
1.1 KiB
TypeScript
import { useParams } from "@solidjs/router"
|
|
import { createMemo } from "solid-js"
|
|
import { useLayout } from "@/context/layout"
|
|
import { SessionRouteKey, SessionStateKey } from "@/utils/server-scope"
|
|
import { useSDK } from "@/context/sdk"
|
|
import { useServerSDK } from "@/context/server-sdk"
|
|
import { base64Encode } from "@opencode-ai/core/util/encode"
|
|
|
|
export const useSessionKey = () => {
|
|
const params = useParams()
|
|
const sdk = useSDK()
|
|
const serverSDK = useServerSDK()
|
|
const scope = createMemo(() => serverSDK().scope)
|
|
const directory = createMemo(() => base64Encode(sdk().directory))
|
|
const workspaceKey = createMemo(() => SessionStateKey.from(scope(), SessionRouteKey.fromRoute(directory())))
|
|
const sessionKey = createMemo(() => SessionStateKey.from(scope(), SessionRouteKey.fromRoute(directory(), params.id)))
|
|
return { params, sessionKey, workspaceKey }
|
|
}
|
|
|
|
export const useSessionLayout = () => {
|
|
const layout = useLayout()
|
|
const { params, sessionKey, workspaceKey } = useSessionKey()
|
|
return {
|
|
params,
|
|
sessionKey,
|
|
workspaceKey,
|
|
tabs: createMemo(() => layout.tabs(sessionKey)),
|
|
view: createMemo(() => layout.view(sessionKey)),
|
|
}
|
|
}
|