import React, { Component } from 'react'; import { Menu, Button, Grid, Icon, Responsive, Dropdown, } from 'semantic-ui-react'; import { connect } from 'react-redux'; import { editButtonStyle } from '../components/dashboard/devices/styleComponents'; import RoomModal from '../components/RoomModal'; import { RemoteService } from '../remote'; import { appActions } from '../storeActions'; class Navbar extends Component { constructor(props) { super(props); this.state = { editMode: false, }; this.toggleEditMode = this.toggleEditMode.bind(this); this.selectRoom = this.selectRoom.bind(this); this.openCurrentModalMobile = this.openCurrentModalMobile.bind(this); this.getRooms(); } getRooms() { this.props.fetchAllRooms().catch(console.error); } get activeItem() { return this.props.activeRoom; } set activeItem(item) { this.props.setActiveRoom(item); } get activeItemName() { if (this.props.activeRoom === -1) return 'Home'; return this.props.rooms[this.props.activeRoom].name; } openCurrentModalMobile() { console.log(this.activeItem, this.props.roomModalRefs); const currentModal = this.props.roomModalRefs[this.activeItem].current; currentModal.openModal(); } toggleEditMode(e) { this.setState((prevState) => ({ editMode: !prevState.editMode })); } selectRoom(e, { id }) { this.activeItem = id || -1; } render() { return (
Home view {Object.values(this.props.rooms).map((e, i) => ( {e.name} {this.state.editMode ? ( ) : null} ))} Home {Object.values(this.props.rooms).map((e, i) => ( {e.name} ))} {this.activeItem !== -1 ? ( ) : null}
); } } const setActiveRoom = (activeRoom) => (dispatch) => dispatch(appActions.setActiveRoom(activeRoom)); const mapStateToProps = (state, _) => ({ rooms: state.rooms, activeRoom: state.active.activeRoom, roomModalRefs: Object.keys(state.rooms).reduce( (acc, key) => ({ ...acc, [key]: React.createRef() }), {}, ), }); const NavbarContainer = connect(mapStateToProps, { ...RemoteService, setActiveRoom, })(Navbar); export default NavbarContainer;