import { Button, Image } from '@tarojs/components'; import { useCallback, useState } from 'react'; import LoginDialog from '@/components/login-dialog'; import { PageUrl } from '@/constants/app'; import useUserInfo from '@/hooks/use-user-info'; import { becomePartner, getPartnerBannerClose, setPartnerBannerClose } from '@/utils/partner'; import { navigateTo } from '@/utils/route'; import { isNeedPhone } from '@/utils/user'; import './index.less'; const PREFIX = 'partner-fragment-banner'; export default function PartnerBanner() { const userInfo = useUserInfo(); const needPhone = isNeedPhone(userInfo); const isPartner = userInfo.isPartner; const [visible, setVisible] = useState(false); const [bannerClose, setBannerClose] = useState(getPartnerBannerClose()); const handlePartnerBannerClose = useCallback(e => { e.preventDefault(); e.stopPropagation(); setBannerClose(true); setPartnerBannerClose(); }, []); const handleBind = useCallback(async () => { if (!isPartner) { await becomePartner(); } await navigateTo(PageUrl.Partner); }, [isPartner]); const handleClick = useCallback(async () => { if (needPhone) { return; } await handleBind(); }, [handleBind, needPhone]); if (bannerClose) { return null; } return ( <>
{needPhone && ( )}
{visible && setVisible(false)} onSuccess={handleBind} needPhone={needPhone} />} ); }