// @flow import React from 'react'; import { View } from 'react-native'; import typeof ProductRecord from '../records/ProductRecord'; import { compose, renderComponent } from 'recompose'; import { Map } from 'immutable'; import MapView from 'react-native-maps'; import { routeWithTitle } from '../helpers/RouteHelpers'; import { withPlaces } from '../enhancers/placeEnhancers'; import PlaceTile from '../components/PlaceTile'; import { withProductsGroupedByPlace } from '../enhancers/productsEnhancers'; import { withRegionState } from '../enhancers/mapViewEnhancers'; import typeof PlaceRecord from '../records/PlaceRecord'; type Region = { latitude: number, longitude: number, latitudeDelta: number, longitudeDelta: number, }; type Props = { places: Map, productsByPlace: Map>, location: Location, region: Region, onRegionChange: Region => void, pushRoute: () => {}, }; const PlacesMap = ({ places = Map(), productsByPlace = Map(), region, onRegionChange, pushRoute, }: Props) => { return ( {places .map((place: PlaceRecord, placeId: string) => { const products = productsByPlace.get(placeId, new Map()); const firstProduct = products.first(); if (!firstProduct) { return; } return ( { pushRoute(routeWithTitle(`/place/${placeId || ''}`, place.name)); }}> ); }) .toList()} ); }; export default compose( renderComponent, withProductsGroupedByPlace, withPlaces, withRegionState )(PlacesMap);