diff --git a/web/packages/teleterm/src/mainProcess/fixtures/mocks.ts b/web/packages/teleterm/src/mainProcess/fixtures/mocks.ts index 7ec59d99a921b..7ec394fb8a805 100644 --- a/web/packages/teleterm/src/mainProcess/fixtures/mocks.ts +++ b/web/packages/teleterm/src/mainProcess/fixtures/mocks.ts @@ -156,6 +156,7 @@ export const makeRuntimeSettings = ( installationId: '123e4567-e89b-12d3-a456-426614174000', arch: 'arm64', osVersion: '22.2.0', + // Should be kept in sync with the default proxyVersion of makeRootCluster. appVersion: '11.1.0', isLocalBuild: runtimeSettings?.appVersion === '1.0.0-dev', username: 'alice', diff --git a/web/packages/teleterm/src/services/tshd/testHelpers.ts b/web/packages/teleterm/src/services/tshd/testHelpers.ts index 9f97830fdcd85..fef24a5cb3677 100644 --- a/web/packages/teleterm/src/services/tshd/testHelpers.ts +++ b/web/packages/teleterm/src/services/tshd/testHelpers.ts @@ -63,7 +63,7 @@ export const makeRootCluster = ( proxyHost: 'teleport-local:3080', authClusterId: 'fefe3434-fefe-3434-fefe-3434fefe3434', loggedInUser: makeLoggedInUser(), - proxyVersion: '1.0.0', + proxyVersion: '11.1.0', ...props, }); diff --git a/web/packages/teleterm/src/ui/ConnectMyComputer/DocumentConnectMyComputerSetup/DocumentConnectMyComputerSetup.story.tsx b/web/packages/teleterm/src/ui/ConnectMyComputer/DocumentConnectMyComputerSetup/DocumentConnectMyComputerSetup.story.tsx index f15a692f1f2ab..5f7f3e3ca8f37 100644 --- a/web/packages/teleterm/src/ui/ConnectMyComputer/DocumentConnectMyComputerSetup/DocumentConnectMyComputerSetup.story.tsx +++ b/web/packages/teleterm/src/ui/ConnectMyComputer/DocumentConnectMyComputerSetup/DocumentConnectMyComputerSetup.story.tsx @@ -54,6 +54,16 @@ export function Success() { const appContext = new MockAppContext({ appVersion: cluster.proxyVersion }); appContext.connectMyComputerService.waitForNodeToJoin = async () => makeServer(); + // Report the agent as running so that the autostart behavior doesn't kick in and attempt to start + // the agent over and over. + appContext.mainProcessClient.subscribeToAgentUpdate = ( + rootClusterUri, + callback + ) => { + callback({ status: 'running' }); + + return { cleanup: () => {} }; + }; return ; } diff --git a/web/packages/teleterm/src/ui/DocumentCluster/ClusterResources/Servers/Servers.tsx b/web/packages/teleterm/src/ui/DocumentCluster/ClusterResources/Servers/Servers.tsx index 21766b15c3abc..f95a94aa6ae93 100644 --- a/web/packages/teleterm/src/ui/DocumentCluster/ClusterResources/Servers/Servers.tsx +++ b/web/packages/teleterm/src/ui/DocumentCluster/ClusterResources/Servers/Servers.tsx @@ -58,7 +58,8 @@ function ServerList(props: State) { const { documentsService, rootClusterUri } = useWorkspaceContext(); const { clusterUri } = useClusterContext(); const loggedInUser = useWorkspaceLoggedInUser(); - const { canUse: canUseConnectMyComputer } = useConnectMyComputerContext(); + const { canUse: hasPermissionsForConnectMyComputer, agentCompatibility } = + useConnectMyComputerContext(); const servers = fetchAttempt.data?.agentsList.map(makeServer) || []; const disabled = fetchAttempt.status === 'processing'; @@ -70,13 +71,16 @@ function ServerList(props: State) { agentFilter.search || agentFilter.query, canAddResources ); + const canUseConnectMyComputer = + isRootCluster && + hasPermissionsForConnectMyComputer && + agentCompatibility === 'compatible'; let { emptyText, emptyHint } = getEmptyTableText(emptyTableStatus, 'servers'); let emptyButton: JSX.Element; if ( emptyTableStatus.status === 'no-resources' && emptyTableStatus.showEnrollingResourcesHint && - isRootCluster && canUseConnectMyComputer ) { emptyHint = diff --git a/web/packages/teleterm/src/ui/DocumentCluster/DocumentCluster.story.tsx b/web/packages/teleterm/src/ui/DocumentCluster/DocumentCluster.story.tsx index 4cf22132e1d90..065da37b4d8c8 100644 --- a/web/packages/teleterm/src/ui/DocumentCluster/DocumentCluster.story.tsx +++ b/web/packages/teleterm/src/ui/DocumentCluster/DocumentCluster.story.tsx @@ -269,8 +269,8 @@ function renderState({ const appContext = new MockAppContext({ platform }); appContext.clustersService.state = state; + const rootClusterUri = routing.ensureRootClusterUri(doc.clusterUri); appContext.workspacesService.setState(draftState => { - const rootClusterUri = routing.ensureRootClusterUri(doc.clusterUri); draftState.rootClusterUri = rootClusterUri; draftState.workspaces[rootClusterUri] = { localClusterUri: doc.clusterUri, @@ -286,7 +286,7 @@ function renderState({ return ( - +