aboutsummaryrefslogtreecommitdiff
path: root/src/client/react/components/container/Menu.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/react/components/container/Menu.js')
-rw-r--r--src/client/react/components/container/Menu.js21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/client/react/components/container/Menu.js b/src/client/react/components/container/Menu.js
index f99ed37..920973b 100644
--- a/src/client/react/components/container/Menu.js
+++ b/src/client/react/components/container/Menu.js
@@ -20,21 +20,38 @@
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';
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':
+ 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
}
@@ -59,4 +76,4 @@ class Menu extends React.Component {
}
}
-export default connect()(Menu);
+export default withRouter(connect()(Menu));