1import {
2 createFilesystemEnvironmentAtoms,
3 resolveFilesystemReadAccess,
4} from "@t3tools/client-runtime/state/filesystem";
5import type { EnvironmentId } from "@t3tools/contracts";
6
7import { connectionAtomRuntime } from "../connection/runtime";
8import { useEnvironmentPresentation } from "./presentation";
9import { useEnvironmentQuery } from "./query";
10import { environmentSession } from "./session";
11
12export const filesystemEnvironment = createFilesystemEnvironmentAtoms(connectionAtomRuntime);
13
14export function useFilesystemReadAccess(environmentId: EnvironmentId | null) {
15 const session = useEnvironmentQuery(
16 environmentId === null ? null : environmentSession.sessionStateAtom(environmentId),
17 );
18 const environment = useEnvironmentPresentation(environmentId);
19 return resolveFilesystemReadAccess({
20 isCatalogReady: environment.isReady,
21 connection: environment.presentation?.connection ?? null,
22 session: session.data,
23 sessionError: session.error,
24 });
25}