diff options
Diffstat (limited to 'src/hooks/useFavorites.ts')
| -rw-r--r-- | src/hooks/useFavorites.ts | 35 |
1 files changed, 15 insertions, 20 deletions
diff --git a/src/hooks/useFavorites.ts b/src/hooks/useFavorites.ts index 54d77fd..619817c 100644 --- a/src/hooks/useFavorites.ts +++ b/src/hooks/useFavorites.ts @@ -1,11 +1,12 @@ -import {useCallback, useEffect, useState} from 'react'; +import {useEffect, useState} from 'react'; import {useAsyncStorage} from '@react-native-async-storage/async-storage'; +import {useStableCallback} from './useStableCallback'; export const useFavorites = () => { const favoritesStorage = useAsyncStorage('favorites'); const [favoriteAppNames, setFavoriteAppNames] = useState<string[]>([]); - const getFavoriteAppNames = useCallback(async (): Promise<string[]> => { + const getFavoriteAppNames = useStableCallback(async (): Promise<string[]> => { try { const result = await favoritesStorage.getItem(); const apps = result ? JSON.parse(result) : []; @@ -15,28 +16,22 @@ export const useFavorites = () => { console.error(err); return []; } - }, [favoritesStorage]); + }); - const refreshFavorites = useCallback(async () => { + const refreshFavorites = useStableCallback(async () => { getFavoriteAppNames().then(setFavoriteAppNames); - }, [getFavoriteAppNames]); + }); - const setFavorites = useCallback( - async (names: string[]) => { - const newNames = [...new Set(names)]; - setFavoriteAppNames(newNames); - await favoritesStorage.setItem(JSON.stringify(newNames)); - }, - [favoritesStorage], - ); + const setFavorites = useStableCallback(async (names: string[]) => { + const newNames = [...new Set(names)]; + setFavoriteAppNames(newNames); + await favoritesStorage.setItem(JSON.stringify(newNames)); + }); - const addToFavorites = useCallback( - async (packageName: string) => { - const names = await getFavoriteAppNames(); - setFavorites([...names, packageName]); - }, - [getFavoriteAppNames, setFavorites], - ); + const addToFavorites = useStableCallback(async (packageName: string) => { + const names = await getFavoriteAppNames(); + setFavorites([...names, packageName]); + }); useEffect(() => { refreshFavorites(); |
