1import { createEnvironmentProjectAtoms } from "@t3tools/client-runtime/state/projects";
2import { createProjectEnvironmentAtoms } from "@t3tools/client-runtime/state/projects";
3import { createEnvironmentRpcQueryAtomFamily } from "@t3tools/client-runtime/state/runtime";
4import { WS_METHODS } from "@t3tools/contracts";
5
6import { environmentCatalog } from "../connection/catalog";
7import { connectionAtomRuntime } from "../connection/runtime";
8import { environmentSnapshotAtom } from "./shell";
9import { serverEnvironment } from "./server";
10
11export const environmentProjects = createEnvironmentProjectAtoms({
12 catalogValueAtom: environmentCatalog.catalogValueAtom,
13 snapshotAtom: environmentSnapshotAtom,
14 serverConfigValueAtom: serverEnvironment.configValueAtom,
15});
16export const projectEnvironment = createProjectEnvironmentAtoms(connectionAtomRuntime, {
17 projectAtom: environmentProjects.projectAtom,
18});
19/**
20 * Web-only: project content search backs the ⇧⌘F dialog, which has no mobile
21 * surface, so the atom family lives here instead of the shared client-runtime
22 * project atoms consumed by the mobile app.
23 */
24export const projectContentSearch = createEnvironmentRpcQueryAtomFamily(connectionAtomRuntime, {
25 label: "environment-data:projects:search-contents",
26 tag: WS_METHODS.projectsSearchContents,
27 staleTimeMs: 5_000,
28 idleTtlMs: 60_000,
29});