Adapt Membership usage for the change to an enum KnownMembership
This commit is contained in:
parent
da99bad7b9
commit
34559d2a89
115 changed files with 764 additions and 593 deletions
|
@ -37,6 +37,7 @@ import {
|
|||
MatrixError,
|
||||
ISearchResults,
|
||||
THREAD_RELATION_TYPE,
|
||||
KnownMembership,
|
||||
} from "matrix-js-sdk/src/matrix";
|
||||
import { logger } from "matrix-js-sdk/src/logger";
|
||||
import { CallState, MatrixCall } from "matrix-js-sdk/src/webrtc/call";
|
||||
|
@ -1454,7 +1455,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
|
|||
private async loadMembersIfJoined(room: Room): Promise<void> {
|
||||
// lazy load members if enabled
|
||||
if (this.context.client?.hasLazyLoadMembersEnabled()) {
|
||||
if (room && room.getMyMembership() === Membership.Join) {
|
||||
if (room && room.getMyMembership() === KnownMembership.Join) {
|
||||
try {
|
||||
await room.loadMembersIfNeeded();
|
||||
if (!this.unmounted) {
|
||||
|
@ -1588,7 +1589,8 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
|
|||
if (room && this.context.client) {
|
||||
const me = this.context.client.getSafeUserId();
|
||||
const canReact =
|
||||
room.getMyMembership() === Membership.Join && room.currentState.maySendEvent(EventType.Reaction, me);
|
||||
room.getMyMembership() === KnownMembership.Join &&
|
||||
room.currentState.maySendEvent(EventType.Reaction, me);
|
||||
const canSendMessages = room.maySendMessage();
|
||||
const canSelfRedact = room.currentState.maySendEvent(EventType.RoomRedaction, me);
|
||||
|
||||
|
@ -1622,10 +1624,10 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
|
|||
|
||||
private updateDMState(): void {
|
||||
const room = this.state.room;
|
||||
if (room.getMyMembership() != Membership.Join) {
|
||||
if (room?.getMyMembership() != KnownMembership.Join) {
|
||||
return;
|
||||
}
|
||||
const dmInviter = room.getDMInviter();
|
||||
const dmInviter = room?.getDMInviter();
|
||||
if (dmInviter) {
|
||||
Rooms.setDMRoom(room.client, room.roomId, dmInviter);
|
||||
}
|
||||
|
@ -1663,7 +1665,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
|
|||
roomId,
|
||||
opts: { inviteSignUrl: signUrl },
|
||||
metricsTrigger:
|
||||
this.state.room?.getMyMembership() === Membership.Invite ? "Invite" : "RoomPreview",
|
||||
this.state.room?.getMyMembership() === KnownMembership.Invite ? "Invite" : "RoomPreview",
|
||||
canAskToJoin: this.state.canAskToJoin,
|
||||
});
|
||||
}
|
||||
|
@ -2184,7 +2186,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
|
|||
const myMembership = this.state.room.getMyMembership();
|
||||
if (
|
||||
isVideoRoom(this.state.room) &&
|
||||
!(SettingsStore.getValue("feature_video_rooms") && myMembership === Membership.Join)
|
||||
!(SettingsStore.getValue("feature_video_rooms") && myMembership === KnownMembership.Join)
|
||||
) {
|
||||
return (
|
||||
<ErrorBoundary>
|
||||
|
@ -2201,7 +2203,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
|
|||
}
|
||||
|
||||
// SpaceRoomView handles invites itself
|
||||
if (myMembership === Membership.Invite && !this.state.room.isSpaceRoom()) {
|
||||
if (myMembership === KnownMembership.Invite && !this.state.room.isSpaceRoom()) {
|
||||
if (this.state.joining || this.state.rejecting) {
|
||||
return (
|
||||
<ErrorBoundary>
|
||||
|
@ -2248,16 +2250,19 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
|
|||
}
|
||||
}
|
||||
|
||||
if (this.state.canAskToJoin && [Membership.Knock, Membership.Leave].includes(myMembership)) {
|
||||
if (
|
||||
this.state.canAskToJoin &&
|
||||
([KnownMembership.Knock, KnownMembership.Leave] as Array<string>).includes(myMembership)
|
||||
) {
|
||||
return (
|
||||
<div className="mx_RoomView" data-room-header={roomHeaderType}>
|
||||
<ErrorBoundary>
|
||||
<RoomPreviewBar
|
||||
onJoinClick={this.onJoinButtonClicked}
|
||||
room={this.state.room}
|
||||
canAskToJoinAndMembershipIsLeave={myMembership === Membership.Leave}
|
||||
canAskToJoinAndMembershipIsLeave={myMembership === KnownMembership.Leave}
|
||||
promptAskToJoin={this.state.promptAskToJoin}
|
||||
knocked={myMembership === Membership.Knock}
|
||||
knocked={myMembership === KnownMembership.Knock}
|
||||
onSubmitAskToJoin={this.onSubmitAskToJoin}
|
||||
onCancelAskToJoin={this.onCancelAskToJoin}
|
||||
onForgetClick={this.onForgetClick}
|
||||
|
@ -2289,7 +2294,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
|
|||
statusBar = (
|
||||
<RoomStatusBar
|
||||
room={this.state.room}
|
||||
isPeeking={myMembership !== Membership.Join}
|
||||
isPeeking={myMembership !== KnownMembership.Join}
|
||||
onInviteClick={this.onInviteClick}
|
||||
onVisible={this.onStatusBarVisible}
|
||||
onHidden={this.onStatusBarHidden}
|
||||
|
@ -2333,7 +2338,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
|
|||
);
|
||||
} else if (showRoomUpgradeBar) {
|
||||
aux = <RoomUpgradeWarningBar room={this.state.room} />;
|
||||
} else if (myMembership !== Membership.Join) {
|
||||
} else if (myMembership !== KnownMembership.Join) {
|
||||
// We do have a room object for this room, but we're not currently in it.
|
||||
// We may have a 3rd party invite to it.
|
||||
let inviterName: string | undefined;
|
||||
|
@ -2407,7 +2412,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
|
|||
let messageComposer;
|
||||
const showComposer =
|
||||
// joined and not showing search results
|
||||
myMembership === Membership.Join && !this.state.search;
|
||||
myMembership === KnownMembership.Join && !this.state.search;
|
||||
if (showComposer) {
|
||||
messageComposer = (
|
||||
<MessageComposer
|
||||
|
@ -2605,7 +2610,8 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
|
|||
const myMember = this.state.room!.getMember(this.context.client!.getSafeUserId());
|
||||
const showForgetButton =
|
||||
!this.context.client.isGuest() &&
|
||||
([Membership.Leave, Membership.Ban].includes(myMembership) || myMember?.isKicked());
|
||||
(([KnownMembership.Leave, KnownMembership.Ban] as Array<string>).includes(myMembership) ||
|
||||
myMember?.isKicked());
|
||||
|
||||
return (
|
||||
<RoomContext.Provider value={this.state}>
|
||||
|
@ -2642,7 +2648,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
|
|||
room={this.state.room}
|
||||
searchInfo={this.state.search}
|
||||
oobData={this.props.oobData}
|
||||
inRoom={myMembership === Membership.Join}
|
||||
inRoom={myMembership === KnownMembership.Join}
|
||||
onSearchClick={onSearchClick}
|
||||
onInviteClick={onInviteClick}
|
||||
onForgetClick={showForgetButton ? onForgetClick : null}
|
||||
|
|
|
@ -41,6 +41,7 @@ import {
|
|||
HistoryVisibility,
|
||||
HierarchyRelation,
|
||||
HierarchyRoom,
|
||||
KnownMembership,
|
||||
} from "matrix-js-sdk/src/matrix";
|
||||
import { RoomHierarchy } from "matrix-js-sdk/src/room-hierarchy";
|
||||
import classNames from "classnames";
|
||||
|
@ -112,7 +113,7 @@ const Tile: React.FC<ITileProps> = ({
|
|||
const cli = useContext(MatrixClientContext);
|
||||
const joinedRoom = useTypedEventEmitterState(cli, ClientEvent.Room, () => {
|
||||
const cliRoom = cli?.getRoom(room.room_id);
|
||||
return cliRoom?.getMyMembership() === Membership.Join ? cliRoom : undefined;
|
||||
return cliRoom?.getMyMembership() === KnownMembership.Join ? cliRoom : undefined;
|
||||
});
|
||||
const joinedRoomName = useTypedEventEmitterState(joinedRoom, RoomEvent.Name, (room) => room?.name);
|
||||
const name =
|
||||
|
@ -828,7 +829,7 @@ const SpaceHierarchy: React.FC<IProps> = ({ space, initialText = "", showRoom, a
|
|||
content = <Spinner />;
|
||||
} else {
|
||||
const hasPermissions =
|
||||
space?.getMyMembership() === Membership.Join &&
|
||||
space?.getMyMembership() === KnownMembership.Join &&
|
||||
space.currentState.maySendStateEvent(EventType.SpaceChild, cli.getSafeUserId());
|
||||
|
||||
const root = hierarchy.roomMap.get(space.roomId);
|
||||
|
@ -846,7 +847,7 @@ const SpaceHierarchy: React.FC<IProps> = ({ space, initialText = "", showRoom, a
|
|||
onViewRoomClick={(roomId, roomType) => showRoom(cli, hierarchy, roomId, roomType)}
|
||||
onJoinRoomClick={async (roomId, parents) => {
|
||||
for (const parent of parents) {
|
||||
if (cli.getRoom(parent)?.getMyMembership() !== Membership.Join) {
|
||||
if (cli.getRoom(parent)?.getMyMembership() !== KnownMembership.Join) {
|
||||
await joinRoom(cli, hierarchy, parent);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
import { EventType, RoomType, JoinRule, Preset, Room, RoomEvent } from "matrix-js-sdk/src/matrix";
|
||||
import { EventType, RoomType, JoinRule, Preset, Room, RoomEvent, KnownMembership } from "matrix-js-sdk/src/matrix";
|
||||
import { logger } from "matrix-js-sdk/src/logger";
|
||||
import React, { useCallback, useContext, useRef, useState } from "react";
|
||||
|
||||
|
@ -237,7 +237,7 @@ const SpaceLanding: React.FC<{ space: Room }> = ({ space }) => {
|
|||
}
|
||||
|
||||
const hasAddRoomPermissions =
|
||||
myMembership === Membership.Join && space.currentState.maySendStateEvent(EventType.SpaceChild, userId);
|
||||
myMembership === KnownMembership.Join && space.currentState.maySendStateEvent(EventType.SpaceChild, userId);
|
||||
|
||||
let addRoomButton;
|
||||
if (hasAddRoomPermissions) {
|
||||
|
@ -678,7 +678,7 @@ export default class SpaceRoomView extends React.PureComponent<IProps, IState> {
|
|||
private renderBody(): JSX.Element {
|
||||
switch (this.state.phase) {
|
||||
case Phase.Landing:
|
||||
if (this.state.myMembership === Membership.Join) {
|
||||
if (this.state.myMembership === KnownMembership.Join) {
|
||||
return <SpaceLanding space={this.props.space} />;
|
||||
} else {
|
||||
return (
|
||||
|
|
|
@ -38,6 +38,8 @@ import {
|
|||
Thread,
|
||||
ThreadEvent,
|
||||
ReceiptType,
|
||||
KnownMembership,
|
||||
Membership,
|
||||
} from "matrix-js-sdk/src/matrix";
|
||||
import { debounce, findLastIndex, throttle } from "lodash";
|
||||
import { logger } from "matrix-js-sdk/src/logger";
|
||||
|
@ -1824,7 +1826,7 @@ class TimelinePanel extends React.Component<IProps, IState> {
|
|||
// that the event belongs to, and traversing the timeline looking for
|
||||
// that event, while keeping track of the user's membership
|
||||
let i = events.length - 1;
|
||||
let userMembership = Membership.Leave;
|
||||
let userMembership: Membership = KnownMembership.Leave;
|
||||
for (; i >= 0; i--) {
|
||||
const timeline = this.props.timelineSet.getTimelineForEvent(events[i].getId()!);
|
||||
if (!timeline) {
|
||||
|
@ -1838,14 +1840,14 @@ class TimelinePanel extends React.Component<IProps, IState> {
|
|||
}
|
||||
|
||||
userMembership =
|
||||
timeline.getState(EventTimeline.FORWARDS)?.getMember(userId)?.membership ?? Membership.Leave;
|
||||
timeline.getState(EventTimeline.FORWARDS)?.getMember(userId)?.membership ?? KnownMembership.Leave;
|
||||
const timelineEvents = timeline.getEvents();
|
||||
for (let j = timelineEvents.length - 1; j >= 0; j--) {
|
||||
const event = timelineEvents[j];
|
||||
if (event.getId() === events[i].getId()) {
|
||||
break;
|
||||
} else if (event.getStateKey() === userId && event.getType() === EventType.RoomMember) {
|
||||
userMembership = event.getPrevContent().membership || Membership.Leave;
|
||||
userMembership = event.getPrevContent().membership || KnownMembership.Leave;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -1856,9 +1858,9 @@ class TimelinePanel extends React.Component<IProps, IState> {
|
|||
for (; i >= 0; i--) {
|
||||
const event = events[i];
|
||||
if (event.getStateKey() === userId && event.getType() === EventType.RoomMember) {
|
||||
userMembership = event.getPrevContent().membership || Membership.Leave;
|
||||
userMembership = event.getPrevContent().membership || KnownMembership.Leave;
|
||||
} else if (
|
||||
userMembership === Membership.Leave &&
|
||||
userMembership === KnownMembership.Leave &&
|
||||
(event.isDecryptionFailure() || event.isBeingDecrypted())
|
||||
) {
|
||||
// reached an undecryptable message when the user wasn't in the room -- don't try to load any more
|
||||
|
|
|
@ -15,7 +15,7 @@ limitations under the License.
|
|||
*/
|
||||
|
||||
import React, { ReactNode } from "react";
|
||||
import { EventType, M_BEACON_INFO, MatrixEvent } from "matrix-js-sdk/src/matrix";
|
||||
import { EventType, KnownMembership, M_BEACON_INFO, MatrixEvent } from "matrix-js-sdk/src/matrix";
|
||||
|
||||
import { BaseGrouper } from "./BaseGrouper";
|
||||
import MessagePanel, { WrappedEvent } from "../MessagePanel";
|
||||
|
@ -48,7 +48,8 @@ export class CreationGrouper extends BaseGrouper {
|
|||
const eventType = event.getType();
|
||||
if (
|
||||
eventType === EventType.RoomMember &&
|
||||
(event.getStateKey() !== createEvent.getSender() || event.getContent()["membership"] !== Membership.Join)
|
||||
(event.getStateKey() !== createEvent.getSender() ||
|
||||
event.getContent()["membership"] !== KnownMembership.Join)
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue