import useSWR from "swr";
// services
import workspaceService from "services/workspace.service";
// fetch-keys
import { WORKSPACE_MEMBERS } from "constants/fetch-keys";
// hooks
import useUser from "./use-user";

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

  const { user } = useUser();

  const { data: workspaceMembers, error: workspaceMemberErrors } = useSWR(
    workspaceSlug && fetchCondition ? WORKSPACE_MEMBERS(workspaceSlug) : null,
    workspaceSlug && fetchCondition ? () => workspaceService.workspaceMembers(workspaceSlug) : null
  );

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

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

  return {
    workspaceMembers,
    workspaceMemberErrors,
    hasJoined,
    isOwner,
    isMember,
    isViewer,
    isGuest,
  };
};

export default useWorkspaceMembers;