MessagesContainer.ts 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import { connect } from 'react-redux';
  2. import {
  3. ClusterName,
  4. RootState,
  5. TopicMessageQueryParams,
  6. TopicName,
  7. } from 'redux/interfaces';
  8. import { RouteComponentProps, withRouter } from 'react-router-dom';
  9. import { fetchTopicMessages } from 'redux/actions';
  10. import {
  11. getIsTopicMessagesFetched,
  12. getTopicMessages,
  13. } from 'redux/reducers/topics/selectors';
  14. import Messages from './Messages';
  15. interface RouteProps {
  16. clusterName: ClusterName;
  17. topicName: TopicName;
  18. }
  19. type OwnProps = RouteComponentProps<RouteProps>;
  20. const mapStateToProps = (
  21. state: RootState,
  22. {
  23. match: {
  24. params: { topicName, clusterName },
  25. },
  26. }: OwnProps
  27. ) => ({
  28. clusterName,
  29. topicName,
  30. isFetched: getIsTopicMessagesFetched(state),
  31. messages: getTopicMessages(state),
  32. });
  33. const mapDispatchToProps = {
  34. fetchTopicMessages: (
  35. clusterName: ClusterName,
  36. topicName: TopicName,
  37. queryParams: Partial<TopicMessageQueryParams>
  38. ) => fetchTopicMessages(clusterName, topicName, queryParams),
  39. };
  40. export default withRouter(
  41. connect(mapStateToProps, mapDispatchToProps)(Messages)
  42. );