Skip to content
Source
Sign inSign up

useT3ConnectTurnOn.ts

30 lines1.2 KB

1import {
2 AuthRelayReadScope,
3 AuthRelayWriteScope,
4 type EnvironmentId,
5 managedCapabilityDenial,
6} from "@t3tools/contracts";
7​
8import { isElectron } from "../env";
9import { useManagedPolicy } from "../state/managedPolicy";
10import { useEnvironmentScope } from "../state/session";
11import { useCloudLinkState } from "./cloudLinkState";
12import { hasCloudPublicConfig } from "./publicConfig";
13import { resolveT3ConnectTurnOn } from "./t3ConnectState";
14​
15/** Whether this client can turn on T3 Connect for `environmentId`, and if not, why. */
16export function useT3ConnectTurnOn(environmentId: EnvironmentId | null) {
17 const canReadRelay = useEnvironmentScope(environmentId, AuthRelayReadScope);
18 const canWriteRelay = useEnvironmentScope(environmentId, AuthRelayWriteScope);
19 const connectDenial = managedCapabilityDenial(useManagedPolicy(environmentId), "connect");
20 const linkState = useCloudLinkState(environmentId).data;
21 return resolveT3ConnectTurnOn({
22 desktopApp: isElectron,
23 // Unknown while loading and on older servers, which keep today's switch in Settings.
24 linkableHere: linkState?.linkableHere ?? true,
25 cloudConfigured: hasCloudPublicConfig(),
26 canReadRelay,
27 canWriteRelay,
28 connectDenial,
29 });