Events Hooks

React Query hooks for managing events.

useEvents

Fetch a list of events:

import { useEvents } from '@meaple/react-query'
 
function EventsList() {
  const { data, isLoading, error } = useEvents({
    page: 1,
    limit: 20
  })
 
  if (isLoading) return <div>Loading...</div>
  if (error) return <div>Error: {error.message}</div>
 
  return (
    <div>
      {data?.map(event => (
        <div key={event.id}>{event.name}</div>
      ))}
    </div>
  )
}

useEventTickets

Get tickets for a specific event:

import { useEventTickets } from '@meaple/react-query'
 
function EventTickets({ eventId }: { eventId: string }) {
  const { data: tickets, isLoading } = useEventTickets(eventId)
 
  if (isLoading) return <div>Loading tickets...</div>
 
  return (
    <div>
      {tickets?.map(ticket => (
        <div key={ticket.id}>
          {ticket.name} - ${ticket.price}
        </div>
      ))}
    </div>
  )
}

useEventProducts

Fetch products for an event:

import { useEventProducts } from '@meaple/react-query'
 
function EventProducts({ eventId }: { eventId: string }) {
  const { data: products, isLoading } = useEventProducts(eventId)
 
  return (
    <div>
      {products?.map(product => (
        <div key={product.id}>
          {product.name} - ${product.price}
        </div>
      ))}
    </div>
  )
}

useUserEventTickets

Get tickets for a user’s event:

import { useUserEventTickets } from '@meaple/react-query'
 
function MyEventTickets({ eventId }: { eventId: string }) {
  const { data: tickets } = useUserEventTickets(eventId)
 
  return (
    <div>
      <h2>My Tickets</h2>
      {tickets?.map(ticket => (
        <div key={ticket.id}>
          Ticket #{ticket.id} - {ticket.status}
        </div>
      ))}
    </div>
  )
}

useChannelEvent

Fetch event by channel and slug:

import { useChannelEvent } from '@meaple/react-query'
 
function ChannelEvent({ channelSlug, eventSlug }) {
  const { data: event, isLoading } = useChannelEvent(
    channelSlug,
    eventSlug
  )
 
  if (isLoading) return <div>Loading...</div>
 
  return (
    <div>
      <h1>{event?.name}</h1>
      <p>{event?.description}</p>
    </div>
  )
}

Hook Options

All hooks accept React Query options:

const { data } = useEvents(
  { page: 1, limit: 20 },
  {
    staleTime: 5 * 60 * 1000,
    cacheTime: 10 * 60 * 1000,
    refetchOnWindowFocus: false,
    retry: 3,
  }
);