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."
},
"deletePublicConversationConfirmation": {
"message": "Permanently delete the messages locally from this public channel?",
"message":
"Permanently delete the messages locally from this public channel?",
"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."
},

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

@ -199,9 +199,13 @@ export class ConversationListItem extends React.PureComponent<Props> {
<MenuItem onClick={onDeleteMessages}>{i18n('deleteMessages')}</MenuItem>
{!isMe && isClosable ? (
!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}
</ContextMenu>

@ -201,14 +201,62 @@ export class ConversationHeader extends React.Component<Props> {
public renderMenu(triggerId: string) {
const {
i18n,
isBlocked,
isMe,
isClosable,
isGroup,
isArchived,
isPublic,
onDeleteMessages,
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,
onSetDisappearingMessages,
// onShowAllMedia,
@ -222,7 +270,6 @@ export class ConversationHeader extends React.Component<Props> {
hasNickname,
onClearNickname,
onChangeNickname,
onCopyPublicKey,
} = this.props;
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 blockHandler = isBlocked ? onUnblockUser : onBlockUser;
return (
<ContextMenu id={triggerId}>
{!isPublic ? (
const disappearingMessagesMenuItem = (
<SubMenu title={disappearingTitle}>
{(timerOptions || []).map(item => (
<MenuItem
@ -245,72 +290,51 @@ export class ConversationHeader extends React.Component<Props> {
</MenuItem>
))}
</SubMenu>
) : null}
{/* <MenuItem onClick={onShowAllMedia}>{i18n('viewAllMedia')}</MenuItem> */}
{!isPublic && isGroup ? (
<MenuItem onClick={onShowGroupMembers}>
{i18n('showMembers')}
</MenuItem>
) : null}
{!isPublic && !isGroup && !isMe ? (
);
const showMembersMenuItem = isGroup && (
<MenuItem onClick={onShowGroupMembers}>{i18n('showMembers')}</MenuItem>
);
const showSafetyNumberMenuItem = !isGroup &&
!isMe && (
<MenuItem onClick={onShowSafetyNumber}>
{i18n('showSafetyNumber')}
</MenuItem>
) : null}
{!isPublic && !isGroup ? (
);
const resetSessionMenuItem = !isGroup && (
<MenuItem onClick={onResetSession}>{i18n('resetSession')}</MenuItem>
) : null}
{/* Only show the block on other conversations */}
{!isPublic && !isMe ? (
);
const blockHandlerMenuItem = !isMe && (
<MenuItem onClick={blockHandler}>{blockTitle}</MenuItem>
) : null}
{!isPublic && !isMe ? (
<MenuItem onClick={onChangeNickname}>
{i18n('changeNickname')}
</MenuItem>
) : null}
{!isPublic && !isMe && hasNickname ? (
);
const changeNicknameMenuItem = !isMe && (
<MenuItem onClick={onChangeNickname}>{i18n('changeNickname')}</MenuItem>
);
const clearNicknameMenuItem = !isMe &&
hasNickname && (
<MenuItem onClick={onClearNickname}>{i18n('clearNickname')}</MenuItem>
) : null}
<MenuItem onClick={onCopyPublicKey}>{i18n('copyPublicKey')}</MenuItem>
{!isPublic ? (
isArchived ? (
);
const archiveConversationMenuItem = isArchived ? (
<MenuItem onClick={onMoveToInbox}>
{i18n('moveConversationToInbox')}
</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 (
<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>
!isPublic && (
<React.Fragment>
{/* <MenuItem onClick={onShowAllMedia}>{i18n('viewAllMedia')}</MenuItem> */}
{disappearingMessagesMenuItem}
{showMembersMenuItem}
{showSafetyNumberMenuItem}
{resetSessionMenuItem}
{blockHandlerMenuItem}
{changeNicknameMenuItem}
{clearNicknameMenuItem}
{archiveConversationMenuItem}
</React.Fragment>
)
);
}
}

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

Loading…
Cancel
Save