import { GetOfficialSongIdMessageComposer, GetSoundManager, MusicPriorities, OfficialSongIdMessageEvent } from '@nitrots/nitro-renderer'; import { FC, useEffect, useState } from 'react'; import { GetConfigurationValue, LocalizeText, ProductTypeEnum, SanitizeHtml, SendMessageComposer } from '../../../../../api'; import { Button, Column, Grid, LayoutImage, Text } from '../../../../../common'; import { useCatalog, useMessageEvent } from '../../../../../hooks'; import { CatalogHeaderView } from '../../catalog-header/CatalogHeaderView'; import { CatalogAddOnBadgeWidgetView } from '../widgets/CatalogAddOnBadgeWidgetView'; import { CatalogItemGridWidgetView } from '../widgets/CatalogItemGridWidgetView'; import { CatalogLimitedItemWidgetView } from '../widgets/CatalogLimitedItemWidgetView'; import { CatalogPurchaseWidgetView } from '../widgets/CatalogPurchaseWidgetView'; import { CatalogSpinnerWidgetView } from '../widgets/CatalogSpinnerWidgetView'; import { CatalogTotalPriceWidget } from '../widgets/CatalogTotalPriceWidget'; import { CatalogViewProductWidgetView } from '../widgets/CatalogViewProductWidgetView'; import { CatalogLayoutProps } from './CatalogLayout.types'; export const CatalogLayoutSoundMachineView: FC = props => { const { page = null } = props; const [ songId, setSongId ] = useState(-1); const [ officialSongId, setOfficialSongId ] = useState(''); const { currentOffer = null, currentPage = null } = useCatalog(); const previewSong = (previewSongId: number) => GetSoundManager().musicController?.playSong(previewSongId, MusicPriorities.PRIORITY_PURCHASE_PREVIEW, 15, 0, 0, 0); useMessageEvent(OfficialSongIdMessageEvent, event => { const parser = event.getParser(); if(parser.officialSongId !== officialSongId) return; setSongId(parser.songId); }); useEffect(() => { if(!currentOffer) return; const product = currentOffer.product; if(!product) return; if(product.extraParam.length > 0) { const id = parseInt(product.extraParam); if(id > 0) { setSongId(id); } else { setOfficialSongId(product.extraParam); SendMessageComposer(new GetOfficialSongIdMessageComposer(product.extraParam)); } } else { setOfficialSongId(''); setSongId(-1); } return () => GetSoundManager().musicController?.stop(MusicPriorities.PRIORITY_PURCHASE_PREVIEW); }, [ currentOffer ]); useEffect(() => { return () => GetSoundManager().musicController?.stop(MusicPriorities.PRIORITY_PURCHASE_PREVIEW); }, []); return ( <> { GetConfigurationValue('catalog.headers') && } { !currentOffer && <> { !!page.localization.getImage(1) && } } { currentOffer && <>
{ (currentOffer.product.productType !== ProductTypeEnum.BADGE) && <> } { (currentOffer.product.productType === ProductTypeEnum.BADGE) && }
{ currentOffer.localizationName } { songId > -1 && }
}
); };