'use client';

import { useEffect } from 'react';
import { useAuthStore } from '@/lib/auth/store';
import {
  cacheAuthDeviceId,
  readCachedAuthDeviceId,
} from '@/lib/firebase/authDeviceId';
import { warmupFcmForAuth } from '@/lib/firebase/messaging';

/** Pre-registers FCM, requests permission, and caches device_id on auth screens. */
export default function FcmAuthWarmup() {
  useEffect(() => {
    let active = true;

    void (async () => {
      const sessionDeviceId = readCachedAuthDeviceId();
      if (sessionDeviceId) {
        const pendingLogin = useAuthStore.getState().pendingLogin;
        if (pendingLogin && !pendingLogin.device_id) {
          useAuthStore.getState().setPendingLogin({
            ...pendingLogin,
            device_id: sessionDeviceId,
          });
        }
        return;
      }

      const result = await warmupFcmForAuth();
      if (!active || !result.token) {
        return;
      }

      cacheAuthDeviceId(result.token);

      const pendingLogin = useAuthStore.getState().pendingLogin;
      if (pendingLogin && pendingLogin.device_id !== result.token) {
        useAuthStore.getState().setPendingLogin({
          ...pendingLogin,
          device_id: result.token,
        });
      }
    })();

    return () => {
      active = false;
    };
  }, []);

  return null;
}
