import { useState } from "react"; import { Link, useNavigate, useParams } from "react-router-dom"; import { useAppSelector } from "../store"; import { userService } from "../services"; import Icon from "./Icon"; import Dropdown from "./common/Dropdown"; import CreateWorkspaceDialog from "./CreateWorkspaceDialog"; interface State { showCreateWorkspaceDialog: boolean; } const Header: React.FC = () => { const params = useParams(); const navigate = useNavigate(); const { user } = useAppSelector((state) => state.user); const { workspaceList } = useAppSelector((state) => state.workspace); const [state, setState] = useState({ showCreateWorkspaceDialog: false, }); const activedWorkspace = workspaceList.find((workspace) => workspace.name === params.workspaceName ?? ""); const handleCreateWorkspaceButtonClick = () => { setState({ ...state, showCreateWorkspaceDialog: true, }); }; const handleSignOutButtonClick = async () => { await userService.doSignOut(); navigate("/user/auth"); }; return ( <>
Corgi {workspaceList.length > 0 && activedWorkspace !== undefined && ( <> / {activedWorkspace?.name} } actions={ <> {workspaceList.map((workspace) => { return ( {workspace.name} {workspace.name === activedWorkspace?.name && } ); })}
} actionsClassName="!w-48 !-left-4" >
)}
{user ? ( {user?.name} } actions={ <> My Account } actionsClassName="!w-40" > ) : ( navigate("/user/auth")}> Sign in )}
{state.showCreateWorkspaceDialog && ( { setState({ ...state, showCreateWorkspaceDialog: false, }); }} onConfirm={(workspace: Workspace) => { setState({ ...state, showCreateWorkspaceDialog: false, }); navigate(`/${workspace.name}`); }} /> )} ); }; export default Header;