/**
* Copyright (C) 2018 Noah Loomans
*
* This file is part of rooster.hetmml.nl.
*
* rooster.hetmml.nl is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* rooster.hetmml.nl is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with rooster.hetmml.nl. If not, see .
*
*/
import React from 'react';
import { connect } from 'react-redux';
import { withRouter } from 'react-router-dom';
import { PropTypes } from 'prop-types';
import { Button, ButtonIcon } from 'rmwc/Button';
import { SimpleMenu, MenuItem } from 'rmwc/Menu';
import { Icon } from 'rmwc/Icon';
import users from '../../users';
import { setUser, userFromMatch } from '../../lib/url';
import './Menu.scss';
class Menu extends React.Component {
static propTypes = {
// redux
dispatch: PropTypes.func.isRequired,
// react-router
match: PropTypes.object.isRequired,
location: PropTypes.object.isRequired,
history: PropTypes.object.isRequired,
}
onItemSelected(index) {
switch (index) {
case 'room_finder': {
const user = userFromMatch(this.props.match);
if (user == null || users.byId[user].type !== 'r') {
// We are not currently viewing a room, correct the situation.
setUser(users.allRoomIds[0], this.props.location, this.props.history);
}
this.props.dispatch({ type: 'ROOM_FINDER/SHOW' });
break;
}
default:
// No default
}
}
render() {
return (
}
onSelected={(event) => {
// Send the `data-type` of the selected
this.onItemSelected(event.detail.item.dataset.type);
}}
>
);
}
}
export default withRouter(connect()(Menu));