import type { Vendor } from '@platform-modules/commerce-marketplace'
import { useMarketplaceContext } from './MarketplaceProvider.js'
import { reviveOptionalVendor } from './revive.js'
import { useAsyncResource } from './useAsyncResource.js'

export function useVendorProfile(seed?: { initialData?: Vendor | null }): {
  vendor: Vendor | null
  loading: boolean
  error: Error | null
  reload: () => void
} {
  const { client } = useMarketplaceContext('useVendorProfile')
  const key = 'profile'
  const fetcher = async () => reviveOptionalVendor(await client.getVendorProfile())
  const { data, loading, error, reload } = useAsyncResource<Vendor | null>(fetcher, key, seed)
  return { vendor: data, loading, error, reload }
}
