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 / useNavigatorFavourite.ts
useNavigatorFavourite.ts 1.2 Ko Télécharger le fichier
import { useCallback } from 'react';
import { localizeWithFallback, ToggleFavoriteRoom } from '../../api';
import { useNotification } from '../notification';
import { useNavigatorFavouritesStore } from './navigatorFavouritesStore';

export const useNavigatorFavourite = (roomId: number) => {
    const isFavourite = useNavigatorFavouritesStore((s) => s.ids.has(Number(roomId)));
    const { simpleAlert = null } = useNotification();

    const toggle = useCallback(() => {
        const { ids, limit } = useNavigatorFavouritesStore.getState();

        // The server ignores an add past its limit, so the star would just not light up.
        if (!isFavourite && limit > 0 && ids.size >= limit) {
            simpleAlert(
                localizeWithFallback('navigator.favouritesfull.body', `You can have at most ${limit} favourite rooms. Remove one first.`, ['limit'], [String(limit)]),
                null,
                null,
                null,
                localizeWithFallback('navigator.favouritesfull.title', 'Favourites full')
            );
            return;
        }

        ToggleFavoriteRoom(Number(roomId), isFavourite);
    }, [roomId, isFavourite, simpleAlert]);

    return { isFavourite, toggle };
};
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