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 || ""); }