import { useAuth } from '@clerk/nextjs';
import { usePathname } from 'next/navigation';
import { useEffect } from 'react';

import { useStores } from '@/app/(root)/AppProviders';
import { ModalTypes } from '@/components/modal/constants/ModalTypes';
import { useModalContext } from '@/context/ModalContext';

/**
 * Opens the Remix permission modal for signed in users who have not yet
 * confirmed a selection
 */
export default function useRemixPermissionModal() {
  const { isSignedIn } = useAuth();

  const { session } = useStores();

  const pathname = usePathname();

  const { openModal } = useModalContext();

  const needsRemixPermissionSet =
    session.sessionIsLoaded &&
    session.userConfigIsLoaded &&
    isSignedIn &&
    session.hasSetRemixPerm === false &&
    pathname !== '/home' &&
    !session.roles?.['is_day_zero_user'];

  useEffect(() => {
    if (pathname !== '/home' && needsRemixPermissionSet) {
      const timeout = setTimeout(() => {
        openModal(ModalTypes.REMIX_PERMISSION);
      }, 500);
      return () => {
        clearTimeout(timeout);
      };
    }
  }, [pathname, needsRemixPermissionSet, openModal]);
}
