import * as React from "react"; import { Spinner } from "@applicaster/zapp-react-native-ui-components/Components/Spinner"; import { favoritesListener, getAllFavorites, } from "@applicaster/zapp-react-native-bridge/Favorites"; import { FavoritesComponent } from "./FavoritesComponent"; const createFeed = (entry: ZappEntry[]): ZappFeed => ({ id: "fav", type: { value: "feed" }, title: "Favorites", entry, }); type Props = { screenData: { ui_components: [{ id: string }]; }; }; export function Favorites({ screenData }: Props) { const [favouritesFeed, setFavouritesFeed] = React.useState>(null); let disposeHandler; const fetchFavourites = async (newFavorites = [], dispose = null) => { if (dispose && !disposeHandler) { disposeHandler = dispose; } if (newFavorites && newFavorites.length !== 0) { setFavouritesFeed(createFeed(newFavorites)); } else { const favorites = await getAllFavorites(); setFavouritesFeed(createFeed(favorites)); } }; React.useEffect(() => { favoritesListener.on("FAVORITES_CHANGED", fetchFavourites); fetchFavourites(); return () => { if (disposeHandler) { disposeHandler({}); } }; }, []); if (!favouritesFeed) { return ; } const component = screenData?.ui_components?.[0]; return ( ); }