import { CreateFlatMessageComposer, HabboClubLevelEnum } from '@nitrots/nitro-renderer'; import { FC, useEffect, useState } from 'react'; import { GetClubMemberLevel, GetConfigurationValue, IRoomModel, LocalizeText, SendMessageComposer } from '../../../api'; import { Button, Flex, Grid, LayoutCurrencyIcon, LayoutGridItem, Text } from '../../../common'; import { useNavigator } from '../../../hooks'; import { NitroInput } from '../../../layout'; let isCreatingRoom = false; let createRoomTimeout: ReturnType = null; export const NavigatorRoomCreatorView: FC<{}> = props => { const [ maxVisitorsList, setMaxVisitorsList ] = useState(null); const [ name, setName ] = useState(null); const [ description, setDescription ] = useState(null); const [ category, setCategory ] = useState(null); const [ visitorsCount, setVisitorsCount ] = useState(null); const [ tradesSetting, setTradesSetting ] = useState(0); const [ roomModels, setRoomModels ] = useState([]); const [ selectedModelName, setSelectedModelName ] = useState(''); const [ isCreating, setIsCreating ] = useState(isCreatingRoom); const { categories = null } = useNavigator(); const hcDisabled = GetConfigurationValue('hc.disabled', false); const getRoomModelImage = (name: string) => GetConfigurationValue('images.url') + `/navigator/models/model_${ name }.png`; const selectModel = (model: IRoomModel, index: number) => { if(!model || (model.clubLevel > GetClubMemberLevel())) return; setSelectedModelName(roomModels[index].name); }; const createRoom = () => { if(isCreatingRoom) return; isCreatingRoom = true; setIsCreating(true); SendMessageComposer(new CreateFlatMessageComposer(name, description, 'model_' + selectedModelName, Number(category), Number(visitorsCount), tradesSetting)); if(createRoomTimeout) clearTimeout(createRoomTimeout); createRoomTimeout = setTimeout(() => { isCreatingRoom = false; setIsCreating(false); }, 5000); }; useEffect(() => { if(!maxVisitorsList) { const list = []; for(let i = 10; i <= 100; i = i + 10) list.push(i); setMaxVisitorsList(list); setVisitorsCount(list[0]); } }, [ maxVisitorsList ]); useEffect(() => { if(categories && categories.length) setCategory(categories[0].id); }, [ categories ]); useEffect(() => { const models = GetConfigurationValue('navigator.room.models'); if(models && models.length) { setRoomModels(models); setSelectedModelName(models[0].name); } }, []); return (
{ LocalizeText('navigator.createroom.roomnameinfo') } setName(event.target.value) } />
{ LocalizeText('navigator.createroom.roomdescinfo') }