import { OpenPetPackageMessageComposer, RoomObjectCategory, RoomSessionPetPackageEvent } from '@nitrots/nitro-renderer'; import { useState } from 'react'; import { GetRoomEngine, LocalizeText, SendMessageComposer } from '../../../api'; import { useRoomSessionManagerEvent } from '../../events'; const usePetPackageWidgetState = () => { const [ isVisible, setIsVisible ] = useState(false); const [ objectId, setObjectId ] = useState(-1); const [ objectType, setObjectType ] = useState(''); const [ petName, setPetName ] = useState(''); const [ errorResult, setErrorResult ] = useState(''); const onClose = () => { setErrorResult(''); setPetName(''); setObjectType(''); setObjectId(-1); setIsVisible(false); } const onConfirm = () => { SendMessageComposer(new OpenPetPackageMessageComposer(objectId, petName)); } const onChangePetName = (petName: string) => { setPetName(petName); if (errorResult.length > 0) setErrorResult(''); } const getErrorResult = (errorCode: number) => { if (!errorCode || errorCode === 0) return; switch(errorCode) { case 1: return setErrorResult(LocalizeText('catalog.alert.petname.long')); case 2: return setErrorResult(LocalizeText('catalog.alert.petname.short')); case 3: return setErrorResult(LocalizeText('catalog.alert.petname.chars')); case 4: return setErrorResult(LocalizeText('catalog.alert.petname.bobba')); } } useRoomSessionManagerEvent(RoomSessionPetPackageEvent.RSOPPE_OPEN_PET_PACKAGE_REQUESTED, event => { if (!event) return; const roomObject = GetRoomEngine().getRoomObject(event.session.roomId, event.objectId, RoomObjectCategory.FLOOR); setObjectId(event.objectId); setObjectType(roomObject.type); setIsVisible(true); }); useRoomSessionManagerEvent(RoomSessionPetPackageEvent.RSOPPE_OPEN_PET_PACKAGE_RESULT, event => { if (!event) return; if (event.nameValidationStatus === 0) onClose(); if (event.nameValidationStatus !== 0) getErrorResult(event.nameValidationStatus); }); return { isVisible, errorResult, petName, objectType, onChangePetName, onConfirm, onClose }; } export const usePetPackageWidget = usePetPackageWidgetState;