import { memo, useMemo, useRef } from '../../../lib/teact/teact'; import { getActions, withGlobal } from '../../../global'; import type { TabState } from '../../../global/types'; import type { TableAboutData } from '../common/TableAboutModal'; import buildClassName from '../../../util/buildClassName'; import renderText from '../../common/helpers/renderText'; import useContextMenuHandlers from '../../../hooks/useContextMenuHandlers'; import useCurrentOrPrev from '../../../hooks/useCurrentOrPrev'; import useLastCallback from '../../../hooks/useLastCallback'; import useOldLang from '../../../hooks/useOldLang'; import Icon from '../../common/icons/Icon'; import SafeLink from '../../common/SafeLink'; import SponsoredMessageContextMenuContainer from '../../middle/message/SponsoredContextMenuContainer'; import Button from '../../ui/Button'; import Modal from '../../ui/Modal'; import TableAboutModal from '../common/TableAboutModal'; import styles from './AboutAdsModal.module.scss'; export type OwnProps = { modal: TabState['aboutAdsModal']; }; type StateProps = { minLevelToRestrictAds?: number; }; const AboutAdsModal = ({ modal, minLevelToRestrictAds }: OwnProps & StateProps) => { const { closeAboutAdsModal } = getActions(); const moreMenuRef = useRef(); const isOpen = Boolean(modal); const renderingModal = useCurrentOrPrev(modal); const { canReport, randomId, additionalInfo, sponsorInfo, } = renderingModal || {}; const isMonetizationSharing = canReport; const renderingIsNewDesign = useCurrentOrPrev(isMonetizationSharing); const oldLang = useOldLang(); const regularAdContent = useMemo(() => { return ( <>

{oldLang('SponsoredMessageInfoScreen.Title')}

{renderText(oldLang('SponsoredMessageInfoDescription1'), ['br'])}

{renderText(oldLang('SponsoredMessageInfoDescription2'), ['br'])}

{renderText(oldLang('SponsoredMessageInfoDescription3'), ['br'])}

{renderText(oldLang('SponsoredMessageInfoDescription4'), ['br'])}

); }, [oldLang]); const { isContextMenuOpen, contextMenuAnchor, handleContextMenu, handleContextMenuClose, handleContextMenuHide, } = useContextMenuHandlers(moreMenuRef, !renderingIsNewDesign); const handleClose = useLastCallback(() => { closeAboutAdsModal(); handleContextMenuClose(); handleContextMenuHide(); }); const modalData = useMemo(() => { if (!isOpen) return undefined; const header = ( <>

{oldLang('AboutRevenueSharingAds')}

{oldLang('RevenueSharingAdsAlertSubtitle')}

); const listItemData = [ ['lock', oldLang('RevenueSharingAdsInfo1Title'), renderText(oldLang('RevenueSharingAdsInfo1Subtitle'), ['simple_markdown'])], ['revenue-split', oldLang('RevenueSharingAdsInfo2Title'), renderText(oldLang('RevenueSharingAdsInfo2Subtitle'), ['simple_markdown'])], ['nochannel', oldLang('RevenueSharingAdsInfo3Title'), renderText(oldLang('RevenueSharingAdsInfo3Subtitle', minLevelToRestrictAds), ['simple_markdown'])], ] satisfies TableAboutData; const footer = ( <>

{renderText(oldLang('RevenueSharingAdsInfo4Title'), ['simple_markdown'])}

{renderText(oldLang('RevenueSharingAdsInfo4Subtitle2', ''), ['simple_markdown'])}

); return { header, listItemData, footer, }; }, [isOpen, oldLang, handleContextMenu, minLevelToRestrictAds]); if (renderingIsNewDesign) { return ( <> {contextMenuAnchor && randomId && ( )} ); } return ( {regularAdContent} ); }; export default memo(withGlobal( (global): StateProps => { const minLevelToRestrictAds = global.appConfig?.channelRestrictAdsLevelMin; return { minLevelToRestrictAds, }; }, )(AboutAdsModal));