Path: blob/main/components/dashboard/src/teams/JoinTeam.tsx
2501 views
/**1* Copyright (c) 2021 Gitpod GmbH. All rights reserved.2* Licensed under the GNU Affero General Public License (AGPL).3* See License.AGPL.txt in the project root for license information.4*/56import { useEffect, useMemo, useState } from "react";7import { useHistory, useLocation } from "react-router-dom";8import { useOrganizationsInvalidator } from "../data/organizations/orgs-query";9import { useDocumentTitle } from "../hooks/use-document-title";10import { organizationClient } from "../service/public-api";11import { workspacesPathMain } from "../workspaces/workspaces.routes";1213export default function JoinTeamPage() {14const orgInvalidator = useOrganizationsInvalidator();15const history = useHistory();16const location = useLocation();1718const [joinError, setJoinError] = useState<Error>();19const inviteId = useMemo(() => new URLSearchParams(location.search).get("inviteId"), [location]);2021useEffect(() => {22(async () => {23try {24if (!inviteId) {25throw new Error("This invite URL is incorrect.");26}27const response = await organizationClient.joinOrganization({ invitationId: inviteId });28orgInvalidator();2930history.push(workspacesPathMain + `?org=${response.organizationId}`);31} catch (error) {32console.error(error);33setJoinError(error);34}35})();36}, [history, inviteId, orgInvalidator]);3738useDocumentTitle("Joining Organization");3940return joinError ? <div className="mt-16 text-center text-gitpod-red">{String(joinError)}</div> : <></>;41}424344