import useSWR from "swr";
// services
import { ProjectService } from "services/project";
// fetch-keys
import { PROJECT_MEMBERS } from "constants/fetch-keys";
// hooks
import useUser from "./use-user";

const projectService = new ProjectService();

const useProjectMembers = (
  workspaceSlug: string | undefined,
  projectId: string | undefined,
  fetchCondition?: boolean
) => {
  fetchCondition = fetchCondition ?? true;

  const { user } = useUser();
  // fetching project members
  const { data: members } = useSWR(
    workspaceSlug && projectId && fetchCondition ? PROJECT_MEMBERS(projectId) : null,
    workspaceSlug && projectId && fetchCondition
      ? () => projectService.fetchProjectMembers(workspaceSlug, projectId)
      : null
  );

  const hasJoined = members?.some((item: any) => item.member.id === (user as any)?.id);

  const isOwner = members?.some((item) => item.member.id === (user as any)?.id && item.role === 20);
  const isMember = members?.some((item) => item.member.id === (user as any)?.id && item.role === 15);
  const isViewer = members?.some((item) => item.member.id === (user as any)?.id && item.role === 10);
  const isGuest = members?.some((item) => item.member.id === (user as any)?.id && item.role === 5);

  return {
    members,
    hasJoined,
    isOwner,
    isMember,
    isViewer,
    isGuest,
  };
};

export default useProjectMembers;
