import { useMemo } from 'react'; import { Virtuoso } from 'react-virtuoso'; import { Heart, X } from 'lucide-react'; import { PropertyCard } from './PropertyCard'; import type { GeoJSONFeatureCollection, DecisionType } from '@/types'; interface FavoritesViewProps { listingData: GeoJSONFeatureCollection; getDecision: (listingId: number, listingType?: string) => DecisionType | undefined; onSelectListing?: (id: number) => void; onRemoveFavorite?: (id: number, listingType: 'RENT' | 'BUY') => void; } function getListingId(url: string): number { const parts = url.split('/'); return parseInt(parts[parts.length - 1], 10); } export function FavoritesView({ listingData, getDecision, onSelectListing, onRemoveFavorite }: FavoritesViewProps) { const favorites = useMemo(() => { return listingData.features.filter((f) => { const id = f.properties.id ?? getListingId(f.properties.url); const type = f.properties.listing_type === 'BUY' ? 'BUY' : 'RENT'; return getDecision(id, type) === 'liked'; }); }, [listingData.features, getDecision]); if (favorites.length === 0) { return (
Swipe right or tap the heart button on listings you like