5180 fichiers 38.5 Mo 0 téléchargements 296 vues mis à jour il y a 6 heures ui
nitro-v36-with-renderer-v36 / src / components / navigator / views / navigatorRoomCreatorStore.ts
navigatorRoomCreatorStore.ts 1 Ko Télécharger le fichier
import { createOctaneStore } from '../../../state/createOctaneStore';

const CREATE_LOCKOUT_MS = 5000;

interface RoomCreatorState {
    isCreating: boolean;
    beginCreate: () => void;
    /** The server refused the create (room limit): unlock right away instead of waiting out the lockout. */
    endCreate: () => void;
}

export const useRoomCreatorStore = createOctaneStore<RoomCreatorState>()((set) => {
    let timeoutHandle: ReturnType<typeof setTimeout> | null = null;

    return {
        isCreating: false,
        beginCreate: () => {
            if (timeoutHandle !== null) clearTimeout(timeoutHandle);

            set({ isCreating: true });

            timeoutHandle = setTimeout(() => {
                timeoutHandle = null;
                set({ isCreating: false });
            }, CREATE_LOCKOUT_MS);
        },
        endCreate: () => {
            if (timeoutHandle !== null) clearTimeout(timeoutHandle);

            timeoutHandle = null;
            set({ isCreating: false });
        }
    };
});
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