diff --git a/components/layout/header/HeaderBanner.tsx b/components/layout/header/HeaderBanner.tsx index 16b57a6..7a5ca64 100644 --- a/components/layout/header/HeaderBanner.tsx +++ b/components/layout/header/HeaderBanner.tsx @@ -1,5 +1,4 @@ import { useCallback } from 'react'; -import classNames from 'classnames'; import Link from 'next/link'; import { useRouter } from 'next/router'; import type { MouseEvent, ReactElement } from 'react'; @@ -10,20 +9,18 @@ import isNotEmptyString from '@/lib/common/helper/isNotEmptyString'; import useLocalStorage from '@/lib/common/hooks/useLocalStorage'; import type { Banner } from '@/types/payload/payload-types'; -const HeaderBanner = (): ReactElement => { +const HeaderBannerContent = ({ + bannerData: { + id, + isActive, + bannerText, + bannerLink, + textColor, + backgroundColor, + }, +}: { bannerData: Banner }): ReactElement | null => { - const { locale } = useRouter(); - const { data: bannerData } = useSWR(`/api/banner?lang=${locale}`, fetcher, { keepPreviousData: true }); - - const isBannerActive = bannerData ? bannerData.isActive : false; - const bannerId = bannerData ? bannerData.id : ''; - const bannerText = bannerData ? bannerData.bannerText : ''; - const bannerLink = bannerData ? bannerData.bannerLink : ''; - const bannerColor = bannerData ? bannerData.backgroundColor : '#000000'; - const bannerTextColor = bannerData ? bannerData.textColor : '#ffffff'; - - const [hasDismissedBanner, setDismissedBanner] = useLocalStorage(`header_${bannerId}_dismissed`, false); - const isBannerVisible = isBannerActive && !hasDismissedBanner; + const [hasDismissedBanner, setDismissedBanner] = useLocalStorage(`header_${id}_dismissed`, false); const onDismissClick = useCallback((event: MouseEvent) => { event.preventDefault(); @@ -31,6 +28,10 @@ const HeaderBanner = (): ReactElement => { setDismissedBanner(true); }, [setDismissedBanner]); + if (!isActive || hasDismissedBanner) { + return null; + } + const content = (
@@ -42,18 +43,19 @@ const HeaderBanner = (): ReactElement => { return (
{isNotEmptyString(bannerLink) ? {content} : content}
); }; +const HeaderBanner = (): ReactElement | null => { + const { locale } = useRouter(); + const { data: bannerData } = useSWR(`/api/banner?lang=${locale}`, fetcher, { keepPreviousData: true }); + + return bannerData === undefined ? null : ; +}; + export default HeaderBanner;