File size: 835 Bytes
afd56bc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import { useQuery } from '@tanstack/react-query';
import { useAuth } from '@clerk/clerk-react';

export interface MeData {
  clerk_id: string;
  tier: 'free' | 'pro' | 'business';
  wizard_iterations_today: number;
  tokens_used_month: number;
  limits: {
    max_wizard_iterations: number;
    max_tokens_monthly: number;
  };
}

const API_URL = import.meta.env.VITE_API_URL ?? '';

export function useMe() {
  const { getToken } = useAuth();

  return useQuery<MeData>({
    queryKey: ['me'],
    queryFn: async () => {
      const token = await getToken();
      const res = await fetch(`${API_URL}/api/me`, {
        headers: token ? { Authorization: `Bearer ${token}` } : {},
      });
      if (!res.ok) throw new Error('Failed to fetch /api/me');
      return res.json();
    },
    staleTime: 30_000,
    retry: false,
  });
}