|
5 | 5 | */
|
6 | 6 |
|
7 | 7 | import { useContext, useEffect, useState } from "react";
|
8 |
| -import { getGitpodService } from "../service/service"; |
9 | 8 | import { UserContext } from "../user-context";
|
10 | 9 | import CheckBox from "../components/CheckBox";
|
11 | 10 | import { User } from "@gitpod/gitpod-protocol";
|
12 | 11 | import SelectIDEComponent from "../components/SelectIDEComponent";
|
13 | 12 | import PillLabel from "../components/PillLabel";
|
| 13 | +import { useUpdateCurrentUserMutation } from "../data/current-user/update-mutation"; |
14 | 14 |
|
15 | 15 | export type IDEChangedTrackLocation = "workspace_list" | "workspace_start" | "preferences";
|
16 | 16 | interface SelectIDEProps {
|
17 | 17 | updateUserContext?: boolean;
|
18 | 18 | location: IDEChangedTrackLocation;
|
19 | 19 | }
|
20 | 20 |
|
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 |
| - |
46 | 21 | export default function SelectIDE(props: SelectIDEProps) {
|
47 | 22 | const { user, setUser } = useContext(UserContext);
|
| 23 | + const updateUser = useUpdateCurrentUserMutation(); |
48 | 24 |
|
49 | 25 | // Only exec once when we access this component
|
50 | 26 | useEffect(() => {
|
51 | 27 | user && User.migrationIDESettings(user);
|
52 | 28 | // eslint-disable-next-line react-hooks/exhaustive-deps
|
53 | 29 | }, []);
|
54 | 30 |
|
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 }); |
57 | 45 | props.updateUserContext && setUser({ ...newUserData });
|
58 | 46 | };
|
59 | 47 |
|
60 |
| - const [defaultIde, setDefaultIde] = useState<string>(user?.additionalData?.ideSettings?.defaultIde || "code"); |
61 | 48 | const actuallySetDefaultIde = async (value: string) => {
|
62 |
| - await actualUpdateUserIDEInfo(user!, value, useLatestVersion); |
| 49 | + await actualUpdateUserIDEInfo(value, useLatestVersion); |
63 | 50 | setDefaultIde(value);
|
64 | 51 | };
|
65 | 52 |
|
66 |
| - const [useLatestVersion, setUseLatestVersion] = useState<boolean>( |
67 |
| - user?.additionalData?.ideSettings?.useLatestVersion ?? false, |
68 |
| - ); |
69 | 53 | const actuallySetUseLatestVersion = async (value: boolean) => {
|
70 |
| - await actualUpdateUserIDEInfo(user!, defaultIde, value); |
| 54 | + await actualUpdateUserIDEInfo(defaultIde, value); |
71 | 55 | setUseLatestVersion(value);
|
72 | 56 | };
|
73 | 57 |
|
|
0 commit comments