From 89f56cbd86b37c84b86a5b6baf5cd4e1119a7a39 Mon Sep 17 00:00:00 2001 From: mustard Date: Fri, 20 May 2022 08:13:37 +0000 Subject: [PATCH] [dashboard] add location for ide_configuration_changed track event --- components/dashboard/src/App.tsx | 6 +----- .../dashboard/src/settings/Preferences.tsx | 2 +- components/dashboard/src/settings/SelectIDE.tsx | 16 +++++++++++++--- .../dashboard/src/settings/SelectIDEModal.tsx | 13 +++++++++---- .../dashboard/src/workspaces/Workspaces.tsx | 4 +++- 5 files changed, 27 insertions(+), 14 deletions(-) diff --git a/components/dashboard/src/App.tsx b/components/dashboard/src/App.tsx index 1db31a3a659df5..fc8a2a89260ab1 100644 --- a/components/dashboard/src/App.tsx +++ b/components/dashboard/src/App.tsx @@ -509,11 +509,7 @@ function App() { if (showUserIdePreference) { toRender = ( - { - setShowUserIdePreference(false); - }} - /> + setShowUserIdePreference(false)} /> ); } else { diff --git a/components/dashboard/src/settings/Preferences.tsx b/components/dashboard/src/settings/Preferences.tsx index 8ffc089691d7ca..ad1ce00ab0a2da 100644 --- a/components/dashboard/src/settings/Preferences.tsx +++ b/components/dashboard/src/settings/Preferences.tsx @@ -60,7 +60,7 @@ export default function Preferences() { >

Editor

Choose the editor for opening workspaces.

- +

Theme

Early bird or night owl? Choose your side.

diff --git a/components/dashboard/src/settings/SelectIDE.tsx b/components/dashboard/src/settings/SelectIDE.tsx index 66cb8740e62034..9d227eecc64668 100644 --- a/components/dashboard/src/settings/SelectIDE.tsx +++ b/components/dashboard/src/settings/SelectIDE.tsx @@ -14,11 +14,18 @@ import { UserContext } from "../user-context"; import CheckBox from "../components/CheckBox"; import { User } from "@gitpod/gitpod-protocol"; +export type IDEChangedTrackLocation = "workspace_list" | "workspace_start" | "preferences"; interface SelectIDEProps { updateUserContext?: boolean; + location: IDEChangedTrackLocation; } -export const updateUserIDEInfo = async (user: User, selectedIde: string, useLatestVersion: boolean) => { +export const updateUserIDEInfo = async ( + user: User, + selectedIde: string, + useLatestVersion: boolean, + location: IDEChangedTrackLocation, +) => { const additionalData = user?.additionalData ?? {}; const settings = additionalData.ideSettings ?? {}; settings.settingVersion = "2.0"; @@ -28,7 +35,10 @@ export const updateUserIDEInfo = async (user: User, selectedIde: string, useLate getGitpodService() .server.trackEvent({ event: "ide_configuration_changed", - properties: settings, + properties: { + ...settings, + location, + }, }) .then() .catch(console.error); @@ -44,7 +54,7 @@ export default function SelectIDE(props: SelectIDEProps) { }, []); const actualUpdateUserIDEInfo = async (user: User, selectedIde: string, useLatestVersion: boolean) => { - const newUserData = await updateUserIDEInfo(user, selectedIde, useLatestVersion); + const newUserData = await updateUserIDEInfo(user, selectedIde, useLatestVersion, props.location); props.updateUserContext && setUser({ ...newUserData }); }; diff --git a/components/dashboard/src/settings/SelectIDEModal.tsx b/components/dashboard/src/settings/SelectIDEModal.tsx index 3457bf6d503c2d..be582d4cb1d4a0 100644 --- a/components/dashboard/src/settings/SelectIDEModal.tsx +++ b/components/dashboard/src/settings/SelectIDEModal.tsx @@ -7,16 +7,21 @@ import { useState, useContext } from "react"; import { Link } from "react-router-dom"; import { User } from "@gitpod/gitpod-protocol"; -import SelectIDE, { updateUserIDEInfo } from "./SelectIDE"; +import SelectIDE, { IDEChangedTrackLocation, updateUserIDEInfo } from "./SelectIDE"; import Modal from "../components/Modal"; import { UserContext } from "../user-context"; -export default function (props: { onClose?: () => void }) { +export interface SelectIDEModalProps { + location: IDEChangedTrackLocation; + onClose?: () => void; +} + +export default function (props: SelectIDEModalProps) { const { user, setUser } = useContext(UserContext); const [visible, setVisible] = useState(true); const actualUpdateUserIDEInfo = async (user: User, selectedIde: string, useLatestVersion: boolean) => { - const newUserData = await updateUserIDEInfo(user, selectedIde, useLatestVersion); + const newUserData = await updateUserIDEInfo(user, selectedIde, useLatestVersion, props.location); setUser({ ...newUserData }); }; @@ -43,7 +48,7 @@ export default function (props: { onClose?: () => void }) { .

- +