Overlays.jsx 1.8 KB

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