diff --git a/res/css/views/context_menus/_TopLeftMenu.scss b/res/css/views/context_menus/_TopLeftMenu.scss
index f305f0fae3..272a882051 100644
--- a/res/css/views/context_menus/_TopLeftMenu.scss
+++ b/res/css/views/context_menus/_TopLeftMenu.scss
@@ -35,6 +35,10 @@ limitations under the License.
mask-image: url('$(res)/img/feather-icons/settings.svg');
}
+ li.mx_TopLeftMenu_icon_signin::after {
+ mask-image: url('$(res)/img/feather-icons/sign-in.svg');
+ }
+
li.mx_TopLeftMenu_icon_signout::after {
mask-image: url('$(res)/img/feather-icons/sign-out.svg');
}
diff --git a/res/img/feather-icons/sign-in.svg b/res/img/feather-icons/sign-in.svg
new file mode 100644
index 0000000000..29235304a8
--- /dev/null
+++ b/res/img/feather-icons/sign-in.svg
@@ -0,0 +1,7 @@
+
diff --git a/src/components/views/context_menus/TopLeftMenu.js b/src/components/views/context_menus/TopLeftMenu.js
index 1d58db3c49..56f5ba5c6f 100644
--- a/src/components/views/context_menus/TopLeftMenu.js
+++ b/src/components/views/context_menus/TopLeftMenu.js
@@ -20,11 +20,13 @@ import { _t } from '../../../languageHandler';
import LogoutDialog from "../dialogs/LogoutDialog";
import Modal from "../../../Modal";
import SdkConfig from '../../../SdkConfig';
+import MatrixClientPeg from '../../../MatrixClientPeg';
export class TopLeftMenu extends React.Component {
constructor() {
super();
this.openSettings = this.openSettings.bind(this);
+ this.signIn = this.signIn.bind(this);
this.signOut = this.signOut.bind(this);
}
@@ -41,6 +43,8 @@ export class TopLeftMenu extends React.Component {
}
render() {
+ const isGuest = MatrixClientPeg.get().isGuest();
+
let homePageSection = null;
if (this.hasHomePage()) {
homePageSection =
@@ -48,14 +52,23 @@ export class TopLeftMenu extends React.Component {
;
}
+ let signInOutSection;
+ if (isGuest) {
+ signInOutSection =
+
{_t("Sign in")}
+
;
+ } else {
+ signInOutSection =
+
{_t("Sign out")}
+
;
+ }
+
return
{homePageSection}
{_t("Settings")}
-
-
{_t("Sign out")}
-
+ {signInOutSection}
;
}
@@ -69,6 +82,11 @@ export class TopLeftMenu extends React.Component {
this.closeMenu();
}
+ signIn() {
+ dis.dispatch({action: 'start_login'});
+ this.closeMenu();
+ }
+
signOut() {
Modal.createTrackedDialog('Logout E2E Export', '', LogoutDialog);
this.closeMenu();
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index 6c38d6e4f6..0d74a41710 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -1051,7 +1051,6 @@
"Continue With Encryption Disabled": "Continue With Encryption Disabled",
"Unknown error": "Unknown error",
"Incorrect password": "Incorrect password",
- "Deactivate Account": "Deactivate Account",
"This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.",
"Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.",
"Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.",
@@ -1203,6 +1202,7 @@
"Quote": "Quote",
"Source URL": "Source URL",
"Collapse Reply Thread": "Collapse Reply Thread",
+ "End-to-end encryption information": "End-to-end encryption information",
"Failed to set Direct Message status of room": "Failed to set Direct Message status of room",
"unknown error code": "unknown error code",
"Failed to forget room %(errCode)s": "Failed to forget room %(errCode)s",
@@ -1220,6 +1220,7 @@
"Set a new status...": "Set a new status...",
"View Community": "View Community",
"Hide": "Hide",
+ "Sign in": "Sign in",
"Login": "Login",
"powered by Matrix": "powered by Matrix",
"Robot check is currently unavailable on desktop - please use a web browser": "Robot check is currently unavailable on desktop - please use a web browser",
@@ -1250,7 +1251,6 @@
"Username": "Username",
"Mobile phone number": "Mobile phone number",
"Not sure of your password? Set a new one": "Not sure of your password? Set a new one",
- "Sign in": "Sign in",
"Sign in to %(serverName)s": "Sign in to %(serverName)s",
"Change": "Change",
"Sign in with": "Sign in with",
@@ -1473,7 +1473,6 @@
"unencrypted": "unencrypted",
"Decryption error": "Decryption error",
"Session ID": "Session ID",
- "End-to-end encryption information": "End-to-end encryption information",
"Event information": "Event information",
"Sender device information": "Sender device information",
"Passphrases must match": "Passphrases must match",
@@ -1534,7 +1533,6 @@
"If you didn't set the new recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "If you didn't set the new recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.",
"This device is encrypting history using the new recovery method.": "This device is encrypting history using the new recovery method.",
"Go to Settings": "Go to Settings",
- "Setting up Secure Messages on this device will re-encrypt this device's message history with the new recovery method.": "Setting up Secure Messages on this device will re-encrypt this device's message history with the new recovery method.",
"Set up Secure Messages": "Set up Secure Messages",
"Recovery Method Removed": "Recovery Method Removed",
"This device has detected that your recovery passphrase and key for Secure Messages have been removed.": "This device has detected that your recovery passphrase and key for Secure Messages have been removed.",