supermemory/apps/web/stores/index.ts
MaheshtheDev 504940414c feat(web): company brain entitlement helper, hook + ?org deep-link activation (#1110)
Add hasCompanyBrain helper + useHasCompanyBrain hook reading the company_brain add-on from org metadata to gate Company Brain UI.

Fixes ENG-806
2026-06-22 17:54:13 +00:00

51 lines
1.4 KiB
TypeScript

"use client"
import { useQueryState } from "nuqs"
import { projectParam } from "@/lib/search-params"
import { useCallback } from "react"
import { DEFAULT_PROJECT_ID, SHARED_TEAM_BRAIN_TAG } from "@lib/constants"
import { useHasCompanyBrain } from "@/hooks/use-company-brain"
export function useProject() {
const [selectedProjects, _setSelectedProjects] = useQueryState(
"project",
projectParam,
)
const hasCompanyBrain = useHasCompanyBrain()
const defaultTag = hasCompanyBrain
? SHARED_TEAM_BRAIN_TAG
: DEFAULT_PROJECT_ID
// Normalize empty selection to the default tag so the selector, counts, and
// queries all agree (shared Team Brain for company-brain orgs).
const normalizedProjects =
selectedProjects.length === 0 ? [defaultTag] : selectedProjects
const selectedProject = normalizedProjects[0]
const effectiveContainerTags = normalizedProjects
const setSelectedProjects = useCallback(
(projects: string[]) => {
_setSelectedProjects(projects.length === 0 ? null : projects)
},
[_setSelectedProjects],
)
const setSelectedProject = useCallback(
(projectId: string) => {
_setSelectedProjects([projectId])
},
[_setSelectedProjects],
)
return {
selectedProjects: normalizedProjects,
selectedProject,
setSelectedProjects,
setSelectedProject,
effectiveContainerTags,
}
}
export { usePersistentChat, usePersistentChatStore } from "./chat"