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 { useNavigatorData } from '../../../hooks'; import { NitroInput } from '../../../layout'; import { useRoomCreatorStore } from './navigatorRoomCreatorStore'; const MAX_VISITORS_LIST: number[] = Array.from({ length: 10 }, (_, i) => (i + 1) * 10); export const NavigatorRoomCreatorView: FC = () => { const [ name, setName ] = useState(null); const [ description, setDescription ] = useState(null); const [ category, setCategory ] = useState(null); const [ visitorsCount, setVisitorsCount ] = useState(MAX_VISITORS_LIST[0]); const [ tradesSetting, setTradesSetting ] = useState(0); const [ roomModels ] = useState(() => GetConfigurationValue('navigator.room.models') ?? []); const [ selectedModelName, setSelectedModelName ] = useState(() => { const models = GetConfigurationValue('navigator.room.models'); return (models && models.length) ? models[0].name : ''; }); const isCreating = useRoomCreatorStore(s => s.isCreating); const beginCreate = useRoomCreatorStore(s => s.beginCreate); const { categories } = useNavigatorData(); 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(useRoomCreatorStore.getState().isCreating) return; beginCreate(); SendMessageComposer(new CreateFlatMessageComposer(name, description, 'model_' + selectedModelName, Number(category), Number(visitorsCount), tradesSetting)); }; useEffect(() => { if(categories && categories.length) setCategory(categories[0].id); }, [ categories ]); return (
{ LocalizeText('navigator.createroom.roomnameinfo') } setName(event.target.value) } />
{ LocalizeText('navigator.createroom.roomdescinfo') }