2018-05-25 10:17:29 +08:00
|
|
|
/*
|
2019-02-08 21:48:51 +08:00
|
|
|
Copyright 2018, 2019 New Vector Ltd
|
2018-05-25 10:17:29 +08:00
|
|
|
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
you may not use this file except in compliance with the License.
|
|
|
|
You may obtain a copy of the License at
|
|
|
|
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
See the License for the specific language governing permissions and
|
|
|
|
limitations under the License.
|
|
|
|
*/
|
|
|
|
|
|
|
|
import React from 'react';
|
2018-10-23 21:42:28 +08:00
|
|
|
import dis from '../../../dispatcher';
|
|
|
|
import { _t } from '../../../languageHandler';
|
2018-12-11 19:43:17 +08:00
|
|
|
import LogoutDialog from "../dialogs/LogoutDialog";
|
|
|
|
import Modal from "../../../Modal";
|
2019-02-08 21:48:51 +08:00
|
|
|
import SdkConfig from '../../../SdkConfig';
|
2018-05-25 10:17:29 +08:00
|
|
|
|
2018-10-23 21:25:20 +08:00
|
|
|
export class TopLeftMenu extends React.Component {
|
2018-10-23 21:33:24 +08:00
|
|
|
constructor() {
|
|
|
|
super();
|
|
|
|
this.openSettings = this.openSettings.bind(this);
|
|
|
|
this.signOut = this.signOut.bind(this);
|
|
|
|
}
|
|
|
|
|
2019-02-08 21:48:51 +08:00
|
|
|
hasHomePage() {
|
|
|
|
const config = SdkConfig.get();
|
|
|
|
const pagesConfig = config.pages;
|
2019-02-08 21:53:17 +08:00
|
|
|
if (pagesConfig && pagesConfig.homeUrl) {
|
|
|
|
return true;
|
2019-02-08 21:48:51 +08:00
|
|
|
}
|
|
|
|
// This is a deprecated config option for the home page
|
|
|
|
// (despite the name, given we also now have a welcome
|
|
|
|
// page, which is not the same).
|
|
|
|
return !!config.welcomePageUrl;
|
|
|
|
}
|
|
|
|
|
2018-10-23 21:25:20 +08:00
|
|
|
render() {
|
2019-02-08 21:48:51 +08:00
|
|
|
let homePageSection = null;
|
|
|
|
if (this.hasHomePage()) {
|
|
|
|
homePageSection = <ul className="mx_TopLeftMenu_section">
|
|
|
|
<li className="mx_TopLeftMenu_icon_home" onClick={this.viewHomePage}>{_t("Home")}</li>
|
|
|
|
</ul>;
|
|
|
|
}
|
|
|
|
|
2018-10-23 21:25:20 +08:00
|
|
|
return <div className="mx_TopLeftMenu">
|
2019-02-08 21:48:51 +08:00
|
|
|
{homePageSection}
|
2018-10-23 21:25:20 +08:00
|
|
|
<ul className="mx_TopLeftMenu_section">
|
2019-01-29 23:56:07 +08:00
|
|
|
<li className="mx_TopLeftMenu_icon_settings" onClick={this.openSettings}>{_t("Settings")}</li>
|
2018-10-23 21:25:20 +08:00
|
|
|
</ul>
|
|
|
|
<ul className="mx_TopLeftMenu_section">
|
2019-01-29 23:56:07 +08:00
|
|
|
<li className="mx_TopLeftMenu_icon_signout" onClick={this.signOut}>{_t("Sign out")}</li>
|
2018-10-23 21:25:20 +08:00
|
|
|
</ul>
|
|
|
|
</div>;
|
|
|
|
}
|
2018-05-25 10:17:29 +08:00
|
|
|
|
2019-02-08 21:48:51 +08:00
|
|
|
viewHomePage() {
|
|
|
|
dis.dispatch({action: 'view_home_page'});
|
|
|
|
this.closeMenu();
|
|
|
|
}
|
|
|
|
|
2018-10-23 21:25:20 +08:00
|
|
|
openSettings() {
|
|
|
|
dis.dispatch({action: 'view_user_settings'});
|
|
|
|
this.closeMenu();
|
|
|
|
}
|
2018-05-25 10:17:29 +08:00
|
|
|
|
2018-10-23 21:25:20 +08:00
|
|
|
signOut() {
|
2018-12-11 19:43:17 +08:00
|
|
|
Modal.createTrackedDialog('Logout E2E Export', '', LogoutDialog);
|
2018-10-23 21:25:20 +08:00
|
|
|
this.closeMenu();
|
|
|
|
}
|
2018-05-25 10:17:29 +08:00
|
|
|
|
2018-10-23 21:25:20 +08:00
|
|
|
closeMenu() {
|
|
|
|
if (this.props.onFinished) this.props.onFinished();
|
2018-05-25 10:17:29 +08:00
|
|
|
}
|
|
|
|
}
|