diff --git a/components/dashboard/src/App.tsx b/components/dashboard/src/App.tsx
index 4c9b88b55765d7..11c1cb75bddfb0 100644
--- a/components/dashboard/src/App.tsx
+++ b/components/dashboard/src/App.tsx
@@ -10,7 +10,7 @@ import { Redirect, Route, Switch } from "react-router";
import { Login } from "./Login";
import { UserContext } from "./user-context";
-import { TeamsContext } from "./teams/teams-context";
+import { getSelectedTeamSlug, TeamsContext } from "./teams/teams-context";
import { ThemeContext } from "./theme-context";
import { getGitpodService } from "./service/service";
import { shouldSeeWhatsNew, WhatsNew } from "./whatsnew/WhatsNew";
@@ -179,7 +179,7 @@ function App() {
const isRoot = window.location.pathname === "/" && hash === "";
if (isRoot) {
try {
- const teamSlug = localStorage.getItem("team-selection");
+ const teamSlug = getSelectedTeamSlug();
if (teams.some((t) => t.slug === teamSlug)) {
history.push(`/t/${teamSlug}`);
}
diff --git a/components/dashboard/src/Menu.tsx b/components/dashboard/src/Menu.tsx
index aad6bca978cd8a..2db7ecb091344a 100644
--- a/components/dashboard/src/Menu.tsx
+++ b/components/dashboard/src/Menu.tsx
@@ -13,7 +13,7 @@ import { countries } from "countries-list";
import gitpodIcon from "./icons/gitpod.svg";
import { getGitpodService, gitpodHostUrl } from "./service/service";
import { UserContext } from "./user-context";
-import { TeamsContext, getCurrentTeam } from "./teams/teams-context";
+import { TeamsContext, getCurrentTeam, setSelectedTeamSlug, getSelectedTeamSlug } from "./teams/teams-context";
import getSettingsMenu from "./settings/settings-menu";
import { getAdminMenu } from "./admin/admin-menu";
import ContextMenu from "./components/ContextMenu";
@@ -92,13 +92,6 @@ export default function Menu() {
const userFullName = user?.fullName || user?.name || "...";
- {
- // updating last team selection
- try {
- localStorage.setItem("team-selection", team ? team.slug : "");
- } catch {}
- }
-
// Hide most of the top menu when in a full-page form.
const isMinimalUI = inResource(location.pathname, ["new", "teams/new", "open"]);
const isWorkspacesUI = inResource(location.pathname, ["workspaces"]);
@@ -300,7 +293,8 @@ export default function Menu() {
Personal Account
),
- active: !team,
+ onClick: () => setSelectedTeamSlug(""),
+ active: getSelectedTeamSlug() === "",
separator: true,
link: "/projects",
},
@@ -321,7 +315,7 @@ export default function Menu() {
),
- active: team && team.id === t.id,
+ active: getSelectedTeamSlug() === t.slug,
separator: true,
link: `/t/${t.slug}`,
}))
diff --git a/components/dashboard/src/teams/teams-context.tsx b/components/dashboard/src/teams/teams-context.tsx
index 1a470c6d4641f9..c5a9630dd26129 100644
--- a/components/dashboard/src/teams/teams-context.tsx
+++ b/components/dashboard/src/teams/teams-context.tsx
@@ -25,5 +25,18 @@ export function getCurrentTeam(location: Location, teams?: Team[]): Team |
if (!slug || !teams) {
return;
}
- return teams.find((t) => t.slug === slug);
+ const team = teams.find((t) => t.slug === slug);
+ if (!team) {
+ return;
+ }
+ setSelectedTeamSlug(team.slug);
+ return team;
+}
+
+export function getSelectedTeamSlug(): string {
+ return localStorage.getItem("team-selection") || "";
+}
+
+export function setSelectedTeamSlug(teamSlug?: string): void {
+ return localStorage.setItem("team-selection", teamSlug || "");
}