Skip to content

Commit 896ff38

Browse files
committed
use useUpdateCurrentUserMutation
1 parent b5668a6 commit 896ff38

File tree

1 file changed

+18
-34
lines changed

1 file changed

+18
-34
lines changed

components/dashboard/src/user-settings/SelectIDE.tsx

Lines changed: 18 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -5,69 +5,53 @@
55
*/
66

77
import { useContext, useEffect, useState } from "react";
8-
import { getGitpodService } from "../service/service";
98
import { UserContext } from "../user-context";
109
import CheckBox from "../components/CheckBox";
1110
import { User } from "@gitpod/gitpod-protocol";
1211
import SelectIDEComponent from "../components/SelectIDEComponent";
1312
import PillLabel from "../components/PillLabel";
13+
import { useUpdateCurrentUserMutation } from "../data/current-user/update-mutation";
1414

1515
export type IDEChangedTrackLocation = "workspace_list" | "workspace_start" | "preferences";
1616
interface SelectIDEProps {
1717
updateUserContext?: boolean;
1818
location: IDEChangedTrackLocation;
1919
}
2020

21-
export const updateUserIDEInfo = async (
22-
user: User,
23-
selectedIde: string,
24-
useLatestVersion: boolean,
25-
location: IDEChangedTrackLocation,
26-
) => {
27-
const additionalData = user?.additionalData ?? {};
28-
const settings = additionalData.ideSettings ?? {};
29-
settings.settingVersion = "2.0";
30-
settings.defaultIde = selectedIde;
31-
settings.useLatestVersion = useLatestVersion;
32-
additionalData.ideSettings = settings;
33-
getGitpodService()
34-
.server.trackEvent({
35-
event: "ide_configuration_changed",
36-
properties: {
37-
...settings,
38-
location,
39-
},
40-
})
41-
.then()
42-
.catch(console.error);
43-
return getGitpodService().server.updateLoggedInUser({ additionalData });
44-
};
45-
4621
export default function SelectIDE(props: SelectIDEProps) {
4722
const { user, setUser } = useContext(UserContext);
23+
const updateUser = useUpdateCurrentUserMutation();
4824

4925
// Only exec once when we access this component
5026
useEffect(() => {
5127
user && User.migrationIDESettings(user);
5228
// eslint-disable-next-line react-hooks/exhaustive-deps
5329
}, []);
5430

55-
const actualUpdateUserIDEInfo = async (user: User, selectedIde: string, useLatestVersion: boolean) => {
56-
const newUserData = await updateUserIDEInfo(user, selectedIde, useLatestVersion, props.location);
31+
const [defaultIde, setDefaultIde] = useState<string>(user?.additionalData?.ideSettings?.defaultIde || "code");
32+
const [useLatestVersion, setUseLatestVersion] = useState<boolean>(
33+
user?.additionalData?.ideSettings?.useLatestVersion ?? false,
34+
);
35+
36+
const actualUpdateUserIDEInfo = async (selectedIde: string, useLatestVersion: boolean) => {
37+
const additionalData = user?.additionalData ?? {};
38+
const settings = additionalData.ideSettings ?? {};
39+
settings.settingVersion = "2.0";
40+
settings.defaultIde = selectedIde;
41+
settings.useLatestVersion = useLatestVersion;
42+
additionalData.ideSettings = settings;
43+
44+
const newUserData = await updateUser.mutateAsync({ additionalData });
5745
props.updateUserContext && setUser({ ...newUserData });
5846
};
5947

60-
const [defaultIde, setDefaultIde] = useState<string>(user?.additionalData?.ideSettings?.defaultIde || "code");
6148
const actuallySetDefaultIde = async (value: string) => {
62-
await actualUpdateUserIDEInfo(user!, value, useLatestVersion);
49+
await actualUpdateUserIDEInfo(value, useLatestVersion);
6350
setDefaultIde(value);
6451
};
6552

66-
const [useLatestVersion, setUseLatestVersion] = useState<boolean>(
67-
user?.additionalData?.ideSettings?.useLatestVersion ?? false,
68-
);
6953
const actuallySetUseLatestVersion = async (value: boolean) => {
70-
await actualUpdateUserIDEInfo(user!, defaultIde, value);
54+
await actualUpdateUserIDEInfo(defaultIde, value);
7155
setUseLatestVersion(value);
7256
};
7357

0 commit comments

Comments
 (0)