5180 fichiers 38.5 Mo 0 téléchargements 249 vues mis à jour il y a 5 heures ui
nitro-v36-with-renderer-v36 / src / hooks / navigator / navigatorFavouritesStore.ts
navigatorFavouritesStore.ts 958 o Télécharger le fichier
import { createOctaneStore } from '../../state/createOctaneStore';

export type NavigatorFavouritesState = {
    ids: Set<number>;
    /** Most favourites the server allows; 0 until it says. */
    limit: number;
};

export type NavigatorFavouritesActions = {
    setAll(roomIds: number[], limit?: number): void;
    apply(roomId: number, added: boolean): void;
};

export const useNavigatorFavouritesStore = createOctaneStore<NavigatorFavouritesState & NavigatorFavouritesActions>()((set) => ({
    ids: new Set<number>(),
    limit: 0,

    setAll: (roomIds, limit) => set((s) => ({ ids: new Set(roomIds.map(Number)), limit: limit ?? s.limit })),
    apply: (roomId, added) =>
        set((s) => {
            const id = Number(roomId);
            if (added ? s.ids.has(id) : !s.ids.has(id)) return s;
            const ids = new Set(s.ids);
            if (added) ids.add(id);
            else ids.delete(id);
            return { ids };
        })
}));
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