import { GetRoomAdPurchaseInfoComposer, GetUserEventCatsMessageComposer, PurchaseRoomAdMessageComposer, RoomAdPurchaseInfoEvent, RoomEntryData } from '@nitrots/nitro-renderer'; import { FC, useEffect, useState } from 'react'; import { LocalizeText, SendMessageComposer } from '../../../../../api'; import { useNitroQuery } from '../../../../../api/nitro-query'; import { Button, Column, Text } from '../../../../../common'; import { useCatalog, useNavigator, useRoomPromote } from '../../../../../hooks'; import { NitroInput } from '../../../../../layout'; import { CatalogLayoutProps } from './CatalogLayout.types'; let isPurchasingAd = false; export const CatalogLayoutRoomAdsView: FC = props => { const { page = null } = props; const [ eventName, setEventName ] = useState(''); const [ eventDesc, setEventDesc ] = useState(''); const [ roomId, setRoomId ] = useState(-1); const [ extended, setExtended ] = useState(false); const [ categoryId, setCategoryId ] = useState(1); const { categories = null } = useNavigator(); const { setIsVisible = null } = useCatalog(); const { promoteInformation, isExtended, setIsExtended } = useRoomPromote(); const { data: availableRooms = [] } = useNitroQuery({ key: [ 'nitro', 'catalog', 'room-ad-purchase-info' ], request: () => new GetRoomAdPurchaseInfoComposer(), parser: RoomAdPurchaseInfoEvent, select: e => e.getParser()?.rooms ?? [], staleTime: 60_000 }); useEffect(() => { if(isExtended) { setRoomId(promoteInformation.data.flatId); setEventName(promoteInformation.data.eventName); setEventDesc(promoteInformation.data.eventDescription); setCategoryId(promoteInformation.data.categoryId); setExtended(isExtended); // This is for sending to packet setIsExtended(false); // This is from hook useRoomPromotte } }, [ isExtended, eventName, eventDesc, categoryId, promoteInformation.data, setIsExtended ]); const resetData = () => { setRoomId(-1); setEventName(''); setEventDesc(''); setCategoryId(1); setIsExtended(false); setIsVisible(false); }; const purchaseAd = () => { if(isPurchasingAd) return; isPurchasingAd = true; const pageId = page.pageId; const offerId = page.offers.length >= 1 ? page.offers[0].offerId : -1; const flatId = roomId; const name = eventName; const desc = eventDesc; const catId = categoryId; SendMessageComposer(new PurchaseRoomAdMessageComposer(pageId, offerId, flatId, name, extended, desc, catId)); resetData(); }; useEffect(() => { // TODO: someone needs to fix this for morningstar SendMessageComposer(new GetUserEventCatsMessageComposer()); }, []); return (<> { LocalizeText('roomad.catalog_header') }
{ LocalizeText('roomad.catalog_text', [ 'duration' ], [ '120' ]) }
{ LocalizeText('navigator.category') }
{ LocalizeText('roomad.catalog_name') } setEventName(event.target.value) } />
{ LocalizeText('roomad.catalog_description') }