Fix tests, refactor menu items to please linter and lint

pull/474/head
Beaudan Brown 6 years ago
parent 66459ac4bd
commit 870dc7f904

@ -1042,7 +1042,8 @@
"description": "Menu item for deleting messages, title case." "description": "Menu item for deleting messages, title case."
}, },
"deletePublicConversationConfirmation": { "deletePublicConversationConfirmation": {
"message": "Permanently delete the messages locally from this public channel?", "message":
"Permanently delete the messages locally from this public channel?",
"description": "description":
"Confirmation dialog text that asks the user if they really wish to delete the public channel messages locally. Answer buttons use the strings 'ok' and 'cancel'. The deletion is permanent, i.e. it cannot be undone." "Confirmation dialog text that asks the user if they really wish to delete the public channel messages locally. Answer buttons use the strings 'ok' and 'cancel'. The deletion is permanent, i.e. it cannot be undone."
}, },

@ -195,7 +195,7 @@
return this.id === this.ourNumber; return this.id === this.ourNumber;
}, },
isPublic() { isPublic() {
return this.id.match(/^publicChat:/); return this.id && this.id.match(/^publicChat:/);
}, },
isClosable() { isClosable() {
return !this.isRss() || this.get('closable'); return !this.isRss() || this.get('closable');

@ -199,9 +199,13 @@ export class ConversationListItem extends React.PureComponent<Props> {
<MenuItem onClick={onDeleteMessages}>{i18n('deleteMessages')}</MenuItem> <MenuItem onClick={onDeleteMessages}>{i18n('deleteMessages')}</MenuItem>
{!isMe && isClosable ? ( {!isMe && isClosable ? (
!isPublic ? ( !isPublic ? (
<MenuItem onClick={onDeleteContact}>{i18n('deleteContact')}</MenuItem> <MenuItem onClick={onDeleteContact}>
{i18n('deleteContact')}
</MenuItem>
) : ( ) : (
<MenuItem onClick={onDeleteContact}>{i18n('deletePublicChannel')}</MenuItem> <MenuItem onClick={onDeleteContact}>
{i18n('deletePublicChannel')}
</MenuItem>
) )
) : null} ) : null}
</ContextMenu> </ContextMenu>

@ -201,14 +201,62 @@ export class ConversationHeader extends React.Component<Props> {
public renderMenu(triggerId: string) { public renderMenu(triggerId: string) {
const { const {
i18n, i18n,
isBlocked,
isMe, isMe,
isClosable, isClosable,
isGroup,
isArchived,
isPublic, isPublic,
onDeleteMessages, onDeleteMessages,
onDeleteContact, onDeleteContact,
onCopyPublicKey,
} = this.props;
return (
<ContextMenu id={triggerId}>
{this.renderPublicMenuItems()}
<MenuItem onClick={onCopyPublicKey}>{i18n('copyPublicKey')}</MenuItem>
<MenuItem onClick={onDeleteMessages}>{i18n('deleteMessages')}</MenuItem>
{!isMe && isClosable ? (
!isPublic ? (
<MenuItem onClick={onDeleteContact}>
{i18n('deleteContact')}
</MenuItem>
) : (
<MenuItem onClick={onDeleteContact}>
{i18n('deletePublicChannel')}
</MenuItem>
)
) : null}
</ContextMenu>
);
}
public render() {
const { id } = this.props;
const triggerId = `conversation-${id}`;
return (
<div className="module-conversation-header">
{this.renderBackButton()}
<div className="module-conversation-header__title-container">
<div className="module-conversation-header__title-flex">
{this.renderAvatar()}
{this.renderTitle()}
</div>
</div>
{this.renderExpirationLength()}
{this.renderGear(triggerId)}
{this.renderMenu(triggerId)}
</div>
);
}
private renderPublicMenuItems() {
const {
i18n,
isBlocked,
isMe,
isGroup,
isArchived,
isPublic,
onResetSession, onResetSession,
onSetDisappearingMessages, onSetDisappearingMessages,
// onShowAllMedia, // onShowAllMedia,
@ -222,7 +270,6 @@ export class ConversationHeader extends React.Component<Props> {
hasNickname, hasNickname,
onClearNickname, onClearNickname,
onChangeNickname, onChangeNickname,
onCopyPublicKey,
} = this.props; } = this.props;
const disappearingTitle = i18n('disappearingMessages') as any; const disappearingTitle = i18n('disappearingMessages') as any;
@ -230,9 +277,7 @@ export class ConversationHeader extends React.Component<Props> {
const blockTitle = isBlocked ? i18n('unblockUser') : i18n('blockUser'); const blockTitle = isBlocked ? i18n('unblockUser') : i18n('blockUser');
const blockHandler = isBlocked ? onUnblockUser : onBlockUser; const blockHandler = isBlocked ? onUnblockUser : onBlockUser;
return ( const disappearingMessagesMenuItem = (
<ContextMenu id={triggerId}>
{!isPublic ? (
<SubMenu title={disappearingTitle}> <SubMenu title={disappearingTitle}>
{(timerOptions || []).map(item => ( {(timerOptions || []).map(item => (
<MenuItem <MenuItem
@ -245,72 +290,51 @@ export class ConversationHeader extends React.Component<Props> {
</MenuItem> </MenuItem>
))} ))}
</SubMenu> </SubMenu>
) : null} );
{/* <MenuItem onClick={onShowAllMedia}>{i18n('viewAllMedia')}</MenuItem> */} const showMembersMenuItem = isGroup && (
{!isPublic && isGroup ? ( <MenuItem onClick={onShowGroupMembers}>{i18n('showMembers')}</MenuItem>
<MenuItem onClick={onShowGroupMembers}> );
{i18n('showMembers')} const showSafetyNumberMenuItem = !isGroup &&
</MenuItem> !isMe && (
) : null}
{!isPublic && !isGroup && !isMe ? (
<MenuItem onClick={onShowSafetyNumber}> <MenuItem onClick={onShowSafetyNumber}>
{i18n('showSafetyNumber')} {i18n('showSafetyNumber')}
</MenuItem> </MenuItem>
) : null} );
{!isPublic && !isGroup ? ( const resetSessionMenuItem = !isGroup && (
<MenuItem onClick={onResetSession}>{i18n('resetSession')}</MenuItem> <MenuItem onClick={onResetSession}>{i18n('resetSession')}</MenuItem>
) : null} );
{/* Only show the block on other conversations */} const blockHandlerMenuItem = !isMe && (
{!isPublic && !isMe ? (
<MenuItem onClick={blockHandler}>{blockTitle}</MenuItem> <MenuItem onClick={blockHandler}>{blockTitle}</MenuItem>
) : null} );
{!isPublic && !isMe ? ( const changeNicknameMenuItem = !isMe && (
<MenuItem onClick={onChangeNickname}> <MenuItem onClick={onChangeNickname}>{i18n('changeNickname')}</MenuItem>
{i18n('changeNickname')} );
</MenuItem> const clearNicknameMenuItem = !isMe &&
) : null} hasNickname && (
{!isPublic && !isMe && hasNickname ? (
<MenuItem onClick={onClearNickname}>{i18n('clearNickname')}</MenuItem> <MenuItem onClick={onClearNickname}>{i18n('clearNickname')}</MenuItem>
) : null} );
<MenuItem onClick={onCopyPublicKey}>{i18n('copyPublicKey')}</MenuItem> const archiveConversationMenuItem = isArchived ? (
{!isPublic ? (
isArchived ? (
<MenuItem onClick={onMoveToInbox}> <MenuItem onClick={onMoveToInbox}>
{i18n('moveConversationToInbox')} {i18n('moveConversationToInbox')}
</MenuItem> </MenuItem>
) : ( ) : (
<MenuItem onClick={onArchive}>{i18n('archiveConversation')}</MenuItem> <MenuItem onClick={onArchive}>{i18n('archiveConversation')}</MenuItem>
)
) : null}
<MenuItem onClick={onDeleteMessages}>{i18n('deleteMessages')}</MenuItem>
{!isMe && isClosable ? (
!isPublic ? (
<MenuItem onClick={onDeleteContact}>{i18n('deleteContact')}</MenuItem>
) : (
<MenuItem onClick={onDeleteContact}>{i18n('deletePublicChannel')}</MenuItem>
)
) : null}
</ContextMenu>
); );
}
public render() {
const { id } = this.props;
const triggerId = `conversation-${id}`;
return ( return (
<div className="module-conversation-header"> !isPublic && (
{this.renderBackButton()} <React.Fragment>
<div className="module-conversation-header__title-container"> {/* <MenuItem onClick={onShowAllMedia}>{i18n('viewAllMedia')}</MenuItem> */}
<div className="module-conversation-header__title-flex"> {disappearingMessagesMenuItem}
{this.renderAvatar()} {showMembersMenuItem}
{this.renderTitle()} {showSafetyNumberMenuItem}
</div> {resetSessionMenuItem}
</div> {blockHandlerMenuItem}
{this.renderExpirationLength()} {changeNicknameMenuItem}
{this.renderGear(triggerId)} {clearNicknameMenuItem}
{this.renderMenu(triggerId)} {archiveConversationMenuItem}
</div> </React.Fragment>
)
); );
} }
} }

@ -56,8 +56,7 @@ export class MessageDetail extends React.Component<Props> {
public renderDeleteButton() { public renderDeleteButton() {
const { i18n, message } = this.props; const { i18n, message } = this.props;
return ( return message.isDeletable ? (
message.isDeletable ? (
<div className="module-message-detail__delete-button-container"> <div className="module-message-detail__delete-button-container">
<button <button
onClick={message.onDelete} onClick={message.onDelete}
@ -66,8 +65,7 @@ export class MessageDetail extends React.Component<Props> {
{i18n('deleteThisMessage')} {i18n('deleteThisMessage')}
</button> </button>
</div> </div>
) : null ) : null;
);
} }
public renderContact(contact: Contact) { public renderContact(contact: Contact) {

Loading…
Cancel
Save