Gift ReceiverNotFound handler

This commit is contained in:
MyNameIsBatman 2021-09-14 16:34:13 -03:00
parent d70afa28eb
commit bee5513c13
4 changed files with 37 additions and 2 deletions

View File

@ -9,6 +9,7 @@ export class CatalogEvent extends NitroEvent
public static PURCHASE_FAILED: string = 'CE_PURCHASE_FAILED'; public static PURCHASE_FAILED: string = 'CE_PURCHASE_FAILED';
public static SOLD_OUT: string = 'CE_SOLD_OUT'; public static SOLD_OUT: string = 'CE_SOLD_OUT';
public static APPROVE_NAME_RESULT: string = 'CE_APPROVE_NAME_RESULT'; public static APPROVE_NAME_RESULT: string = 'CE_APPROVE_NAME_RESULT';
public static GIFT_RECEIVER_NOT_FOUND: string = 'CE_GIFT_RECEIVER_NOT_FOUND';
public static PURCHASE_APPROVED: string = 'CE_PURCHASE_APPROVED'; public static PURCHASE_APPROVED: string = 'CE_PURCHASE_APPROVED';
public static INIT_GIFT: string = 'CE_INIT_GIFT'; public static INIT_GIFT: string = 'CE_INIT_GIFT';
public static CATALOG_RESET: string = 'CE_RESET'; public static CATALOG_RESET: string = 'CE_RESET';

View File

@ -0,0 +1,9 @@
import { CatalogEvent } from './CatalogEvent';
export class CatalogGiftReceiverNotFoundEvent extends CatalogEvent
{
constructor()
{
super(CatalogEvent.GIFT_RECEIVER_NOT_FOUND);
}
}

View File

