2026-02-01 20:40:07 +00:00
|
|
|
// Re-export all services
|
|
|
|
|
export { apiRequest } from './apiClient';
|
|
|
|
|
export { fetchListingGeoJSON, refreshListings } from './listingService';
|
|
|
|
|
export { streamListingGeoJSON, type StreamingProgress } from './streamingService';
|
|
|
|
|
export { fetchTasksForUser, fetchTaskStatus, cancelTask, clearAllTasks, type CancelTaskResponse, type ClearAllTasksResponse } from './taskService';
|
|
|
|
|
export { checkBackendHealth, type HealthStatus, type HealthCheckResult } from './healthService';
|
2026-02-22 13:29:35 +00:00
|
|
|
export { fetchUserPOIs, createPOI, updatePOI, deletePOI, triggerPOICalculation, fetchPOIDistances, fetchBulkPOIDistances } from './poiService';
|
2026-02-21 13:51:12 +00:00
|
|
|
export { fetchDecisions, setDecision, clearDecision } from './decisionService';
|
Add tappable cards, detail bottom sheet, swipe gestures, and favorites view
- Decision types, services (decisionService, listingDetailService), and index exports
- useDecisions hook with optimistic updates and Map-based state
- useListingDetail hook with session-level caching
- PhotoCarousel component using embla-carousel-react
- ListingDetail component with full property info, like/dislike buttons
- ListingDetailSheet using vaul Drawer (slide-up bottom sheet)
- SwipeablePropertyCard with @use-gesture/react and @react-spring/web
- SwipeReviewMode for mobile full-screen swipe review
- FavoritesView with virtualized liked listings and remove button
- App.tsx integration: decision state, client-side disliked filtering, detail sheet, swipe handlers
- ListView conditionally renders SwipeablePropertyCard when handlers provided
- StatsBar adds 'saved' view mode with heart icon
- Header adds liked count indicator
- New deps: vaul, embla-carousel-react, @use-gesture/react, @react-spring/web
2026-02-21 15:48:17 +00:00
|
|
|
export { fetchListingDetail } from './listingDetailService';
|