Simplify UserMenu for Guests as they can't use most of the options
							parent
							
								
									f73573881e
								
							
						
					
					
						commit
						5f23c9499c
					
				|  | @ -231,9 +231,29 @@ limitations under the License. | |||
|             justify-content: center; | ||||
|         } | ||||
| 
 | ||||
|         &.mx_UserMenu_contextMenu_guestPrompts, | ||||
|         &.mx_UserMenu_contextMenu_hostingLink { | ||||
|             padding-top: 0; | ||||
|         } | ||||
| 
 | ||||
|         &.mx_UserMenu_contextMenu_guestPrompts { | ||||
|             display: inline-block; | ||||
| 
 | ||||
|             > span { | ||||
|                 font-weight: 600; | ||||
|                 display: block; | ||||
| 
 | ||||
|                 & + span { | ||||
|                     margin-top: 8px; | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             .mx_AccessibleButton_kind_link { | ||||
|                 font-weight: normal; | ||||
|                 font-size: inherit; | ||||
|                 padding: 0; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     .mx_IconizedContextMenu_icon { | ||||
|  |  | |||
|  | @ -588,9 +588,9 @@ export function logout(): void { | |||
| 
 | ||||
|     if (MatrixClientPeg.get().isGuest()) { | ||||
|         // logout doesn't work for guest sessions
 | ||||
|         // Also we sometimes want to re-log in a guest session
 | ||||
|         // if we abort the login
 | ||||
|         onLoggedOut(); | ||||
|         // Also we sometimes want to re-log in a guest session if we abort the login.
 | ||||
|         // defer until next tick because it calls a synchronous dispatch and we are likely here from a dispatch.
 | ||||
|         setImmediate(() => onLoggedOut()); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
|  | @ -29,7 +29,7 @@ import LogoutDialog from "../views/dialogs/LogoutDialog"; | |||
| import SettingsStore from "../../settings/SettingsStore"; | ||||
| import {getCustomTheme} from "../../theme"; | ||||
| import {getHostingLink} from "../../utils/HostingLink"; | ||||
| import {ButtonEvent} from "../views/elements/AccessibleButton"; | ||||
| import AccessibleButton, {ButtonEvent} from "../views/elements/AccessibleButton"; | ||||
| import SdkConfig from "../../SdkConfig"; | ||||
| import {getHomePageUrl} from "../../utils/pages"; | ||||
| import { OwnProfileStore } from "../../stores/OwnProfileStore"; | ||||
|  | @ -205,6 +205,16 @@ export default class UserMenu extends React.Component<IProps, IState> { | |||
|         this.setState({contextMenuPosition: null}); // also close the menu
 | ||||
|     }; | ||||
| 
 | ||||
|     private onSignInClick = () => { | ||||
|         dis.dispatch({ action: 'start_login' }); | ||||
|         this.setState({contextMenuPosition: null}); // also close the menu
 | ||||
|     }; | ||||
| 
 | ||||
|     private onRegisterClick = () => { | ||||
|         dis.dispatch({ action: 'start_registration' }); | ||||
|         this.setState({contextMenuPosition: null}); // also close the menu
 | ||||
|     }; | ||||
| 
 | ||||
|     private onHomeClick = (ev: ButtonEvent) => { | ||||
|         ev.preventDefault(); | ||||
|         ev.stopPropagation(); | ||||
|  | @ -261,10 +271,29 @@ export default class UserMenu extends React.Component<IProps, IState> { | |||
| 
 | ||||
|         const prototypeCommunityName = CommunityPrototypeStore.instance.getSelectedCommunityName(); | ||||
| 
 | ||||
|         let hostingLink; | ||||
|         let topSection; | ||||
|         const signupLink = getHostingLink("user-context-menu"); | ||||
|         if (signupLink) { | ||||
|             hostingLink = ( | ||||
|         if (MatrixClientPeg.get().isGuest()) { | ||||
|             topSection = ( | ||||
|                 <div className="mx_UserMenu_contextMenu_header mx_UserMenu_contextMenu_guestPrompts"> | ||||
|                     {_t("Not you? <a>Sign in</a>", {}, { | ||||
|                         a: sub => ( | ||||
|                             <AccessibleButton kind="link" onClick={this.onSignInClick}> | ||||
|                                 {sub} | ||||
|                             </AccessibleButton> | ||||
|                         ), | ||||
|                     })} | ||||
|                     {_t("New here? <a>Create an account</a>", {}, { | ||||
|                         a: sub => ( | ||||
|                             <AccessibleButton kind="link" onClick={this.onRegisterClick}> | ||||
|                                 {sub} | ||||
|                             </AccessibleButton> | ||||
|                         ), | ||||
|                     })} | ||||
|                 </div> | ||||
|             ) | ||||
|         } else if (signupLink) { | ||||
|             topSection = ( | ||||
|                 <div className="mx_UserMenu_contextMenu_header mx_UserMenu_contextMenu_hostingLink"> | ||||
|                     {_t( | ||||
|                         "<a>Upgrade</a> to your own domain", {}, | ||||
|  | @ -422,6 +451,20 @@ export default class UserMenu extends React.Component<IProps, IState> { | |||
|                     </IconizedContextMenuOptionList> | ||||
|                 </React.Fragment> | ||||
|             ) | ||||
|         } else if (MatrixClientPeg.get().isGuest()) { | ||||
|             primaryOptionList = ( | ||||
|                 <React.Fragment> | ||||
|                     <IconizedContextMenuOptionList> | ||||
|                         { homeButton } | ||||
|                         <IconizedContextMenuOption | ||||
|                             iconClassName="mx_UserMenu_iconSettings" | ||||
|                             label={_t("Settings")} | ||||
|                             onClick={(e) => this.onSettingsOpen(e, null)} | ||||
|                         /> | ||||
|                         { feedbackButton } | ||||
|                     </IconizedContextMenuOptionList> | ||||
|                 </React.Fragment> | ||||
|             ); | ||||
|         } | ||||
| 
 | ||||
|         const classes = classNames({ | ||||
|  | @ -451,7 +494,7 @@ export default class UserMenu extends React.Component<IProps, IState> { | |||
|                     /> | ||||
|                 </AccessibleTooltipButton> | ||||
|             </div> | ||||
|             {hostingLink} | ||||
|             {topSection} | ||||
|             {primaryOptionList} | ||||
|             {secondarySection} | ||||
|         </IconizedContextMenu>; | ||||
|  |  | |||
|  | @ -2408,6 +2408,8 @@ | |||
|     "Uploading %(filename)s and %(count)s others|zero": "Uploading %(filename)s", | ||||
|     "Uploading %(filename)s and %(count)s others|one": "Uploading %(filename)s and %(count)s other", | ||||
|     "Failed to find the general chat for this community": "Failed to find the general chat for this community", | ||||
|     "Not you? <a>Sign in</a>": "Not you? <a>Sign in</a>", | ||||
|     "New here? <a>Create an account</a>": "New here? <a>Create an account</a>", | ||||
|     "Notification settings": "Notification settings", | ||||
|     "Security & privacy": "Security & privacy", | ||||
|     "All settings": "All settings", | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Michael Telatynski
						Michael Telatynski