@ -1,7 +1,8 @@
import { ApproveNameMessageEvent, CatalogPageMessageEvent, CatalogPagesListEvent, CatalogPublishedMessageEvent, GiftWrappingConfigurationEvent, HabboClubOffersMessageEvent, LimitedEditionSoldOutEvent, ProductOfferEvent, PurchaseErrorMessageEvent, PurchaseNotAllowedMessageEvent, PurchaseOKMessageEvent, SellablePetPalettesMessageEvent, UserSubscriptionEvent } from '@nitrots/nitro-renderer'; import { ApproveNameMessageEvent, CatalogPageMessageEvent, CatalogPagesListEvent, CatalogPublishedMessageEvent, GiftReceiverNotFoundEvent, GiftWrappingConfigurationEvent, HabboClubOffersMessageEvent, LimitedEditionSoldOutEvent, ProductOfferEvent, PurchaseErrorMessageEvent, PurchaseNotAllowedMessageEvent, PurchaseOKMessageEvent, SellablePetPalettesMessageEvent, UserSubscriptionEvent } from '@nitrots/nitro-renderer';
import { GuildMembershipsMessageEvent } from '@nitrots/nitro-renderer/src/nitro/communication/messages/incoming/user/GuildMembershipsMessageEvent'; import { GuildMembershipsMessageEvent } from '@nitrots/nitro-renderer/src/nitro/communication/messages/incoming/user/GuildMembershipsMessageEvent';
import { FC, useCallback } from 'react'; import { FC, useCallback } from 'react';
import { CatalogNameResultEvent, CatalogPurchaseFailureEvent } from '../../events'; import { CatalogNameResultEvent, CatalogPurchaseFailureEvent } from '../../events';
import { CatalogGiftReceiverNotFoundEvent } from '../../events/catalog/CatalogGiftReceiverNotFoundEvent';
import { CatalogPurchasedEvent } from '../../events/catalog/CatalogPurchasedEvent'; import { CatalogPurchasedEvent } from '../../events/catalog/CatalogPurchasedEvent';
import { CatalogPurchaseSoldOutEvent } from '../../events/catalog/CatalogPurchaseSoldOutEvent'; import { CatalogPurchaseSoldOutEvent } from '../../events/catalog/CatalogPurchaseSoldOutEvent';
import { dispatchUiEvent } from '../../hooks/events/ui/ui-event'; import { dispatchUiEvent } from '../../hooks/events/ui/ui-event';
@ -96,6 +97,11 @@ export const CatalogMessageHandler: FC<CatalogMessageHandlerProps> = props =>
dispatchUiEvent(new CatalogNameResultEvent(parser.result, parser.validationInfo)); dispatchUiEvent(new CatalogNameResultEvent(parser.result, parser.validationInfo));
}, []); }, []);
const onGiftReceiverNotFoundEvent = useCallback(() =>
{
dispatchUiEvent(new CatalogGiftReceiverNotFoundEvent());
}, []);
const onHabboClubOffersMessageEvent = useCallback((event: HabboClubOffersMessageEvent) => const onHabboClubOffersMessageEvent = useCallback((event: HabboClubOffersMessageEvent) =>
{ {
const parser = event.getParser(); const parser = event.getParser();
@ -168,6 +174,7 @@ export const CatalogMessageHandler: FC<CatalogMessageHandlerProps> = props =>
CreateMessageHook(GuildMembershipsMessageEvent, onGuildMembershipsMessageEvent); CreateMessageHook(GuildMembershipsMessageEvent, onGuildMembershipsMessageEvent);
CreateMessageHook(SellablePetPalettesMessageEvent, onSellablePetPalettesMessageEvent); CreateMessageHook(SellablePetPalettesMessageEvent, onSellablePetPalettesMessageEvent);
CreateMessageHook(ApproveNameMessageEvent, onApproveNameMessageEvent); CreateMessageHook(ApproveNameMessageEvent, onApproveNameMessageEvent);
CreateMessageHook(GiftReceiverNotFoundEvent, onGiftReceiverNotFoundEvent);
CreateMessageHook(HabboClubOffersMessageEvent, onHabboClubOffersMessageEvent); CreateMessageHook(HabboClubOffersMessageEvent, onHabboClubOffersMessageEvent);
CreateMessageHook(UserSubscriptionEvent, onUserSubscriptionEvent); CreateMessageHook(UserSubscriptionEvent, onUserSubscriptionEvent);
CreateMessageHook(CatalogPublishedMessageEvent, onCatalogPublishedMessageEvent); CreateMessageHook(CatalogPublishedMessageEvent, onCatalogPublishedMessageEvent);

View File

@ -29,6 +29,13 @@ export const CatalogPageGiftView: FC<{}> = props =>
const [ maxBoxIndex, setMaxBoxIndex ] = useState<number>(0); const [ maxBoxIndex, setMaxBoxIndex ] = useState<number>(0);
const [ maxRibbonIndex, setMaxRibbonIndex ] = useState<number>(0); const [ maxRibbonIndex, setMaxRibbonIndex ] = useState<number>(0);
const [ receiverNotFound, setReceiverNotFound ] = useState<boolean>(false);
useEffect(() =>
{
setReceiverNotFound(false);
}, [ receiverName ]);
useEffect(() => useEffect(() =>
{ {
if(!giftConfiguration) return; if(!giftConfiguration) return;
@ -79,11 +86,15 @@ export const CatalogPageGiftView: FC<{}> = props =>
setOfferId(castedEvent.offerId); setOfferId(castedEvent.offerId);
setIsVisible(true); setIsVisible(true);
return; return;
case CatalogEvent.GIFT_RECEIVER_NOT_FOUND:
setReceiverNotFound(true);
return;
} }
}, [ close ]); }, [ close ]);
useUiEvent(CatalogEvent.PURCHASE_SUCCESS, onCatalogEvent); useUiEvent(CatalogEvent.PURCHASE_SUCCESS, onCatalogEvent);
useUiEvent(CatalogEvent.INIT_GIFT, onCatalogEvent); useUiEvent(CatalogEvent.INIT_GIFT, onCatalogEvent);
useUiEvent(CatalogEvent.GIFT_RECEIVER_NOT_FOUND, onCatalogEvent);
const isBoxDefault = useMemo(() => const isBoxDefault = useMemo(() =>
{ {
@ -150,6 +161,12 @@ export const CatalogPageGiftView: FC<{}> = props =>
}); });
return; return;
case 'buy': case 'buy':
if(!receiverName || receiverName.length === 0)
{
setReceiverNotFound(true);
return;
}
SendMessageHook(new PurchaseFromCatalogAsGiftComposer(pageId, offerId, extraData, receiverName, message, selectedColorId, selectedBoxIndex, selectedRibbonIndex, showMyFace)); SendMessageHook(new PurchaseFromCatalogAsGiftComposer(pageId, offerId, extraData, receiverName, message, selectedColorId, selectedBoxIndex, selectedRibbonIndex, showMyFace));
return; return;
} }
@ -163,7 +180,8 @@ export const CatalogPageGiftView: FC<{}> = props =>
<NitroCardContentView className="text-black"> <NitroCardContentView className="text-black">
<div className="form-group"> <div className="form-group">
<label>{ LocalizeText('catalog.gift_wrapping.receiver') }</label> <label>{ LocalizeText('catalog.gift_wrapping.receiver') }</label>
<input type="text" className="form-control form-control-sm" value={ receiverName } onChange={ (e) => setReceiverName(e.target.value) } /> <input type="text" className={ 'form-control form-control-sm' + classNames({ ' is-invalid': receiverNotFound }) } value={ receiverName } onChange={ (e) => setReceiverName(e.target.value) } />
{ receiverNotFound && <div className="invalid-feedback">{ LocalizeText('catalog.gift_wrapping.receiver_not_found.title') }</div> }
</div> </div>
<div className="mt-2"> <div className="mt-2">
<NitroLayoutGiftCardView figure={ GetSessionDataManager().figure } userName={ GetSessionDataManager().userName } message={ message } editable={ true } onChange={ (value) => setMessage(value) } /> <NitroLayoutGiftCardView figure={ GetSessionDataManager().figure } userName={ GetSessionDataManager().userName } message={ message } editable={ true } onChange={ (value) => setMessage(value) } />