2018-05-25 05:17:29 +03:00
|
|
|
/*
|
2019-02-08 16:48:51 +03:00
|
|
|
Copyright 2018, 2019 New Vector Ltd
|
2018-05-25 05:17:29 +03: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 16:42:28 +03:00
|
|
|
import dis from '../../../dispatcher';
|
|
|
|
import { _t } from '../../../languageHandler';
|
2018-12-11 14:43:17 +03:00
|
|
|
import LogoutDialog from "../dialogs/LogoutDialog";
|
|
|
|
import Modal from "../../../Modal";
|
2019-02-08 16:48:51 +03:00
|
|
|
import SdkConfig from '../../../SdkConfig';
|
2019-02-13 18:48:40 +03:00
|
|
|
import MatrixClientPeg from '../../../MatrixClientPeg';
|
2018-05-25 05:17:29 +03:00
|
|
|
|
2018-10-23 16:25:20 +03:00
|
|
|
export class TopLeftMenu extends React.Component {
|
2018-10-23 16:33:24 +03:00
|
|
|
constructor() {
|
|
|
|
super();
|
|
|
|
this.openSettings = this.openSettings.bind(this);
|
2019-02-13 18:48:40 +03:00
|
|
|
this.signIn = this.signIn.bind(this);
|
2018-10-23 16:33:24 +03:00
|
|
|
this.signOut = this.signOut.bind(this);
|
|
|
|
}
|
|
|
|
|
2019-02-08 16:48:51 +03:00
|
|
|
hasHomePage() {
|
|
|
|
const config = SdkConfig.get();
|
2019-02-08 16:55:23 +03:00
|
|
|
const pagesConfig = config.embeddedPages;
|
2019-02-08 16:53:17 +03:00
|
|
|
if (pagesConfig && pagesConfig.homeUrl) {
|
|
|
|
return true;
|
2019-02-08 16:48:51 +03: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 16:25:20 +03:00
|
|
|
render() {
|
2019-02-13 18:48:40 +03:00
|
|
|
const isGuest = MatrixClientPeg.get().isGuest();
|
|
|
|
|
2019-02-08 16:48:51 +03: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>;
|
|
|
|
}
|
|
|
|
|
2019-02-13 18:48:40 +03:00
|
|
|
let signInOutSection;
|
|
|
|
if (isGuest) {
|
|
|
|
signInOutSection = <ul className="mx_TopLeftMenu_section">
|
|
|
|
<li className="mx_TopLeftMenu_icon_signin" onClick={this.signIn}>{_t("Sign in")}</li>
|
|
|
|
</ul>;
|
|
|
|
} else {
|
|
|
|
signInOutSection = <ul className="mx_TopLeftMenu_section">
|
|
|
|
<li className="mx_TopLeftMenu_icon_signout" onClick={this.signOut}>{_t("Sign out")}</li>
|
|
|
|
</ul>;
|
|
|
|
}
|
|
|
|
|
2018-10-23 16:25:20 +03:00
|
|
|
return <div className="mx_TopLeftMenu">
|
2019-02-08 16:48:51 +03:00
|
|
|
{homePageSection}
|
2018-10-23 16:25:20 +03:00
|
|
|
<ul className="mx_TopLeftMenu_section">
|
2019-01-29 18:56:07 +03:00
|
|
|
<li className="mx_TopLeftMenu_icon_settings" onClick={this.openSettings}>{_t("Settings")}</li>
|
2018-10-23 16:25:20 +03:00
|
|
|
</ul>
|
2019-02-13 18:48:40 +03:00
|
|
|
{signInOutSection}
|
2018-10-23 16:25:20 +03:00
|
|
|
</div>;
|
|
|
|
}
|
2018-05-25 05:17:29 +03:00
|
|
|
|
2019-02-08 16:48:51 +03:00
|
|
|
viewHomePage() {
|
|
|
|
dis.dispatch({action: 'view_home_page'});
|
|
|
|
this.closeMenu();
|
|
|
|
}
|
|
|
|
|
2018-10-23 16:25:20 +03:00
|
|
|
openSettings() {
|
|
|
|
dis.dispatch({action: 'view_user_settings'});
|
|
|
|
this.closeMenu();
|
|
|
|
}
|
2018-05-25 05:17:29 +03:00
|
|
|
|
2019-02-13 18:48:40 +03:00
|
|
|
signIn() {
|
|
|
|
dis.dispatch({action: 'start_login'});
|
|
|
|
this.closeMenu();
|
|
|
|
}
|
|
|
|
|
2018-10-23 16:25:20 +03:00
|
|
|
signOut() {
|
2018-12-11 14:43:17 +03:00
|
|
|
Modal.createTrackedDialog('Logout E2E Export', '', LogoutDialog);
|
2018-10-23 16:25:20 +03:00
|
|
|
this.closeMenu();
|
|
|
|
}
|
2018-05-25 05:17:29 +03:00
|
|
|
|
2018-10-23 16:25:20 +03:00
|
|
|
closeMenu() {
|
|
|
|
if (this.props.onFinished) this.props.onFinished();
|
2018-05-25 05:17:29 +03:00
|
|
|
}
|
|
|
|
}
|