'use client';

import { useEffect, useState } from 'react';
import type { ServiceAreaKey } from '@/lib/geocode';
import {
  detectDefaultWorkerServiceArea,
  readDefaultWorkerServiceAreaSync,
} from '@/lib/workerServiceArea';

export function useDefaultWorkerServiceArea() {
  const [defaultArea, setDefaultArea] = useState<ServiceAreaKey | null>(
    () => readDefaultWorkerServiceAreaSync()
  );
  const [resolved, setResolved] = useState(() => defaultArea != null);

  useEffect(() => {
    if (resolved) return;

    let cancelled = false;

    void (async () => {
      const area = await detectDefaultWorkerServiceArea();
      if (!cancelled) {
        setDefaultArea(area);
        setResolved(true);
      }
    })();

    return () => {
      cancelled = true;
    };
  }, [resolved]);

  return { defaultArea, resolved };
}
