/* eslint-disable promise/prefer-await-to-then */
'use client';

import { initData, isMiniAppDark, useSignal } from '@telegram-apps/sdk-react';
import { signIn, useSession } from 'next-auth/react';
import { useTheme } from 'next-themes';
import { redirect } from 'next/navigation';
import { useEffect } from 'react';

export default function Auth() {
  useTelegramTheme();
  useAuth();

  return null;
}

function useAuth() {
  const initDataUser = useSignal(initData.user);
  const { status } = useSession();

  useEffect(() => {
    if (!initDataUser?.id) return;

    if (status === 'authenticated') {
      redirect('/profile');
    }

    if (status === 'unauthenticated') {
      signIn('telegram', {
        callbackUrl: '/profile',
        redirect: false,
        telegramId: initDataUser.id,
      }).then(() => redirect('/profile'));
    }
  }, [initDataUser?.id, status]);
}

function useTelegramTheme() {
  const isDark = isMiniAppDark();
  const { setTheme } = useTheme();

  useEffect(() => {
    setTheme(isDark ? 'dark' : 'light');
  }, [isDark, setTheme]);
}
