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 / friends / useEpicPopup.ts
useEpicPopup.ts 1.2 Ko Télécharger le fichier
import { EpicPopupMessageEvent, GetConfiguration } from '@octane/renderer';
import { useCallback, useState } from 'react';
import { useMessageEvent } from '../events';

/** The image URL of an EpicPopupMessageEvent: `${image.library.url}` and other keys resolved, blank when unusable. */
export const resolveEpicPopupImage = (imageUri: string): string => {
    const raw = (imageUri ?? '').trim();

    if (!raw) return '';

    let resolved = raw;

    try {
        resolved = GetConfiguration().interpolate(raw) || raw;
    } catch {
        resolved = raw;
    }

    return resolved.includes('${') ? '' : resolved;
};

/**
 * AIR `HabboEpicPopupView.onEpicPopupMessageEvent`: every popup replaces the one on screen (`showPopup` disposes
 * the active frame first); the close button and the header close dispose it.
 */
export const useEpicPopup = () => {
    const [imageUrl, setImageUrl] = useState<string>(null);

    useMessageEvent<EpicPopupMessageEvent>(EpicPopupMessageEvent, (event) => {
        const image = resolveEpicPopupImage(event.getParser()?.imageUri);

        if (image) setImageUrl(image);
    });

    const close = useCallback(() => setImageUrl(null), []);

    return { imageUrl, close };
};
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