| |
@@ -6,36 +6,62 @@
|
| |
|
| |
class LeftMenu extends React.Component {
|
| |
|
| |
- propTypes: {
|
| |
- menu: PropTypes.array,
|
| |
- }
|
| |
- defaultProps: {
|
| |
- menu: [],
|
| |
- }
|
| |
-
|
| |
render() {
|
| |
+ let userEntries = [];
|
| |
+ if (this.props.user.logged_in) {
|
| |
+ userEntries = [
|
| |
+ (
|
| |
+ <LeftMenuEntry
|
| |
+ key={this.props.user.hub}
|
| |
+ url={this.props.user.hub}
|
| |
+ icon="home"
|
| |
+ text="My Hub"
|
| |
+ />
|
| |
+ ), (
|
| |
+ <LeftMenuEntry
|
| |
+ key={this.props.user.stream}
|
| |
+ url={this.props.user.stream}
|
| |
+ icon="home"
|
| |
+ text="My Stream"
|
| |
+ />
|
| |
+ ),
|
| |
+ ...this.props.user.bookmarks.map((entry) => (
|
| |
+ <LeftMenuEntry
|
| |
+ key={entry.url}
|
| |
+ icon="bookmark"
|
| |
+ text={entry.name}
|
| |
+ url={entry.url}
|
| |
+ cssClass={entry.cssClass}
|
| |
+ />
|
| |
+ ))
|
| |
+ ];
|
| |
+ }
|
| |
return (
|
| |
<div className="LeftMenu">
|
| |
<ul
|
| |
className="nav nav-pills flex-lg-column mb-0 rounded"
|
| |
role="navigation"
|
| |
>
|
| |
- {this.props.menu.map((entry) => (
|
| |
- <LeftMenuEntry
|
| |
- key={entry.url}
|
| |
- {...entry}
|
| |
- />
|
| |
- ))
|
| |
- }
|
| |
+ {userEntries}
|
| |
+ <LeftMenuEntry
|
| |
+ url={this.props.allGroupsUrl}
|
| |
+ icon="users"
|
| |
+ text="All groups"
|
| |
+ />
|
| |
</ul>
|
| |
</div>
|
| |
);
|
| |
}
|
| |
}
|
| |
+ LeftMenu.propTypes = {
|
| |
+ user: PropTypes.object,
|
| |
+ allGroupsUrl: PropTypes.string,
|
| |
+ }
|
| |
|
| |
const mapStateToProps = (state) => {
|
| |
return {
|
| |
- menu: state.ui.leftMenu,
|
| |
+ user: state.currentUser,
|
| |
+ allGroupsUrl: state.urls.allGroups,
|
| |
}
|
| |
};
|
| |
|
| |
@@ -44,16 +70,6 @@
|
| |
|
| |
class LeftMenuEntry extends React.Component {
|
| |
|
| |
- propTypes: {
|
| |
- url: PropTypes.string.isRequired,
|
| |
- icon: PropTypes.string.isRequired,
|
| |
- text: PropTypes.string.isRequired,
|
| |
- cssClass: PropTypes.string,
|
| |
- }
|
| |
- defaultProps: {
|
| |
- cssClass: null,
|
| |
- }
|
| |
-
|
| |
render() {
|
| |
const isActive = window.location.pathname.indexOf(this.props.url) !== -1;
|
| |
let cssClass = "nav-link";
|
| |
@@ -74,3 +90,13 @@
|
| |
);
|
| |
}
|
| |
}
|
| |
+
|
| |
+ LeftMenuEntry.propTypes = {
|
| |
+ url: PropTypes.string.isRequired,
|
| |
+ icon: PropTypes.string.isRequired,
|
| |
+ text: PropTypes.string.isRequired,
|
| |
+ cssClass: PropTypes.string,
|
| |
+ }
|
| |
+ LeftMenuEntry.defaultProps = {
|
| |
+ cssClass: null,
|
| |
+ }
|
| |
When the user joins or subscribes to a hub, it is now automatically
added to the left menu.