search_container.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import { createSelector } from '@reduxjs/toolkit';
  2. import { connect } from 'react-redux';
  3. import {
  4. changeSearch,
  5. clearSearch,
  6. submitSearch,
  7. showSearch,
  8. openURL,
  9. clickSearchResult,
  10. forgetSearchResult,
  11. } from 'mastodon/actions/search';
  12. import Search from '../components/search';
  13. const getRecentSearches = createSelector(
  14. state => state.getIn(['search', 'recent']),
  15. recent => recent.reverse(),
  16. );
  17. const mapStateToProps = state => ({
  18. value: state.getIn(['search', 'value']),
  19. submitted: state.getIn(['search', 'submitted']),
  20. recent: getRecentSearches(state),
  21. });
  22. const mapDispatchToProps = dispatch => ({
  23. onChange (value) {
  24. dispatch(changeSearch(value));
  25. },
  26. onClear () {
  27. dispatch(clearSearch());
  28. },
  29. onSubmit (type) {
  30. dispatch(submitSearch(type));
  31. },
  32. onShow () {
  33. dispatch(showSearch());
  34. },
  35. onOpenURL (q, routerHistory) {
  36. dispatch(openURL(q, routerHistory));
  37. },
  38. onClickSearchResult (q, type) {
  39. dispatch(clickSearchResult(q, type));
  40. },
  41. onForgetSearchResult (q) {
  42. dispatch(forgetSearchResult(q));
  43. },
  44. });
  45. export default connect(mapStateToProps, mapDispatchToProps)(Search);