5180 fichiers 38.5 Mo 0 téléchargements 270 vues mis à jour il y a 5 heures ui
nitro-v36-with-renderer-v36 / src / hooks / soundboard / soundboardFavorites.ts
soundboardFavorites.ts 1.1 Ko Télécharger le fichier
const STORAGE_KEY = 'octane.soundboard.favorites';
const MAX_FAVORITES = 100;

export const normalizeFavoriteIds = (input: unknown): number[] => {
    if (!Array.isArray(input)) return [];

    const ids: number[] = [];

    for (const value of input) {
        if (typeof value !== 'number' || !Number.isInteger(value) || value <= 0 || ids.includes(value)) continue;

        ids.push(value);
        if (ids.length >= MAX_FAVORITES) break;
    }

    return ids;
};

export const toggleFavoriteId = (ids: number[], soundId: number): number[] =>
    ids.includes(soundId) ? ids.filter((id) => id !== soundId) : normalizeFavoriteIds([...ids, soundId]);

export const loadFavoriteIds = (): number[] => {
    try {
        return normalizeFavoriteIds(JSON.parse(window.localStorage.getItem(STORAGE_KEY) ?? '[]'));
    } catch {
        return [];
    }
};

export const saveFavoriteIds = (ids: number[]): void => {
    try {
        window.localStorage.setItem(STORAGE_KEY, JSON.stringify(ids));
    } catch {
        // Storage can be unavailable (private mode, blocked site data); favourites then last the session.
    }
};
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