5180 fichiers 38.5 Mo 0 téléchargements 234 vues mis à jour il y a 5 heures ui
nitro-v36-with-renderer-v36 / src / hooks / catalog / useClubOffers.ts
useClubOffers.ts 1.2 Ko Télécharger le fichier
import { ClubOfferData, GetClubOffersMessageComposer, HabboClubOffersMessageEvent } from '@octane/renderer';
import { useEffect } from 'react';
import { SendMessageComposer } from '../../api';
import { useMessageEventState } from '../events';

const offersCache = new Map<number, ClubOfferData[]>();

export const useClubOffers = (windowId: number, options: { enabled?: boolean } = {}): { data: ClubOfferData[] | null } => {
    const enabled = options.enabled !== false;

    const data = useMessageEventState<HabboClubOffersMessageEvent, ClubOfferData[] | null>(
        HabboClubOffersMessageEvent,
        (event) => {
            const parser = event.getParser();
            if (!parser || parser.windowId !== windowId) return offersCache.get(windowId) ?? null;

            const offers = parser.offers || [];
            offersCache.set(windowId, offers);
            return offers;
        },
        () => offersCache.get(windowId) ?? null
    );

    useEffect(() => {
        if (!enabled) return;
        if (offersCache.has(windowId)) return;

        SendMessageComposer(new GetClubOffersMessageComposer(windowId));
    }, [enabled, windowId]);

    return { data };
};
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