mirror of
https://github.com/aljazceru/opencode.git
synced 2025-12-21 01:34:22 +01:00
39 lines
1020 B
TypeScript
39 lines
1020 B
TypeScript
import { useNavigate, useParams } from "@solidjs/router"
|
|
import { createInitializedContext } from "../../util/context"
|
|
import { useAccount } from "../../components/context-account"
|
|
import { createEffect, createMemo } from "solid-js"
|
|
|
|
export const { use: useWorkspace, provider: WorkspaceProvider } =
|
|
createInitializedContext("WorkspaceProvider", () => {
|
|
const params = useParams()
|
|
const account = useAccount()
|
|
const workspace = createMemo(() =>
|
|
account.current?.workspaces.find(
|
|
(x) => x.id === params.workspace || x.slug === params.workspace,
|
|
),
|
|
)
|
|
const nav = useNavigate()
|
|
|
|
createEffect(() => {
|
|
if (!workspace()) nav("/")
|
|
})
|
|
|
|
const result = () => workspace()!
|
|
result.ready = true
|
|
|
|
return {
|
|
get id() {
|
|
return workspace()!.id
|
|
},
|
|
get slug() {
|
|
return workspace()!.slug
|
|
},
|
|
get name() {
|
|
return workspace()!.name
|
|
},
|
|
get ready() {
|
|
return workspace() !== undefined
|
|
},
|
|
}
|
|
})
|