From 370422d9787e16c792fc29fc90fefce1bf0d1025 Mon Sep 17 00:00:00 2001 From: mustard Date: Tue, 28 Jun 2022 12:46:18 +0000 Subject: [PATCH] [supervisor-frontend] add track for sent closed heartbeat --- .../supervisor/frontend/src/ide/heart-beat.ts | 18 +++++++++++++++--- components/supervisor/frontend/src/index.ts | 4 ++-- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/components/supervisor/frontend/src/ide/heart-beat.ts b/components/supervisor/frontend/src/ide/heart-beat.ts index 3471ad010c0a70..2d4a6f9b4b92c1 100644 --- a/components/supervisor/frontend/src/ide/heart-beat.ts +++ b/components/supervisor/frontend/src/ide/heart-beat.ts @@ -5,6 +5,7 @@ */ import { DisposableCollection, Disposable } from '@gitpod/gitpod-protocol/lib/util/disposable'; +import { WorkspaceInfo } from "@gitpod/gitpod-protocol"; let lastActivity = 0; const updateLastActivitiy = () => { @@ -16,14 +17,25 @@ export const track = (w: Window) => { } let toCancel: DisposableCollection | undefined; -export function schedule(instanceId: string): void { +export function schedule(wsInfo: WorkspaceInfo, sessionId: string): void { if (toCancel) { return; } toCancel = new DisposableCollection() const sendHeartBeat = async (wasClosed?: true) => { try { - await window.gitpod.service.server.sendHeartBeat({ instanceId, wasClosed }); + await window.gitpod.service.server.sendHeartBeat({ instanceId: wsInfo.latestInstance!.id, wasClosed }); + if (wasClosed){ + window.gitpod.service.server.trackEvent({ + event: 'ide_close_signal', + properties: { + workspaceId: wsInfo.workspace.id, + instanceId: wsInfo.latestInstance!.id, + sessionId, + clientKind: 'supervisor-frontend' + } + }) + } } catch (err) { console.error('Failed to send hearbeat:', err); } @@ -65,4 +77,4 @@ export const cancel = () => { toCancel.dispose(); toCancel = undefined; } -} \ No newline at end of file +} diff --git a/components/supervisor/frontend/src/index.ts b/components/supervisor/frontend/src/index.ts index 15d6f607ca8c38..f4658742a4a51e 100644 --- a/components/supervisor/frontend/src/index.ts +++ b/components/supervisor/frontend/src/index.ts @@ -231,7 +231,7 @@ const toStop = new DisposableCollection(); heartBeat.track(window); const updateHeartBeat = () => { if (gitpodServiceClient.info.latestInstance?.status.phase === 'running') { - heartBeat.schedule(gitpodServiceClient.info.latestInstance.id); + heartBeat.schedule(gitpodServiceClient.info, sessionId); } else { heartBeat.cancel(); } @@ -239,4 +239,4 @@ const toStop = new DisposableCollection(); updateHeartBeat(); gitpodServiceClient.onDidChangeInfo(() => updateHeartBeat()); //#endregion -})(); \ No newline at end of file +})();