Skip to content

Commit 7109cf7

Browse files
committed
refactor: Parameterize instance uses
1 parent d0b0bd4 commit 7109cf7

7 files changed

Lines changed: 59 additions & 25 deletions

File tree

src/config/getInstanceClient.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,16 @@ interface InstanceClient {
1212
}
1313

1414
export function getInstanceClient(
15-
{ id = OverallAppSignIn, operationsUrl, port, secure, forceFabricConnect }: InstanceClient & {
15+
{
16+
id = OverallAppSignIn,
17+
operationsUrl,
18+
port,
19+
secure,
20+
forceFabricConnect,
21+
disableFabricConnect,
22+
}: InstanceClient & {
1623
forceFabricConnect?: boolean;
24+
disableFabricConnect?: boolean;
1725
} = {},
1826
) {
1927
let baseURL = operationsUrl || authStore.getOperationsUrl(id);
@@ -30,7 +38,7 @@ export function getInstanceClient(
3038
}
3139
}
3240

33-
const fabricConnect = forceFabricConnect || authStore.checkForFabricConnect(id);
41+
const fabricConnect = !disableFabricConnect && (forceFabricConnect || authStore.checkForFabricConnect(id));
3442
if (fabricConnect) {
3543
if (id.startsWith('clu-')) {
3644
baseURL = apiClient.defaults.baseURL + `/Cluster/${id}/operation`;

src/config/useInstanceClient.tsx

Lines changed: 33 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,37 +5,49 @@ import { OverallAppSignIn } from '@/features/auth/store/authStore';
55
import { useParams } from '@tanstack/react-router';
66
import { useMemo } from 'react';
77

8-
export function useInstanceClient(operationsUrl?: string | null, port?: number, secure?: boolean) {
8+
interface UseParams {
9+
operationsUrl?: string | null;
10+
port?: number;
11+
secure?: boolean;
12+
disableFabricConnect?: boolean;
13+
instanceId?: string;
14+
clusterId?: string;
15+
}
16+
17+
export function useInstanceClient(
18+
params: UseParams = {},
19+
) {
920
const { instanceId, clusterId }: { instanceId?: string; clusterId?: string } = useParams({ strict: false });
10-
const id = isLocalStudio ? OverallAppSignIn : instanceId ?? clusterId;
11-
return getInstanceClient({ id, operationsUrl, port, secure });
21+
const id = isLocalStudio ? OverallAppSignIn : params.instanceId ?? instanceId ?? params.clusterId ?? clusterId;
22+
return getInstanceClient({ id, ...params });
1223
}
1324

1425
export function useInstanceClientParams(
15-
operationsUrl?: string | null,
16-
port?: number,
17-
secure?: boolean,
26+
params: UseParams = {},
1827
): InstanceClientConfig & InstanceTypeConfig {
1928
const { instanceId, clusterId }: { instanceId?: string; clusterId?: string } = useParams({ strict: false });
20-
const id = isLocalStudio ? OverallAppSignIn : instanceId ?? clusterId;
29+
const id = isLocalStudio ? OverallAppSignIn : params.instanceId ?? instanceId ?? params.clusterId ?? clusterId;
2130
return {
22-
instanceClient: getInstanceClient({ id, operationsUrl, port, secure }),
31+
instanceClient: getInstanceClient({ id, ...params }),
2332
entityType: (isLocalStudio || instanceId) ? 'instance' : 'cluster',
2433
};
2534
}
2635

2736
export function useInstanceClientIdParams(
28-
operationsUrl?: string | null,
29-
port?: number,
30-
secure?: boolean,
37+
params: UseParams = {},
3138
): InstanceClientIdConfig & InstanceTypeConfig {
32-
const params: { instanceId?: string; clusterId?: string } = useParams({ strict: false });
33-
return useMemo(() => getInstanceClientIdFromParams({ ...params, operationsUrl, port, secure }), [
34-
params,
35-
operationsUrl,
36-
port,
37-
secure,
38-
]);
39+
const { instanceId, clusterId }: { instanceId?: string; clusterId?: string } = useParams({ strict: false });
40+
return useMemo(
41+
() => getInstanceClientIdFromParams({ instanceId, clusterId, ...params }),
42+
[
43+
params.instanceId ?? instanceId,
44+
params.clusterId ?? clusterId,
45+
params.operationsUrl,
46+
params.port,
47+
params.secure,
48+
params.disableFabricConnect,
49+
],
50+
);
3951
}
4052

4153
export function getInstanceClientIdFromParams({
@@ -44,19 +56,21 @@ export function getInstanceClientIdFromParams({
4456
operationsUrl,
4557
port,
4658
secure,
59+
disableFabricConnect,
4760
}: {
4861
instanceId?: string;
4962
clusterId?: string;
5063
operationsUrl?: string | null;
5164
port?: number;
5265
secure?: boolean;
66+
disableFabricConnect?: boolean;
5367
}): InstanceClientIdConfig & InstanceTypeConfig {
5468
const id = isLocalStudio ? OverallAppSignIn : instanceId ?? clusterId;
5569
if (!id) {
5670
throw new Error('id could not be automatically calculated in useInstanceClientIdParams');
5771
}
5872
return {
59-
instanceClient: getInstanceClient({ id, operationsUrl, port, secure }),
73+
instanceClient: getInstanceClient({ id, operationsUrl, port, secure, disableFabricConnect }),
6074
entityId: id,
6175
entityType: (isLocalStudio || instanceId) ? 'instance' : 'cluster',
6276
};

src/features/auth/ClusterInstanceSignIn.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ export function ClusterInstanceSignIn() {
5454
return null;
5555
}, [cluster, instance]);
5656

57-
const instanceParams = useInstanceClientIdParams(operationsUrl);
57+
const instanceParams = useInstanceClientIdParams({ operationsUrl });
5858
const warnAboutLocalDeviceAccess = useMemo(
5959
() => operationsUrl?.includes('localhost') || operationsUrl?.includes('127.0.0.1'),
6060
[operationsUrl],

src/features/cluster/FinishSetup.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export function FinishSetup() {
3333

3434
const navigate = useNavigate();
3535
const operationsUrl = useMemo(() => getOperationsUrlForCluster(cluster), [cluster]);
36-
const instanceClient = useInstanceClient(operationsUrl);
36+
const instanceClient = useInstanceClient({ operationsUrl });
3737

3838
const { redirect } = useSearch({ strict: false });
3939
const router = useRouter();

src/features/cluster/InstanceLogInCell.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export function InstanceLogInCell(
1616
) {
1717
const { user: instanceUser, isLoading: instanceAuthIsLoading } = useInstanceAuth(instance.id);
1818
const operationsUrl = useMemo(() => getOperationsUrlForInstance(instance), [instance]);
19-
const instanceClient = useInstanceClient(operationsUrl);
19+
const instanceClient = useInstanceClient({ operationsUrl });
2020
const { update } = useOrganizationClusterInstancePermissions();
2121
const isFabricConnect = authStore.checkForFabricConnect(instance.id);
2222

src/features/clusters/components/ClusterCard.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export function ClusterCard({ cluster }: { cluster: Cluster }) {
4848
const router = useRouter();
4949
const queryClient = useQueryClient();
5050
const operationsUrl = useMemo(() => getOperationsUrlForCluster(cluster), [cluster]);
51-
const instanceClient = useInstanceClient(operationsUrl);
51+
const instanceClient = useInstanceClient({ operationsUrl });
5252
const auth = useInstanceAuth(cluster.id);
5353
const [, setSavedClusterState] = useLocalStorage<unknown | null>(LocalStorageKeys.SavedClusterState, null);
5454

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { Instance } from '@/integrations/api/api.patch';
2+
3+
export function getRestUrlForInstance(
4+
instance: Pick<Instance, 'instanceFqdn'>,
5+
): string {
6+
let fqdn = instance.instanceFqdn;
7+
if (!fqdn.match(/^https?:\/\//i)) {
8+
fqdn = `https://${fqdn}`;
9+
}
10+
const url = new URL(fqdn);
11+
return url.toString();
12+
}

0 commit comments

Comments
 (0)