'use client'

import React, { useEffect, useState } from 'react'
import { Agent } from '../types/agent'
import { getAgent } from '../services/agent-services'
import { AgentContext } from '../contexts/AgentContext'

export interface AgentProviderProps {
  referralCode: string | null
}

export default function AgentProvider({
  referralCode,
  children,
}: React.PropsWithChildren<AgentProviderProps>) {
  const [agent, setAgent] = useState<Agent | null>(null)
  const [loading, setLoading] = useState(true)

  useEffect(() => {
    async function fetchAgent() {
      try {
        const data = await getAgent(referralCode)
        setAgent(data)
      } catch {
        setAgent(null)
      } finally {
        setLoading(false)
      }
    }

    if (referralCode) {
      fetchAgent()
    }
  }, [referralCode])

  return (
    <AgentContext.Provider value={{ agent, loading }}>
      {children}
    </AgentContext.Provider>
  )
}
