Overlays.jsx 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import React, { Component } from "react";
  2. import PropTypes from "prop-types";
  3. import { connect } from "react-redux";
  4. import Settings from "./Settings";
  5. import Playlists from "./Playlists";
  6. import EditPlaylist from "./EditPlaylist";
  7. import SearchYouTube from "./SearchYouTube";
  8. @connect(state => ({
  9. overlay1: state.stationOverlay.get("overlay1"),
  10. overlay2: state.stationOverlay.get("overlay2"),
  11. overlay3: state.stationOverlay.get("overlay3"),
  12. extraProps2: state.stationOverlay.get("extraProps2"),
  13. }))
  14. export default class Overlays extends Component {
  15. constructor(props) {
  16. super(props);
  17. this.state = {
  18. overlay1: null,
  19. overlay2: null,
  20. overlay3: null,
  21. };
  22. }
  23. getComponent = (type, key) => {
  24. let input = null;
  25. if (type === "settings") input = <Settings t={ this.props.t } key={ key }/>;
  26. else if (type === "playlists") input = <Playlists t={ this.props.t } key={ key }/>;
  27. else if (type === "editPlaylist") input = <EditPlaylist t={ this.props.t } key={ key } playlistId={ this.props.extraProps2.get("playlistId") }/>;
  28. else if (type === "searchYouTube") input = <SearchYouTube t={ this.props.t } key={ key }/>;
  29. return input;
  30. };
  31. componentDidUpdate(prevProps, prevState) {
  32. if (this.props.overlay1 !== prevProps.overlay1) {
  33. this.setState({
  34. overlay1: this.getComponent(this.props.overlay1),
  35. });
  36. }
  37. if (this.props.overlay2 !== prevProps.overlay2) {
  38. this.setState({
  39. overlay2: this.getComponent(this.props.overlay2),
  40. });
  41. }
  42. if (this.props.overlay3 !== prevProps.overlay3) {
  43. this.setState({
  44. overlay3: this.getComponent(this.props.overlay3),
  45. });
  46. }
  47. }
  48. render() {
  49. return <div>
  50. { this.state.overlay1 }
  51. { this.state.overlay2 }
  52. { this.state.overlay3 }
  53. </div>;
  54. }
  55. }