// Copyright 2017-2026 @pezkuwi/react-hooks authors & contributors // SPDX-License-Identifier: Apache-2.0 import { useCallback, useMemo, useState } from 'react'; import { createNamedHook } from './createNamedHook.js'; import { useCacheKey } from './useCacheKey.js'; // hook for favorites with local storage function useFavoritesImpl (storageKeyBase: string): [string[], (address: string) => void] { const [getCache, setCache] = useCacheKey(storageKeyBase); const [favorites, setFavorites] = useState(() => getCache() || []); const toggleFavorite = useCallback( (address: string): void => setFavorites( (favorites) => setCache( favorites.includes(address) ? favorites.filter((a) => address !== a) : [...favorites, address] ) ), [setCache] ); return useMemo( () => [favorites, toggleFavorite], [favorites, toggleFavorite] ); } export const useFavorites = createNamedHook('useFavorites', useFavoritesImpl);