"use client";

import { createContext, useContext, ReactNode } from "react";
import { useQuery } from "convex/react";
import { api } from "@/convex/_generated/api";

interface UserTokenContextValue {
  token: string | null | undefined;
  isLoading: boolean;
}

const UserTokenContext = createContext<UserTokenContextValue>({
  token: null,
  isLoading: true,
});

export function UserTokenProvider({ children }: { children: ReactNode }) {
  // Fetch and cache the user's token
  const token = useQuery(api.users.getMyToken);

  return (
    <UserTokenContext.Provider value={{ token, isLoading: token === undefined }}>
      {children}
    </UserTokenContext.Provider>
  );
}

export function useUserToken() {
  return useContext(UserTokenContext);
}
