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 / traxeditor / useTraxEditor.ts
useTraxEditor.ts 2 Ko Télécharger le fichier
import { GetTraxEditorSongsComposer, ITraxEditorSong, TraxEditorBuySongComposer, TraxEditorDeleteSongComposer, TraxEditorErrorEvent, TraxEditorSaveSongComposer, TraxEditorSongsEvent } from '@octane/renderer';
import { useCallback, useState } from 'react';
import { registerSharedHook, useSharedHook } from '@/state/useSharedHook';
import { SendMessageComposer } from '../../api';
import { useMessageEvent } from '../events';

const useTraxEditorState = () =>
{
    const [songs, setSongs] = useState<ITraxEditorSong[]>([]);
    const [maxSongs, setMaxSongs] = useState(0);
    const [costCurrency, setCostCurrency] = useState(-1);
    const [costAmount, setCostAmount] = useState(0);
    const [lastError, setLastError] = useState(0);
    const [loaded, setLoaded] = useState(false);

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

        setMaxSongs(parser.maxSongs);
        setCostCurrency(parser.costCurrency);
        setCostAmount(parser.costAmount);
        setSongs(parser.songs);
        setLastError(0);
        setLoaded(true);
    });

    useMessageEvent<TraxEditorErrorEvent>(TraxEditorErrorEvent, (event) =>
    {
        setLastError(event.getParser().errorCode);
    });

    const requestSongs = useCallback(() => SendMessageComposer(new GetTraxEditorSongsComposer()), []);

    const buySong = useCallback((name: string) => SendMessageComposer(new TraxEditorBuySongComposer(name)), []);

    const saveSong = useCallback((songId: number, name: string, data: string) => SendMessageComposer(new TraxEditorSaveSongComposer(songId, name, data)), []);

    const deleteSong = useCallback((songId: number) => SendMessageComposer(new TraxEditorDeleteSongComposer(songId)), []);

    const clearError = useCallback(() => setLastError(0), []);

    return { songs, maxSongs, costCurrency, costAmount, lastError, loaded, requestSongs, buySong, saveSong, deleteSong, clearError };
};

export const useTraxEditor = () => useSharedHook(useTraxEditorState);

registerSharedHook(useTraxEditorState);
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