56 lines · 2.2 KB · TypeScript
RawDownload
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,    ],  );}