()
| 7 | import { useViewSize, ViewSize } from './useViewSize'; |
| 8 | |
| 9 | const usePlusEntry = (): { |
| 10 | plusEntryFeed: MarketingCta | null; |
| 11 | plusEntryBookmark: MarketingCta | null; |
| 12 | plusEntryForYou: MarketingCta | null; |
| 13 | plusEntryAnnouncementBar: MarketingCta | null; |
| 14 | } => { |
| 15 | const { getPlusEntryData } = useBoot(); |
| 16 | const plusEntry = getPlusEntryData(); |
| 17 | const isMobile = useViewSize(ViewSize.MobileXL); |
| 18 | const shouldEvaluate = isMobile && !!plusEntry; |
| 19 | const { value: plusEntryExp } = useConditionalFeature({ |
| 20 | feature: featurePlusEntryMobile, |
| 21 | shouldEvaluate, |
| 22 | }); |
| 23 | const shouldShow = shouldEvaluate && plusEntryExp; |
| 24 | |
| 25 | return useMemo(() => { |
| 26 | const getVariantEntry = ( |
| 27 | variant: MarketingCtaVariant, |
| 28 | ): MarketingCta | null => { |
| 29 | return shouldShow && plusEntry?.variant === variant ? plusEntry : null; |
| 30 | }; |
| 31 | |
| 32 | return { |
| 33 | plusEntryFeed: getVariantEntry(MarketingCtaVariant.PlusCard), |
| 34 | plusEntryBookmark: getVariantEntry(MarketingCtaVariant.PlusBookmarkTab), |
| 35 | plusEntryForYou: getVariantEntry(MarketingCtaVariant.PlusForYouTab), |
| 36 | plusEntryAnnouncementBar: getVariantEntry( |
| 37 | MarketingCtaVariant.PlusAnnouncementBar, |
| 38 | ), |
| 39 | }; |
| 40 | }, [shouldShow, plusEntry]); |
| 41 | }; |
| 42 | |
| 43 | export default usePlusEntry; |
no test coverage detected