5180 fichiers 38.5 Mo 0 téléchargements 259 vues mis à jour il y a 5 heures ui
nitro-v36-with-renderer-v36 / src / hooks / hotel-view / usePromoArticles.ts
usePromoArticles.ts 1.2 Ko Télécharger le fichier
import { GetPromoArticlesComposer, PromoArticleData, PromoArticlesMessageEvent } from '@octane/renderer';
import { useEffect, useState } from 'react';
import { SendMessageComposer } from '../../api';
import { PROMO_ARTICLE_MAX, PROMO_ARTICLE_REFRESH_MS } from '../../api/hotel-view/LandingViewWidgets';
import { useMessageEvent } from '../events';

/**
 * PromoArticleWidget: the news articles of the hotel view (GetPromoArticles 1827 -> PromoArticles
 * 286), asked again every ten minutes while the hotel view is shown.
 */
export const usePromoArticles = () => {
    const [articles, setArticles] = useState<PromoArticleData[]>([]);

    useMessageEvent<PromoArticlesMessageEvent>(PromoArticlesMessageEvent, (event) => {
        const parser = event.getParser();

        if (!parser) return;

        setArticles((parser.articles ?? []).slice(0, PROMO_ARTICLE_MAX));
    });

    useEffect(() => {
        SendMessageComposer(new GetPromoArticlesComposer());

        const interval = window.setInterval(() => SendMessageComposer(new GetPromoArticlesComposer()), PROMO_ARTICLE_REFRESH_MS);

        return () => window.clearInterval(interval);
    }, []);

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