Skip to content
Snippets Groups Projects
ChoseRole.tsx 1.23 KiB
Newer Older
import React, { FC, useEffect, useState } from 'react';
Defendi Alberto's avatar
Defendi Alberto committed
import Button from '@material-ui/core/Button';
import { getRoles } from 'api/getRoles';
import { setRole } from 'api/setRole';
import { useHistory } from 'react-router-dom';
import { AuthRoutes } from 'api/routes';
 * Page that let's users decide role between available roles.
Defendi Alberto's avatar
Defendi Alberto committed
 * This is intended to use when a user has more than one role.
 * @returns ChoseRole component.
 */
export const ChoseRole: FC = () => {
  const history = useHistory();
Defendi Alberto's avatar
Defendi Alberto committed
  const [userRoles, setUserRoles] = useState<string[]>(['']);

  const choseAndForward = (role: string): void => {
    // Set role in the server.
    setRole(role);
    // Push to homepage.
    history.push(`${AuthRoutes.dashboard}${AuthRoutes.home}`);
  };
Defendi Alberto's avatar
Defendi Alberto committed

  useEffect(() => {
    getRoles().then((fetchedRoles) => setUserRoles(fetchedRoles));
  }, []);
Defendi Alberto's avatar
Defendi Alberto committed

  return (
    <div data-testid="ChoseRole">
      {userRoles ? (
        userRoles.map((role) => (
          <Button
            variant="outlined"
            color="default"
            key={role}
            onClick={() => choseAndForward(role)}
          >
            {role}
          </Button>
        ))
      ) : (
        <h1>No roles were returned.</h1>
      )}
Defendi Alberto's avatar
Defendi Alberto committed
    </div>
  );
};