'use client'

import React, { useEffect, useState } from 'react'
import { Partner } from '../types/partner'
import { getPartner } from '../services/partner-services'
import { PartnerContext } from '../contexts/PartnerContext'

export interface PartnerProviderProps {
  referralCode: string | null
}

export default function PartnerProvider({
  referralCode,
  children,
}: React.PropsWithChildren<PartnerProviderProps>) {
  const [partner, setPartner] = useState<Partner | null>(null)
  const [loading, setLoading] = useState(true)

  useEffect(() => {
    async function fetchPartner() {
      try {
        const data = await getPartner(referralCode)
        setPartner(data)
      } catch {
        setPartner(null)
      } finally {
        setLoading(false)
      }
    }

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

  return (
    <PartnerContext.Provider value={{ partner, loading }}>
      {children}
    </PartnerContext.Provider>
  )
}
