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 }) {
.
-
+