use isKickedFromGroup to disable ui components

pull/1074/head
Audric Ackermann 5 years ago
parent 67b6ef7ac9
commit f48136678e
No known key found for this signature in database
GPG Key ID: 999F434D76324AD4

@ -196,6 +196,7 @@
value: item.get('seconds'), value: item.get('seconds'),
})), })),
hasNickname: !!this.model.getNickname(), hasNickname: !!this.model.getNickname(),
isKickedFromGroup: this.model.get('isKickedFromGroup'),
onSetDisappearingMessages: seconds => onSetDisappearingMessages: seconds =>
this.setDisappearingMessages(seconds), this.setDisappearingMessages(seconds),
@ -294,6 +295,7 @@
amMod: this.model.isModerator( amMod: this.model.isModerator(
window.storage.get('primaryDevicePubKey') window.storage.get('primaryDevicePubKey')
), ),
isKickedFromGroup: this.model.get('isKickedFromGroup'),
timerOptions: Whisper.ExpirationTimerOptions.map(item => ({ timerOptions: Whisper.ExpirationTimerOptions.map(item => ({
name: item.getName(), name: item.getName(),

@ -14,13 +14,18 @@
const convos = window.getConversations().models; const convos = window.getConversations().models;
if(convo.isPublic){ if (convo.isPublic) {
this.friends = convos.filter( this.friends = convos.filter(
d => !!d && d.isFriend() && d.isPrivate() && !d.isMe() d => !!d && d.isFriend() && d.isPrivate() && !d.isMe()
); );
} else { } else {
this.friends = convos.filter( this.friends = convos.filter(
d => !!d && d.isFriend() && d.isPrivate() && !d.isMe() && !convo.get('members').includes(d.id) d =>
!!d &&
d.isFriend() &&
d.isPrivate() &&
!d.isMe() &&
!convo.get('members').includes(d.id)
); );
} }

@ -62,6 +62,7 @@ interface Props {
isOnline?: boolean; isOnline?: boolean;
selectedMessages: any; selectedMessages: any;
isKickedFromGroup: boolean;
onSetDisappearingMessages: (seconds: number) => void; onSetDisappearingMessages: (seconds: number) => void;
onDeleteMessages: () => void; onDeleteMessages: () => void;
@ -145,6 +146,7 @@ export class ConversationHeader extends React.Component<Props> {
subscriberCount, subscriberCount,
isFriendRequestPending, isFriendRequestPending,
isMe, isMe,
isKickedFromGroup,
name, name,
} = this.props; } = this.props;
@ -179,7 +181,7 @@ export class ConversationHeader extends React.Component<Props> {
} }
const textEl = const textEl =
text === '' ? null : ( text === '' || isKickedFromGroup ? null : (
<span className="module-conversation-header__title-text">{text}</span> <span className="module-conversation-header__title-text">{text}</span>
); );
@ -298,6 +300,7 @@ export class ConversationHeader extends React.Component<Props> {
isPublic, isPublic,
isRss, isRss,
isGroup, isGroup,
isKickedFromGroup,
amMod, amMod,
onDeleteMessages, onDeleteMessages,
onDeleteContact, onDeleteContact,
@ -320,20 +323,20 @@ export class ConversationHeader extends React.Component<Props> {
<MenuItem onClick={onCopyPublicKey}>{copyIdLabel}</MenuItem> <MenuItem onClick={onCopyPublicKey}>{copyIdLabel}</MenuItem>
) : null} ) : null}
<MenuItem onClick={onDeleteMessages}>{i18n('deleteMessages')}</MenuItem> <MenuItem onClick={onDeleteMessages}>{i18n('deleteMessages')}</MenuItem>
{amMod ? ( {amMod && !isKickedFromGroup ? (
<MenuItem onClick={onAddModerators}>{i18n('addModerators')}</MenuItem> <MenuItem onClick={onAddModerators}>{i18n('addModerators')}</MenuItem>
) : null} ) : null}
{amMod ? ( {amMod && !isKickedFromGroup ? (
<MenuItem onClick={onRemoveModerators}> <MenuItem onClick={onRemoveModerators}>
{i18n('removeModerators')} {i18n('removeModerators')}
</MenuItem> </MenuItem>
) : null} ) : null}
{amMod ? ( {amMod && !isKickedFromGroup ? (
<MenuItem onClick={onUpdateGroupName}> <MenuItem onClick={onUpdateGroupName}>
{i18n('editGroupNameOrPicture')} {i18n('editGroupNameOrPicture')}
</MenuItem> </MenuItem>
) : null} ) : null}
{isPrivateGroup ? ( {isPrivateGroup && !isKickedFromGroup ? (
<MenuItem onClick={onLeaveGroup}>{i18n('leaveGroup')}</MenuItem> <MenuItem onClick={onLeaveGroup}>{i18n('leaveGroup')}</MenuItem>
) : null} ) : null}
{/* TODO: add delete group */} {/* TODO: add delete group */}
@ -391,7 +394,7 @@ export class ConversationHeader extends React.Component<Props> {
} }
public render() { public render() {
const { id } = this.props; const { id, isKickedFromGroup } = this.props;
const triggerId = `conversation-${id}-${Date.now()}`; const triggerId = `conversation-${id}-${Date.now()}`;
return ( return (
@ -407,7 +410,7 @@ export class ConversationHeader extends React.Component<Props> {
{/*isPrivateGroup ? this.renderMemberCount() : null*/} {/*isPrivateGroup ? this.renderMemberCount() : null*/}
</div> </div>
</div> </div>
{this.renderExpirationLength()} {!isKickedFromGroup && this.renderExpirationLength()}
{!this.props.isRss && this.renderAvatar()} {!this.props.isRss && this.renderAvatar()}
@ -436,6 +439,8 @@ export class ConversationHeader extends React.Component<Props> {
isBlocked, isBlocked,
isMe, isMe,
isGroup, isGroup,
isFriend,
isKickedFromGroup,
isArchived, isArchived,
isPublic, isPublic,
isRss, isRss,
@ -452,7 +457,6 @@ export class ConversationHeader extends React.Component<Props> {
// hasNickname, // hasNickname,
// onClearNickname, // onClearNickname,
// onChangeNickname, // onChangeNickname,
isFriend,
} = this.props; } = this.props;
if (isPublic || isRss) { if (isPublic || isRss) {
@ -464,20 +468,21 @@ 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;
const disappearingMessagesMenuItem = isFriend && ( const disappearingMessagesMenuItem = isFriend &&
<SubMenu title={disappearingTitle}> !isKickedFromGroup && (
{(timerOptions || []).map(item => ( <SubMenu title={disappearingTitle}>
<MenuItem {(timerOptions || []).map(item => (
key={item.value} <MenuItem
onClick={() => { key={item.value}
onSetDisappearingMessages(item.value); onClick={() => {
}} onSetDisappearingMessages(item.value);
> }}
{item.name} >
</MenuItem> {item.name}
))} </MenuItem>
</SubMenu> ))}
); </SubMenu>
);
const showMembersMenuItem = isGroup && ( const showMembersMenuItem = isGroup && (
<MenuItem onClick={onShowGroupMembers}>{i18n('showMembers')}</MenuItem> <MenuItem onClick={onShowGroupMembers}>{i18n('showMembers')}</MenuItem>
); );

@ -21,6 +21,7 @@ interface Props {
isPublic: boolean; isPublic: boolean;
isAdmin: boolean; isAdmin: boolean;
amMod: boolean; amMod: boolean;
isKickedFromGroup: boolean;
onGoBack: () => void; onGoBack: () => void;
onInviteFriends: () => void; onInviteFriends: () => void;
@ -212,14 +213,15 @@ export class SessionGroupSettings extends React.Component<Props, any> {
onLeaveGroup, onLeaveGroup,
isPublic, isPublic,
isAdmin, isAdmin,
isKickedFromGroup,
amMod, amMod,
} = this.props; } = this.props;
const { documents, media, onItemClick } = this.state; const { documents, media, onItemClick } = this.state;
const showMemberCount = !!(memberCount && memberCount > 0); const showMemberCount = !!(memberCount && memberCount > 0);
const hasDisappearingMessages = !isPublic; const hasDisappearingMessages = !isPublic && !isKickedFromGroup;
const leaveGroupString = isPublic const leaveGroupString = isPublic
? window.i18n('leaveOpenGroup') ? window.i18n('leaveOpenGroup')
: window.i18n('leaveClosedGroup'); : isKickedFromGroup ? window.i18n('youAreKickedFromThisGroup') : window.i18n('leaveClosedGroup');
const disappearingMessagesOptions = timerOptions.map(option => { const disappearingMessagesOptions = timerOptions.map(option => {
return { return {
@ -230,8 +232,8 @@ export class SessionGroupSettings extends React.Component<Props, any> {
}; };
}); });
const showUpdateGroupNameButton = isPublic ? amMod : isAdmin; const showUpdateGroupNameButton = isPublic && !isKickedFromGroup ? amMod : isAdmin;
const showUpdateGroupMembersButton = !isPublic && isAdmin; const showUpdateGroupMembersButton = !isPublic && !isKickedFromGroup && isAdmin;
return ( return (
<div className="group-settings"> <div className="group-settings">
@ -292,6 +294,7 @@ export class SessionGroupSettings extends React.Component<Props, any> {
buttonColor={SessionButtonColor.Danger} buttonColor={SessionButtonColor.Danger}
buttonType={SessionButtonType.SquareOutline} buttonType={SessionButtonType.SquareOutline}
onClick={onLeaveGroup} onClick={onLeaveGroup}
disabled={isKickedFromGroup}
/> />
</div> </div>
); );
@ -305,9 +308,10 @@ export class SessionGroupSettings extends React.Component<Props, any> {
avatarPath, avatarPath,
isAdmin, isAdmin,
isPublic, isPublic,
isKickedFromGroup,
} = this.props; } = this.props;
const showInviteFriends = isPublic || isAdmin; const showInviteFriends = (isPublic || isAdmin) && !isKickedFromGroup;
return ( return (
<div className="group-settings-header"> <div className="group-settings-header">

Loading…
Cancel
Save