41 lines · 1.2 KB · TypeScript
RawDownload
import type { PreviewListResult, ScopedThreadRef } from "@t3tools/contracts"; import { readPreviewStateRevision } from "~/previewStateStore";import { appAtomRegistry } from "~/rpc/atomRegistry";import { previewEnvironment } from "~/state/preview";import { useEnvironmentQuery } from "~/state/query"; export interface PreviewSessionQueryState {  readonly data: {    readonly result: PreviewListResult;    readonly revision: number;  } | null;  readonly error: string | null;  readonly isPending: boolean;} function previewSessionListAtom(threadRef: ScopedThreadRef) {  return previewEnvironment.list({    environmentId: threadRef.environmentId,    input: { threadId: threadRef.threadId },  });} export function refreshPreviewSessionState(threadRef: ScopedThreadRef): void {  appAtomRegistry.refresh(previewSessionListAtom(threadRef));} export function usePreviewSessionState(threadRef: ScopedThreadRef): PreviewSessionQueryState {  const query = useEnvironmentQuery(previewSessionListAtom(threadRef));  return {    data:      query.data === null        ? null        : {            result: query.data,            revision: readPreviewStateRevision(threadRef),          },    error: query.error,    isPending: query.isPending,  };}