Advertisement
Guest User

Untitled

a guest
Aug 23rd, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.96 KB | None | 0 0
  1. const LandmarkRestaurantRows = connect(
  2. mapStateToProps,
  3. dispatch => bindActionCreators({
  4. onRestaurantViewed: addRestaurantToQueuedDagImpressions,
  5. }, dispatch)
  6. )(
  7. ({restaurants, onRestaurantViewed}) => restaurants.map(restaurant => (
  8. <Restaurant {...restaurant} onRestaurantViewed={onRestaurantViewed} />
  9. ))
  10. );
  11.  
  12. const LandmarkPagination = connect(
  13. state => ({
  14. page: state.currentPage,
  15. }),
  16. dispatch => bindActionCreators({
  17. onChange: (page) => {
  18. loadPage(page);
  19. clearCorrelationId();
  20. }
  21. }, dispatch)
  22. )(
  23. ({page, onChange}) => (
  24. <div>
  25. <span>{page}</span>
  26. <button onClick={() => onChange(page + 1)}>
  27. next
  28. </button>
  29. </div>
  30. )
  31. )
  32.  
  33. const selectSearchResultsForLandmarkPage = (state, source) => {
  34. switch(source) {
  35. case 'main':
  36. return state.restaurantsNearbyLandmark;
  37. case 'nearby':
  38. return state.nearbyResults;
  39. }
  40. throw new Error(`unknown source "${source}" provided.`);
  41. }
  42.  
  43. const DagAnalytics = connect(
  44. (state, ownProps) => ({
  45. correlationId: state.dag.correlationId,
  46. results: selectSearchResultsForLandmarkPage(state, ownProps.source),
  47. seenRestaurants: state.dag.seenRestaurants,
  48. }),
  49. dispatch => bindActionCreators({
  50. sendListEvent,
  51. queueImpressionEvent,
  52. }, dispatch)
  53. )(
  54. ({name, correlationId, results, seenRestaurants, sendListEvent, sendImpressionEvent}) => {
  55. useEffect(() => sendListEvent(name, results), [name, results.restaurants]);
  56. useEffect(() => queueImpressionEvent(name, seenRestaurants), [name, seenRestaurants]);
  57. return null;
  58. }
  59. )
  60.  
  61. const App = () => (
  62. <StandardPage>
  63. <LandmarkRestaurantRows />
  64. <LandmarkPagination />
  65. <DagAnalytics name={'landmark-page-results'} source={'main'} />
  66. <DagAnalytics name={'nearby-results'} source={'nearby'} />
  67. </StandardPage>
  68. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement