Fix dropdowns being disabled for logged out users in web UI (#25714)
This commit is contained in:
		
					parent
					
						
							
								ceeb2b8c41
							
						
					
				
			
			
				commit
				
					
						a8edbcf963
					
				
			
		
					 3 changed files with 113 additions and 111 deletions
				
			
		|  | @ -195,71 +195,74 @@ class ActionBar extends PureComponent { | |||
| 
 | ||||
|     let menu = []; | ||||
| 
 | ||||
|     if (publicStatus) { | ||||
|       if (isRemote) { | ||||
|         menu.push({ text: intl.formatMessage(messages.openOriginalPage), href: status.get('url') }); | ||||
|       } | ||||
| 
 | ||||
|       menu.push({ text: intl.formatMessage(messages.copy), action: this.handleCopy }); | ||||
| 
 | ||||
|       if ('share' in navigator) { | ||||
|         menu.push({ text: intl.formatMessage(messages.share), action: this.handleShare }); | ||||
|       } | ||||
| 
 | ||||
|       menu.push({ text: intl.formatMessage(messages.embed), action: this.handleEmbed }); | ||||
|       menu.push(null); | ||||
|     if (publicStatus && isRemote) { | ||||
|       menu.push({ text: intl.formatMessage(messages.openOriginalPage), href: status.get('url') }); | ||||
|     } | ||||
| 
 | ||||
|     if (writtenByMe) { | ||||
|       if (pinnableStatus) { | ||||
|         menu.push({ text: intl.formatMessage(status.get('pinned') ? messages.unpin : messages.pin), action: this.handlePinClick }); | ||||
|         menu.push(null); | ||||
|       } | ||||
|     menu.push({ text: intl.formatMessage(messages.copy), action: this.handleCopy }); | ||||
| 
 | ||||
|       menu.push({ text: intl.formatMessage(mutingConversation ? messages.unmuteConversation : messages.muteConversation), action: this.handleConversationMuteClick }); | ||||
|       menu.push(null); | ||||
|       menu.push({ text: intl.formatMessage(messages.edit), action: this.handleEditClick }); | ||||
|       menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDeleteClick, dangerous: true }); | ||||
|       menu.push({ text: intl.formatMessage(messages.redraft), action: this.handleRedraftClick, dangerous: true }); | ||||
|     } else { | ||||
|       menu.push({ text: intl.formatMessage(messages.mention, { name: status.getIn(['account', 'username']) }), action: this.handleMentionClick }); | ||||
|     if (publicStatus && 'share' in navigator) { | ||||
|       menu.push({ text: intl.formatMessage(messages.share), action: this.handleShare }); | ||||
|     } | ||||
| 
 | ||||
|     if (publicStatus) { | ||||
|       menu.push({ text: intl.formatMessage(messages.embed), action: this.handleEmbed }); | ||||
|     } | ||||
| 
 | ||||
|     if (signedIn) { | ||||
|       menu.push(null); | ||||
| 
 | ||||
|       if (relationship && relationship.get('muting')) { | ||||
|         menu.push({ text: intl.formatMessage(messages.unmute, { name: account.get('username') }), action: this.handleMuteClick }); | ||||
|       if (writtenByMe) { | ||||
|         if (pinnableStatus) { | ||||
|           menu.push({ text: intl.formatMessage(status.get('pinned') ? messages.unpin : messages.pin), action: this.handlePinClick }); | ||||
|           menu.push(null); | ||||
|         } | ||||
| 
 | ||||
|         menu.push({ text: intl.formatMessage(mutingConversation ? messages.unmuteConversation : messages.muteConversation), action: this.handleConversationMuteClick }); | ||||
|         menu.push(null); | ||||
|         menu.push({ text: intl.formatMessage(messages.edit), action: this.handleEditClick }); | ||||
|         menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDeleteClick, dangerous: true }); | ||||
|         menu.push({ text: intl.formatMessage(messages.redraft), action: this.handleRedraftClick, dangerous: true }); | ||||
|       } else { | ||||
|         menu.push({ text: intl.formatMessage(messages.mute, { name: account.get('username') }), action: this.handleMuteClick, dangerous: true }); | ||||
|       } | ||||
| 
 | ||||
|       if (relationship && relationship.get('blocking')) { | ||||
|         menu.push({ text: intl.formatMessage(messages.unblock, { name: account.get('username') }), action: this.handleBlockClick }); | ||||
|       } else { | ||||
|         menu.push({ text: intl.formatMessage(messages.block, { name: account.get('username') }), action: this.handleBlockClick, dangerous: true }); | ||||
|       } | ||||
| 
 | ||||
|       menu.push({ text: intl.formatMessage(messages.report, { name: status.getIn(['account', 'username']) }), action: this.handleReport, dangerous: true }); | ||||
| 
 | ||||
|       if (account.get('acct') !== account.get('username')) { | ||||
|         const domain = account.get('acct').split('@')[1]; | ||||
| 
 | ||||
|         menu.push({ text: intl.formatMessage(messages.mention, { name: status.getIn(['account', 'username']) }), action: this.handleMentionClick }); | ||||
|         menu.push(null); | ||||
| 
 | ||||
|         if (relationship && relationship.get('domain_blocking')) { | ||||
|           menu.push({ text: intl.formatMessage(messages.unblockDomain, { domain }), action: this.handleUnblockDomain }); | ||||
|         if (relationship && relationship.get('muting')) { | ||||
|           menu.push({ text: intl.formatMessage(messages.unmute, { name: account.get('username') }), action: this.handleMuteClick }); | ||||
|         } else { | ||||
|           menu.push({ text: intl.formatMessage(messages.blockDomain, { domain }), action: this.handleBlockDomain, dangerous: true }); | ||||
|           menu.push({ text: intl.formatMessage(messages.mute, { name: account.get('username') }), action: this.handleMuteClick, dangerous: true }); | ||||
|         } | ||||
|       } | ||||
| 
 | ||||
|       if ((permissions & PERMISSION_MANAGE_USERS) === PERMISSION_MANAGE_USERS || (isRemote && (permissions & PERMISSION_MANAGE_FEDERATION) === PERMISSION_MANAGE_FEDERATION)) { | ||||
|         menu.push(null); | ||||
|         if ((permissions & PERMISSION_MANAGE_USERS) === PERMISSION_MANAGE_USERS) { | ||||
|           menu.push({ text: intl.formatMessage(messages.admin_account, { name: status.getIn(['account', 'username']) }), href: `/admin/accounts/${status.getIn(['account', 'id'])}` }); | ||||
|           menu.push({ text: intl.formatMessage(messages.admin_status), href: `/admin/accounts/${status.getIn(['account', 'id'])}/statuses/${status.get('id')}` }); | ||||
|         if (relationship && relationship.get('blocking')) { | ||||
|           menu.push({ text: intl.formatMessage(messages.unblock, { name: account.get('username') }), action: this.handleBlockClick }); | ||||
|         } else { | ||||
|           menu.push({ text: intl.formatMessage(messages.block, { name: account.get('username') }), action: this.handleBlockClick, dangerous: true }); | ||||
|         } | ||||
|         if (isRemote && (permissions & PERMISSION_MANAGE_FEDERATION) === PERMISSION_MANAGE_FEDERATION) { | ||||
| 
 | ||||
|         menu.push({ text: intl.formatMessage(messages.report, { name: status.getIn(['account', 'username']) }), action: this.handleReport, dangerous: true }); | ||||
| 
 | ||||
|         if (account.get('acct') !== account.get('username')) { | ||||
|           const domain = account.get('acct').split('@')[1]; | ||||
|           menu.push({ text: intl.formatMessage(messages.admin_domain, { domain: domain }), href: `/admin/instances/${domain}` }); | ||||
| 
 | ||||
|           menu.push(null); | ||||
| 
 | ||||
|           if (relationship && relationship.get('domain_blocking')) { | ||||
|             menu.push({ text: intl.formatMessage(messages.unblockDomain, { domain }), action: this.handleUnblockDomain }); | ||||
|           } else { | ||||
|             menu.push({ text: intl.formatMessage(messages.blockDomain, { domain }), action: this.handleBlockDomain, dangerous: true }); | ||||
|           } | ||||
|         } | ||||
| 
 | ||||
|         if ((permissions & PERMISSION_MANAGE_USERS) === PERMISSION_MANAGE_USERS || (isRemote && (permissions & PERMISSION_MANAGE_FEDERATION) === PERMISSION_MANAGE_FEDERATION)) { | ||||
|           menu.push(null); | ||||
|           if ((permissions & PERMISSION_MANAGE_USERS) === PERMISSION_MANAGE_USERS) { | ||||
|             menu.push({ text: intl.formatMessage(messages.admin_account, { name: status.getIn(['account', 'username']) }), href: `/admin/accounts/${status.getIn(['account', 'id'])}` }); | ||||
|             menu.push({ text: intl.formatMessage(messages.admin_status), href: `/admin/accounts/${status.getIn(['account', 'id'])}/statuses/${status.get('id')}` }); | ||||
|           } | ||||
|           if (isRemote && (permissions & PERMISSION_MANAGE_FEDERATION) === PERMISSION_MANAGE_FEDERATION) { | ||||
|             const domain = account.get('acct').split('@')[1]; | ||||
|             menu.push({ text: intl.formatMessage(messages.admin_domain, { domain: domain }), href: `/admin/instances/${domain}` }); | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|  | @ -292,7 +295,7 @@ class ActionBar extends PureComponent { | |||
|         <div className='detailed-status__button'><IconButton className='bookmark-icon' disabled={!signedIn} active={status.get('bookmarked')} title={intl.formatMessage(messages.bookmark)} icon='bookmark' onClick={this.handleBookmarkClick} /></div> | ||||
| 
 | ||||
|         <div className='detailed-status__action-bar-dropdown'> | ||||
|           <DropdownMenuContainer size={18} icon='ellipsis-h' disabled={!signedIn} status={status} items={menu} direction='left' title={intl.formatMessage(messages.more)} /> | ||||
|           <DropdownMenuContainer size={18} icon='ellipsis-h' status={status} items={menu} direction='left' title={intl.formatMessage(messages.more)} /> | ||||
|         </div> | ||||
|       </div> | ||||
|     ); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue