Fix rejoin of knock rooms (#11980)

Signed-off-by: Mikhail Aheichyk <mikhail.aheichyk@nordeck.net>
Co-authored-by: Mikhail Aheichyk <mikhail.aheichyk@nordeck.net>
This commit is contained in:
maheichyk 2023-12-04 13:20:24 +03:00 committed by GitHub
parent e2bc437774
commit 74ea0d134e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 160 additions and 4 deletions

View file

@ -2229,8 +2229,10 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
<div className="mx_RoomView" data-room-header={roomHeaderType}>
<ErrorBoundary>
<RoomPreviewBar
onJoinClick={this.onJoinButtonClicked}
room={this.state.room}
promptAskToJoin={myMembership === "leave" || this.state.promptAskToJoin}
canAskToJoinAndMembershipIsLeave={myMembership === "leave"}
promptAskToJoin={this.state.promptAskToJoin}
knocked={myMembership === "knock"}
onSubmitAskToJoin={this.onSubmitAskToJoin}
onCancelAskToJoin={this.onCancelAskToJoin}

View file

@ -106,6 +106,7 @@ interface IProps {
onRejectAndIgnoreClick?(): void;
onForgetClick?(): void;
canAskToJoinAndMembershipIsLeave?: boolean;
promptAskToJoin?: boolean;
knocked?: boolean;
onSubmitAskToJoin?(reason?: string): void;
@ -193,6 +194,8 @@ export default class RoomPreviewBar extends React.Component<IProps, IState> {
if (myMember.isKicked()) {
if (previousMembership === "knock") {
return MessageCase.RequestDenied;
} else if (this.props.promptAskToJoin) {
return MessageCase.PromptAskToJoin;
}
return MessageCase.Kicked;
} else if (myMember.membership === "ban") {
@ -208,7 +211,7 @@ export default class RoomPreviewBar extends React.Component<IProps, IState> {
return MessageCase.Loading;
} else if (this.props.knocked) {
return MessageCase.Knocked;
} else if (this.props.promptAskToJoin) {
} else if (this.props.canAskToJoinAndMembershipIsLeave || this.props.promptAskToJoin) {
return MessageCase.PromptAskToJoin;
}