import { useCallback, useMemo } from 'react';

import { useStores } from '@/app/(root)/AppProviders';

export function usePromo(id: string) {
  const { promo: promoStore } = useStores();

  const promo = useMemo(() => promoStore.getPromo(id), [id, promoStore]);
  const impression = useCallback(() => {
    promoStore.impression(id);
  }, [id, promoStore]);
  const dismiss = useCallback(
    (params?: Parameters<(typeof promoStore)['dismiss']>[1]) => {
      promoStore.dismiss(id, params);
    },
    [id, promoStore]
  );

  return useMemo(
    () => ({
      dismissed: !!promo.dismissed,
      impression,
      dismiss,
    }),
    [promo.dismissed, impression, dismiss]
  );
}
