import { useMemo } from 'react';
import { useAuthStore } from '../stores/authStore';

/**
 * uuid کلینیکِ محیط جاری، یا null وقتی کاربر در محیط شخصی خودش است.
 *
 * تنظیمات نوبت‌دهی per-context است و نبودِ clinic_uuid در درخواست یعنی «مطب شخصی»،
 * نه «هر برنامه‌ای که پیدا شد». پس این تفکیک باید دقیق باشد: پزشکی که هم مطب شخصی
 * دارد هم عضو کلینیک است، در محیط شخصی نباید برنامهٔ کلینیک را ببیند و برعکس.
 *
 * fallback به availableContexts فقط برای مالک کلینیک است — قبل از اولین
 * switch-context، هنوز context پر نشده ولی نقش کاربر تکلیف را روشن می‌کند.
 */
export function useClinicContext(): string | null {
  const dbUuid            = useAuthStore(s => s.dbUuid);
  const context           = useAuthStore(s => s.context);
  const primaryRole       = useAuthStore(s => s.primaryRole);
  const availableContexts = useAuthStore(s => s.availableContexts);

  return useMemo(() => {
    if (context?.type === 'clinic') return dbUuid;
    if (context?.type === 'doctor') return null;

    return primaryRole === 'clinic'
      ? availableContexts.find(c => c.type === 'clinic')?.db_uuid ?? dbUuid
      : null;
  }, [context, dbUuid, primaryRole, availableContexts]);
}
