import { FlatList, RefreshControl, StyleSheet, Text, TouchableOpacity, View, } from "react-native"; import React, { useEffect } from "react"; import { Film } from "@/types/film"; import AsyncStorage from "@react-native-async-storage/async-storage"; import { FAVORITES_KEY } from "@/constants/keys"; import { COLORS } from "@/constants/colors"; import FilmItem from "@/components/FilmItem"; import ListEmptyComponent from "@/components/ListEmptyComponent"; import { Ionicons } from "@expo/vector-icons"; import { useFocusEffect } from "expo-router"; const Page = () => { const [favorites, setFavorites] = React.useState([]); const [refreshing, setRefreshing] = React.useState(false); const fetchFavorites = async () => { try { const favorites = await AsyncStorage.getItem(FAVORITES_KEY); if (favorites) { setFavorites(JSON.parse(favorites) as Film[]); } } catch (error) { } finally { setRefreshing(false); } }; const onRefresh = () => { setRefreshing(true); fetchFavorites(); }; const removeFavorite = async (film: Film) => { const updatedFavorites = favorites.filter( (f) => f.episode_id !== film.episode_id, ); try { setFavorites(updatedFavorites); await AsyncStorage.setItem( FAVORITES_KEY, JSON.stringify(updatedFavorites), ); } catch (error) { console.error(error); } }; const renderItem = ({ item }: { item: Film }) => ( {item.title} removeFavorite(item)}> ); useFocusEffect( React.useCallback(() => { fetchFavorites(); }, []), ); return ( item.episode_id.toString()} refreshing={refreshing} refreshControl={ } ListEmptyComponent={() => } /> ); }; export default Page; const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: COLORS.containerBackground, }, itemContainer: { flexDirection: "row", justifyContent: "space-between", alignItems: "center", backgroundColor: COLORS.itemBackground, padding: 16, marginVertical: 8, marginHorizontal: 16, borderRadius: 8, }, itemText: { fontSize: 16, color: COLORS.text, }, });