Introduce Membership type

This commit is contained in:
Stanislav Demydiuk 2024-03-11 17:16:53 +00:00 committed by Andy Balaam
parent 3c6fd58628
commit da99bad7b9
115 changed files with 582 additions and 526 deletions

View file

@ -171,7 +171,7 @@ export default class MemberList extends React.Component<IProps, IState> {
};
private onMyMembership = (room: Room, membership: string, oldMembership?: string): void => {
if (room.roomId === this.props.roomId && membership === "join" && oldMembership !== "join") {
if (room.roomId === this.props.roomId && membership === Membership.Join && oldMembership !== Membership.Join) {
// we just joined the room, load the member list
this.updateListNow(true);
}
@ -363,7 +363,7 @@ export default class MemberList extends React.Component<IProps, IState> {
const room = cli.getRoom(this.props.roomId);
let inviteButton: JSX.Element | undefined;
if (room?.getMyMembership() === "join" && shouldShowComponent(UIComponent.InviteUsers)) {
if (room?.getMyMembership() === Membership.Join && shouldShowComponent(UIComponent.InviteUsers)) {
const inviteButtonText = room.isSpaceRoom() ? _t("space|invite_this_space") : _t("room|invite_this_room");
const button = (

View file

@ -112,7 +112,7 @@ const NewRoomIntro: React.FC = () => {
</React.Fragment>
);
} else {
const inRoom = room && room.getMyMembership() === "join";
const inRoom = room && room.getMyMembership() === Membership.Join;
const topic = room.currentState.getStateEvents(EventType.RoomTopic, "")?.getContent()?.topic;
const canAddTopic = inRoom && room.currentState.maySendStateEvent(EventType.RoomTopic, cli.getSafeUserId());

View file

@ -33,7 +33,7 @@ interface IProps {
const RoomInfoLine: FC<IProps> = ({ room }) => {
// summary will begin as undefined whilst loading and go null if it fails to load or we are not invited.
const summary = useAsyncMemo(async (): Promise<Awaited<ReturnType<MatrixClient["getRoomSummary"]>> | null> => {
if (room.getMyMembership() !== "invite") return null;
if (room.getMyMembership() !== Membership.Invite) return null;
try {
return await room.client.getRoomSummary(room.roomId);
} catch (e) {
@ -61,7 +61,7 @@ const RoomInfoLine: FC<IProps> = ({ room }) => {
}
let members: JSX.Element | undefined;
if (membership === "invite" && summary) {
if (membership === Membership.Invite && summary) {
// Don't trust local state and instead use the summary API
members = (
<span className="mx_RoomInfoLine_members">

View file

@ -35,7 +35,7 @@ export const RoomKnocksBar: VFC<{ room: Room }> = ({ room }) => {
const knockMembers = useTypedEventEmitterState(
room,
RoomStateEvent.Update,
useCallback(() => room.getMembersWithMembership("knock"), [room]),
useCallback(() => room.getMembersWithMembership(Membership.Knock), [room]),
);
const knockMembersCount = knockMembers.length;

View file

@ -192,13 +192,13 @@ export default class RoomPreviewBar extends React.Component<IProps, IState> {
if (myMember) {
const previousMembership = myMember.events.member?.getPrevContent().membership;
if (myMember.isKicked()) {
if (previousMembership === "knock") {
if (previousMembership === Membership.Knock) {
return MessageCase.RequestDenied;
} else if (this.props.promptAskToJoin) {
return MessageCase.PromptAskToJoin;
}
return MessageCase.Kicked;
} else if (myMember.membership === "ban") {
} else if (myMember.membership === Membership.Ban) {
return MessageCase.Banned;
}
}
@ -284,7 +284,7 @@ export default class RoomPreviewBar extends React.Component<IProps, IState> {
return false;
}
const memberContent = myMember.events.member?.getContent();
return memberContent?.membership === "invite" && memberContent.is_direct;
return memberContent?.membership === Membership.Invite && memberContent.is_direct;
}
private makeScreenAfterLogin(): { screen: string; params: Record<string, any> } {

View file

@ -73,7 +73,7 @@ const RoomPreviewCard: FC<IProps> = ({ room, onJoinButtonClicked, onRejectButton
let inviterSection: JSX.Element | null = null;
let joinButtons: JSX.Element;
if (myMembership === "join") {
if (myMembership === Membership.Join) {
joinButtons = (
<AccessibleButton
kind="danger_outline"
@ -87,7 +87,7 @@ const RoomPreviewCard: FC<IProps> = ({ room, onJoinButtonClicked, onRejectButton
{_t("action|leave")}
</AccessibleButton>
);
} else if (myMembership === "invite") {
} else if (myMembership === Membership.Invite) {
const inviteSender = room.getMember(cli.getUserId()!)?.events.member?.getSender();
if (inviteSender) {
@ -178,7 +178,7 @@ const RoomPreviewCard: FC<IProps> = ({ room, onJoinButtonClicked, onRejectButton
});
} else if (isVideoRoom && !videoRoomsEnabled) {
notice =
myMembership === "join"
myMembership === Membership.Join
? _t("room|view_failed_enable_video_rooms")
: _t("room|join_failed_enable_video_rooms");

View file

@ -124,7 +124,7 @@ export class RoomTile extends React.PureComponent<ClassProps, State> {
private get showContextMenu(): boolean {
return (
this.props.tag !== DefaultTagID.Invite &&
this.props.room.getMyMembership() !== "knock" &&
this.props.room.getMyMembership() !== Membership.Knock &&
!isKnockDenied(this.props.room) &&
shouldShowComponent(UIComponent.RoomOptionsMenu)
);
@ -387,7 +387,7 @@ export class RoomTile extends React.PureComponent<ClassProps, State> {
mx_RoomTile: true,
mx_RoomTile_sticky:
SettingsStore.getValue("feature_ask_to_join") &&
(this.props.room.getMyMembership() === "knock" || isKnockDenied(this.props.room)),
(this.props.room.getMyMembership() === Membership.Knock || isKnockDenied(this.props.room)),
mx_RoomTile_selected: this.state.selected,
mx_RoomTile_hasMenuOpen: !!(this.state.generalMenuPosition || this.state.notificationsMenuPosition),
mx_RoomTile_minimized: this.props.isMinimized,