26 lines · 928 B · TypeScript
RawDownload
import { type ThreadId } from "@t3tools/contracts";import { useMemo } from "react";import {  selectProjectById,  selectSidebarThreadSummaryById,  selectThreadById,  useStore,} from "./store";import { type Project, type SidebarThreadSummary, type Thread } from "./types"; export function useProjectById(projectId: Project["id"] | null | undefined): Project | undefined {  const selector = useMemo(() => selectProjectById(projectId), [projectId]);  return useStore(selector);} export function useThreadById(threadId: ThreadId | null | undefined): Thread | undefined {  const selector = useMemo(() => selectThreadById(threadId), [threadId]);  return useStore(selector);} export function useSidebarThreadSummaryById(  threadId: ThreadId | null | undefined,): SidebarThreadSummary | undefined {  const selector = useMemo(() => selectSidebarThreadSummaryById(threadId), [threadId]);  return useStore(selector);}