import { useMemo } from "react";import { useAtomValue } from "@effect/atom-react";import { AuthAccessWriteScope } from "@t3tools/contracts"; import { hasCloudPublicConfig } from "~/cloud/publicConfig";import { isElectron } from "~/env";import { desktopWslStateAtom } from "~/state/desktopWslState";import { useEnvironments, usePrimaryEnvironmentId } from "~/state/environments";import { useEnvironmentQuery } from "~/state/query";import { usePrimarySessionState } from "~/environments/primary";import { primaryServerConfigAtom } from "~/state/server";import { isWslSettingsRowVisible } from "./ConnectionsSettings.logic";import { isProviderSettingsEnvironmentAvailable } from "./ProviderSettingsPanel.logic";import { filterAvailableSettingsSearchItems } from "./settingsSearch"; export function useAvailableSettingsSearchItems() { const primaryEnvironmentId = usePrimaryEnvironmentId(); const { environments } = useEnvironments(); const primarySessionState = usePrimarySessionState(); const primaryServerConfig = useAtomValue(primaryServerConfigAtom); const desktopWsl = useEnvironmentQuery(isElectron ? desktopWslStateAtom : null); const canManageLocalBackend = isElectron || ((primarySessionState.data?.authenticated && primarySessionState.data.scopes?.includes(AuthAccessWriteScope)) ?? false); return useMemo( () => filterAvailableSettingsSearchItems({ hasCloudPublicConfig: hasCloudPublicConfig(), hasPrimaryEnvironment: primaryEnvironmentId !== null, hasProviderSettingsEnvironment: environments.some((environment) => isProviderSettingsEnvironmentAvailable({ connectionPhase: environment.connection.phase, hasServerConfig: environment.serverConfig !== null, }), ), canManageLocalBackend, isWslSettingsRowVisible: isWslSettingsRowVisible({ state: desktopWsl.data, error: desktopWsl.error, }), hasThreadAutoSettlement: primaryServerConfig?.environment.capabilities.threadAutoSettlement === true, }), [ canManageLocalBackend, desktopWsl.data, desktopWsl.error, environments, primaryEnvironmentId, primaryServerConfig, ], );}
import { useMemo } from "react";
import { useAtomValue } from "@effect/atom-react";
import { AuthAccessWriteScope } from "@t3tools/contracts";
import { hasCloudPublicConfig } from "~/cloud/publicConfig";
import { isElectron } from "~/env";
import { desktopWslStateAtom } from "~/state/desktopWslState";
import { useEnvironments, usePrimaryEnvironmentId } from "~/state/environments";
import { useEnvironmentQuery } from "~/state/query";
import { usePrimarySessionState } from "~/environments/primary";
import { primaryServerConfigAtom } from "~/state/server";
import { isWslSettingsRowVisible } from "./ConnectionsSettings.logic";
import { isProviderSettingsEnvironmentAvailable } from "./ProviderSettingsPanel.logic";
import { filterAvailableSettingsSearchItems } from "./settingsSearch";
export function useAvailableSettingsSearchItems() {
const primaryEnvironmentId = usePrimaryEnvironmentId();
const { environments } = useEnvironments();
const primarySessionState = usePrimarySessionState();
const primaryServerConfig = useAtomValue(primaryServerConfigAtom);
const desktopWsl = useEnvironmentQuery(isElectron ? desktopWslStateAtom : null);
const canManageLocalBackend =
isElectron ||
((primarySessionState.data?.authenticated &&
primarySessionState.data.scopes?.includes(AuthAccessWriteScope)) ??
false);
return useMemo(
() =>
filterAvailableSettingsSearchItems({
hasCloudPublicConfig: hasCloudPublicConfig(),
hasPrimaryEnvironment: primaryEnvironmentId !== null,
hasProviderSettingsEnvironment: environments.some((environment) =>
isProviderSettingsEnvironmentAvailable({
connectionPhase: environment.connection.phase,
hasServerConfig: environment.serverConfig !== null,
}),
),
canManageLocalBackend,
isWslSettingsRowVisible: isWslSettingsRowVisible({
state: desktopWsl.data,
error: desktopWsl.error,
}),
hasThreadAutoSettlement:
primaryServerConfig?.environment.capabilities.threadAutoSettlement === true,
}),
[
canManageLocalBackend,
desktopWsl.data,
desktopWsl.error,
environments,
primaryEnvironmentId,
primaryServerConfig,
],
);
}