Skip to content

Commit 58d8381

Browse files
User Pref Editor change cleanup (#17025)
* update user in context * removing comment
1 parent eea4e82 commit 58d8381

File tree

2 files changed

+37
-24
lines changed

2 files changed

+37
-24
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ export default function Preferences() {
7676
Learn more
7777
</a>
7878
</Subheading>
79-
<SelectIDE updateUserContext={false} location="preferences" />
79+
<SelectIDE location="preferences" />
8080

8181
<ThemeSelector className="mt-12" />
8282

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

Lines changed: 36 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* See License.AGPL.txt in the project root for license information.
55
*/
66

7-
import { useContext, useEffect, useState } from "react";
7+
import { useCallback, useContext, useEffect, useState } from "react";
88
import { UserContext } from "../user-context";
99
import CheckBox from "../components/CheckBox";
1010
import { User } from "@gitpod/gitpod-protocol";
@@ -14,7 +14,6 @@ import { useUpdateCurrentUserMutation } from "../data/current-user/update-mutati
1414

1515
export type IDEChangedTrackLocation = "workspace_list" | "workspace_start" | "preferences";
1616
interface SelectIDEProps {
17-
updateUserContext?: boolean;
1817
location: IDEChangedTrackLocation;
1918
}
2019

@@ -33,27 +32,43 @@ export default function SelectIDE(props: SelectIDEProps) {
3332
user?.additionalData?.ideSettings?.useLatestVersion ?? false,
3433
);
3534

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;
35+
const actualUpdateUserIDEInfo = useCallback(
36+
async (selectedIde: string, useLatestVersion: boolean) => {
37+
const additionalData = user?.additionalData || {};
38+
const ideSettings = additionalData.ideSettings || {};
4339

44-
const newUserData = await updateUser.mutateAsync({ additionalData });
45-
props.updateUserContext && setUser({ ...newUserData });
46-
};
40+
const updates = {
41+
additionalData: {
42+
...additionalData,
43+
ideSettings: {
44+
...ideSettings,
45+
settingVersion: "2.0",
46+
defaultIde: selectedIde,
47+
useLatestVersion: useLatestVersion,
48+
},
49+
},
50+
};
51+
const newUserData = await updateUser.mutateAsync(updates);
52+
setUser(newUserData);
53+
},
54+
[setUser, updateUser, user?.additionalData],
55+
);
4756

48-
const actuallySetDefaultIde = async (value: string) => {
49-
await actualUpdateUserIDEInfo(value, useLatestVersion);
50-
setDefaultIde(value);
51-
};
57+
const actuallySetDefaultIde = useCallback(
58+
async (value: string) => {
59+
await actualUpdateUserIDEInfo(value, useLatestVersion);
60+
setDefaultIde(value);
61+
},
62+
[actualUpdateUserIDEInfo, useLatestVersion],
63+
);
5264

53-
const actuallySetUseLatestVersion = async (value: boolean) => {
54-
await actualUpdateUserIDEInfo(defaultIde, value);
55-
setUseLatestVersion(value);
56-
};
65+
const actuallySetUseLatestVersion = useCallback(
66+
async (value: boolean) => {
67+
await actualUpdateUserIDEInfo(defaultIde, value);
68+
setUseLatestVersion(value);
69+
},
70+
[actualUpdateUserIDEInfo, defaultIde],
71+
);
5772

5873
//todo(ft): find a better way to group IDEs by vendor
5974
const shouldShowJetbrainsNotice = !["code", "code-desktop"].includes(defaultIde); // a really hacky way to get just JetBrains IDEs
@@ -62,9 +77,7 @@ export default function SelectIDE(props: SelectIDEProps) {
6277
<>
6378
<div className="w-112 my-4">
6479
<SelectIDEComponent
65-
onSelectionChange={async (ide) => {
66-
await actuallySetDefaultIde(ide);
67-
}}
80+
onSelectionChange={actuallySetDefaultIde}
6881
selectedIdeOption={defaultIde}
6982
useLatest={useLatestVersion}
7083
/>

0 commit comments

Comments
 (0)