Skip to content

Commit 88e8909

Browse files
committed
dashboard fixup
1 parent 03262da commit 88e8909

File tree

1 file changed

+39
-10
lines changed

1 file changed

+39
-10
lines changed

components/dashboard/src/teams/TeamSettings.tsx

Lines changed: 39 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import { teamsService } from "../service/public-api";
2121
import { gitpodHostUrl } from "../service/service";
2222
import { useCurrentUser } from "../user-context";
2323
import { OrgSettingsPage } from "./OrgSettingsPage";
24+
import { useToast } from "../components/toasts/Toasts";
2425

2526
export default function TeamSettingsPage() {
2627
const user = useCurrentUser();
@@ -33,21 +34,31 @@ export default function TeamSettingsPage() {
3334
const updateOrg = useUpdateOrgMutation();
3435
const { data: settings, isLoading } = useOrgSettingsQuery();
3536
const updateTeamSettings = useUpdateOrgSettingsMutation();
37+
const [defaultWorkspaceImage, setDefaultWorkspaceImage] = useState(settings?.defaultWorkspaceImage ?? "");
38+
const { toast } = useToast();
3639

3740
const handleUpdateTeamSettings = useCallback(
38-
(newSettings: Partial<OrganizationSettings>) => {
41+
async (newSettings: Partial<OrganizationSettings>) => {
3942
if (!org?.id) {
4043
throw new Error("no organization selected");
4144
}
4245
if (!org.isOwner) {
4346
throw new Error("no organization settings change permission");
4447
}
45-
updateTeamSettings.mutate({
46-
...settings,
47-
...newSettings,
48-
});
48+
try {
49+
await updateTeamSettings.mutateAsync({
50+
...settings,
51+
...newSettings,
52+
});
53+
if (newSettings.defaultWorkspaceImage) {
54+
toast("Default workspace image has been updated.");
55+
}
56+
} catch (error) {
57+
console.error(error);
58+
toast(error.message || "Oh no, there was a problem with our service.");
59+
}
4960
},
50-
[updateTeamSettings, org?.id, org?.isOwner, settings],
61+
[updateTeamSettings, org?.id, org?.isOwner, settings, toast],
5162
);
5263

5364
const close = () => setModal(false);
@@ -132,8 +143,14 @@ export default function TeamSettingsPage() {
132143
Update Organization
133144
</Button>
134145
)}
146+
</form>
135147

148+
<form onSubmit={() => handleUpdateTeamSettings({ defaultWorkspaceImage })}>
136149
<Heading2 className="pt-12">Collaboration & Sharing</Heading2>
150+
<Subheading className="max-w-2xl">
151+
Choose which workspace images you want to use for your workspaces.
152+
</Subheading>
153+
137154
<CheckboxInputField
138155
label="Workspace Sharing"
139156
hint="Allow workspaces created within an Organization to share the workspace with any authenticated user."
@@ -145,13 +162,25 @@ export default function TeamSettingsPage() {
145162
<Heading2 className="pt-12">Workspace Settings</Heading2>
146163
<TextInputField
147164
label="Default Image"
148-
hint="Default image of organization workspaces"
149-
value={settings?.defaultWorkspaceImage ?? ""}
150-
onChange={(value) => handleUpdateTeamSettings({ defaultWorkspaceImage: value })}
165+
// TODO: ECR is dedicated only now
166+
// TODO: Provide document links
167+
hint="Use any workspace image from Gitpod, or any image from your private ECR registry, e.g. <xyz>.amazonaws.com/<your-image-name:tag>. "
168+
value={defaultWorkspaceImage}
169+
onChange={setDefaultWorkspaceImage}
151170
disabled={isLoading || !org?.isOwner}
152171
/>
153-
</form>
154172

173+
{org?.isOwner && (
174+
<Button
175+
htmlType="submit"
176+
size="block"
177+
className="mt-4"
178+
disabled={!org.isOwner || defaultWorkspaceImage.trim() === ""}
179+
>
180+
Save
181+
</Button>
182+
)}
183+
</form>
155184
{user?.organizationId !== org?.id && org?.isOwner && (
156185
<>
157186
<Heading2 className="pt-12">Delete Organization</Heading2>

0 commit comments

Comments
 (0)