5180 fichiers 38.5 Mo 0 téléchargements 262 vues mis à jour il y a 5 heures ui
nitro-v36-with-renderer-v36 / src / hooks / hotel-view / useCommunityGoalEarnedPrizes.ts
useCommunityGoalEarnedPrizes.ts 1.3 Ko Télécharger le fichier
import {
    CommunityGoalEarnedPrizesMessageEvent,
    GetCommunityGoalEarnedPrizesMessageComposer,
    PrizeData,
    RedeemCommunityGoalPrizeMessageComposer
} from '@octane/renderer';
import { useCallback, useEffect, useState } from 'react';
import { SendMessageComposer } from '../../api';
import { useMessageEvent } from '../events';

/**
 * The prizes of finished community goals (GetCommunityGoalEarnedPrizes 2688 ->
 * CommunityGoalEarnedPrizes 3319) and their redeem (RedeemCommunityGoalPrize 90, answered with the
 * list that is left). The redeem button stays disabled until that answer.
 */
export const useCommunityGoalEarnedPrizes = () => {
    const [prizes, setPrizes] = useState<PrizeData[]>([]);
    const [redeeming, setRedeeming] = useState(0);

    useMessageEvent<CommunityGoalEarnedPrizesMessageEvent>(CommunityGoalEarnedPrizesMessageEvent, (event) => {
        setPrizes(event.getParser()?.prizes ?? []);
        setRedeeming(0);
    });

    const redeem = useCallback((communityGoalId: number) => {
        setRedeeming(communityGoalId);
        SendMessageComposer(new RedeemCommunityGoalPrizeMessageComposer(communityGoalId));
    }, []);

    useEffect(() => {
        SendMessageComposer(new GetCommunityGoalEarnedPrizesMessageComposer());
    }, []);

    return { prizes, redeeming, redeem };
};
15Sujets
1Dépôts
20Membres
2En ligne
Profile
Inscrit
Dernière visite
Messages
0
Votes positifs
0
Votes négatifs
0

Nous utilisons des cookies pour assurer le bon fonctionnement du site et améliorer votre expérience. en savoir plus

Autoriser