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
|
@ -15,7 +15,7 @@ limitations under the License.
|
|||
*/
|
||||
|
||||
import { uniq } from "lodash";
|
||||
import { Room, MatrixEvent, EventType, ClientEvent, MatrixClient } from "matrix-js-sdk/src/matrix";
|
||||
import { Room, MatrixEvent, EventType, ClientEvent, MatrixClient, KnownMembership } from "matrix-js-sdk/src/matrix";
|
||||
import { logger } from "matrix-js-sdk/src/logger";
|
||||
import { Optional } from "matrix-events-sdk";
|
||||
|
||||
|
@ -172,7 +172,7 @@ export default class DMRoomMap {
|
|||
|
||||
const joinedRooms = commonRooms
|
||||
.map((r) => this.matrixClient.getRoom(r))
|
||||
.filter((r) => r && r.getMyMembership() === Membership.Join);
|
||||
.filter((r) => r && r.getMyMembership() === KnownMembership.Join);
|
||||
|
||||
return joinedRooms[0];
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
import { MatrixError, MatrixClient, EventType, HistoryVisibility } from "matrix-js-sdk/src/matrix";
|
||||
import { MatrixError, MatrixClient, EventType, HistoryVisibility, KnownMembership } from "matrix-js-sdk/src/matrix";
|
||||
import { defer, IDeferred } from "matrix-js-sdk/src/utils";
|
||||
import { logger } from "matrix-js-sdk/src/logger";
|
||||
|
||||
|
@ -159,17 +159,17 @@ export default class MultiInviter {
|
|||
if (!room) throw new Error("Room not found");
|
||||
|
||||
const member = room.getMember(addr);
|
||||
if (member?.membership === Membership.Join) {
|
||||
if (member?.membership === KnownMembership.Join) {
|
||||
throw new MatrixError({
|
||||
errcode: USER_ALREADY_JOINED,
|
||||
error: "Member already joined",
|
||||
});
|
||||
} else if (member?.membership === Membership.Invite) {
|
||||
} else if (member?.membership === KnownMembership.Invite) {
|
||||
throw new MatrixError({
|
||||
errcode: USER_ALREADY_INVITED,
|
||||
error: "Member already invited",
|
||||
});
|
||||
} else if (member?.membership === Membership.Ban) {
|
||||
} else if (member?.membership === KnownMembership.Ban) {
|
||||
let proceed = false;
|
||||
// Check if we can unban the invitee.
|
||||
// See https://spec.matrix.org/v1.7/rooms/v10/#authorization-rules, particularly 4.5.3 and 4.5.4.
|
||||
|
@ -177,8 +177,8 @@ export default class MultiInviter {
|
|||
if (
|
||||
!!ourMember &&
|
||||
member.powerLevel < ourMember.powerLevel &&
|
||||
room.currentState.hasSufficientPowerLevelFor(Membership.Ban, ourMember.powerLevel) &&
|
||||
room.currentState.hasSufficientPowerLevelFor(Membership.Kick, ourMember.powerLevel)
|
||||
room.currentState.hasSufficientPowerLevelFor("ban", ourMember.powerLevel) &&
|
||||
room.currentState.hasSufficientPowerLevelFor("kick", ourMember.powerLevel)
|
||||
) {
|
||||
const { finished } = Modal.createDialog(ConfirmUserActionDialog, {
|
||||
member,
|
||||
|
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
import { Room, EventType, ClientEvent, MatrixClient } from "matrix-js-sdk/src/matrix";
|
||||
import { Room, EventType, ClientEvent, MatrixClient, KnownMembership } from "matrix-js-sdk/src/matrix";
|
||||
import { logger } from "matrix-js-sdk/src/logger";
|
||||
|
||||
import { inviteUsersToRoom } from "../RoomInvite";
|
||||
|
@ -68,8 +68,8 @@ export async function upgradeRoom(
|
|||
let toInvite: string[] = [];
|
||||
if (inviteUsers) {
|
||||
toInvite = [
|
||||
...room.getMembersWithMembership(Membership.Join),
|
||||
...room.getMembersWithMembership(Membership.Invite),
|
||||
...room.getMembersWithMembership(KnownMembership.Join),
|
||||
...room.getMembersWithMembership(KnownMembership.Invite),
|
||||
]
|
||||
.map((m) => m.userId)
|
||||
.filter((m) => m !== cli.getUserId());
|
||||
|
|
|
@ -15,7 +15,7 @@ limitations under the License.
|
|||
*/
|
||||
|
||||
import { groupBy, mapValues, maxBy, minBy, sumBy, takeRight } from "lodash";
|
||||
import { MatrixClient, Room, RoomMember } from "matrix-js-sdk/src/matrix";
|
||||
import { KnownMembership, MatrixClient, Room, RoomMember } from "matrix-js-sdk/src/matrix";
|
||||
|
||||
import { Member } from "./direct-messages";
|
||||
import DMRoomMap from "./DMRoomMap";
|
||||
|
@ -52,7 +52,7 @@ function joinedRooms(cli: MatrixClient): Room[] {
|
|||
return (
|
||||
cli
|
||||
.getRooms()
|
||||
.filter((r) => r.getMyMembership() === Membership.Join)
|
||||
.filter((r) => r.getMyMembership() === KnownMembership.Join)
|
||||
// Skip low priority rooms and DMs
|
||||
.filter((r) => !DMRoomMap.shared().getUserIdForRoomId(r.roomId))
|
||||
.filter((r) => !Object.keys(r.tags).includes("m.lowpriority"))
|
||||
|
|
|
@ -17,7 +17,14 @@ limitations under the License.
|
|||
|
||||
import { base32 } from "rfc4648";
|
||||
import { IWidget, IWidgetData } from "matrix-widget-api";
|
||||
import { Room, ClientEvent, MatrixClient, RoomStateEvent, MatrixEvent } from "matrix-js-sdk/src/matrix";
|
||||
import {
|
||||
Room,
|
||||
ClientEvent,
|
||||
MatrixClient,
|
||||
RoomStateEvent,
|
||||
MatrixEvent,
|
||||
KnownMembership,
|
||||
} from "matrix-js-sdk/src/matrix";
|
||||
import { logger } from "matrix-js-sdk/src/logger";
|
||||
import { CallType } from "matrix-js-sdk/src/webrtc/call";
|
||||
import { randomString, randomLowercaseString, randomUppercaseString } from "matrix-js-sdk/src/randomstring";
|
||||
|
@ -83,7 +90,7 @@ export default class WidgetUtils {
|
|||
return false;
|
||||
}
|
||||
|
||||
if (room.getMyMembership() !== Membership.Join) {
|
||||
if (room.getMyMembership() !== KnownMembership.Join) {
|
||||
logger.warn(`User ${me} is not in room ${roomId}`);
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -15,7 +15,13 @@ limitations under the License.
|
|||
*/
|
||||
|
||||
import { MEGOLM_ALGORITHM } from "matrix-js-sdk/src/crypto/olmlib";
|
||||
import { EventType, KNOWN_SAFE_ROOM_VERSION, MatrixClient, MatrixEvent } from "matrix-js-sdk/src/matrix";
|
||||
import {
|
||||
EventType,
|
||||
KNOWN_SAFE_ROOM_VERSION,
|
||||
KnownMembership,
|
||||
MatrixClient,
|
||||
MatrixEvent,
|
||||
} from "matrix-js-sdk/src/matrix";
|
||||
|
||||
import { LocalRoom, LOCAL_ROOM_ID_PREFIX } from "../../../src/models/LocalRoom";
|
||||
import { determineCreateRoomEncryptionOption, Member } from "../../../src/utils/direct-messages";
|
||||
|
@ -76,7 +82,7 @@ export async function createDmLocalRoom(client: MatrixClient, targets: Member[])
|
|||
type: EventType.RoomMember,
|
||||
content: {
|
||||
displayname: userId,
|
||||
membership: MembershipJoin,
|
||||
membership: KnownMembership.Join,
|
||||
},
|
||||
state_key: userId,
|
||||
user_id: userId,
|
||||
|
@ -93,7 +99,7 @@ export async function createDmLocalRoom(client: MatrixClient, targets: Member[])
|
|||
content: {
|
||||
displayname: target.name,
|
||||
avatar_url: target.getMxcAvatarUrl() ?? undefined,
|
||||
membership: Membership.Invite,
|
||||
membership: KnownMembership.Invite,
|
||||
isDirect: true,
|
||||
},
|
||||
state_key: target.userId,
|
||||
|
@ -108,7 +114,7 @@ export async function createDmLocalRoom(client: MatrixClient, targets: Member[])
|
|||
content: {
|
||||
displayname: target.name,
|
||||
avatar_url: target.getMxcAvatarUrl() ?? undefined,
|
||||
membership: Membership.Join,
|
||||
membership: KnownMembership.Join,
|
||||
},
|
||||
state_key: target.userId,
|
||||
sender: target.userId,
|
||||
|
@ -118,7 +124,7 @@ export async function createDmLocalRoom(client: MatrixClient, targets: Member[])
|
|||
});
|
||||
|
||||
localRoom.targets = targets;
|
||||
localRoom.updateMyMembership(Membership.Join);
|
||||
localRoom.updateMyMembership(KnownMembership.Join);
|
||||
localRoom.addLiveEvents(events);
|
||||
localRoom.currentState.setStateEvents(events);
|
||||
localRoom.name = localRoom.getDefaultRoomName(client.getUserId()!);
|
||||
|
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
import { MatrixClient, Room } from "matrix-js-sdk/src/matrix";
|
||||
import { KnownMembership, MatrixClient, Room } from "matrix-js-sdk/src/matrix";
|
||||
|
||||
import DMRoomMap from "../DMRoomMap";
|
||||
import { isLocalRoom } from "../localRoom/isLocalRoom";
|
||||
|
@ -42,7 +42,7 @@ function extractSuitableRoom(rooms: Room[], userId: string, findRoomWithThirdpar
|
|||
// a DM is a room of two people that contains those two people exactly. This does mean
|
||||
// that bots, assistants, etc will ruin a room's DM-ness, though this is a problem for
|
||||
// canonical DMs to solve.
|
||||
if (r && r.getMyMembership() === Membership.Join) {
|
||||
if (r && r.getMyMembership() === KnownMembership.Join) {
|
||||
if (isLocalRoom(r)) return false;
|
||||
|
||||
const functionalUsers = getFunctionalMembers(r);
|
||||
|
|
|
@ -14,7 +14,16 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
import { Room, RoomMember, RoomState, RoomStateEvent, MatrixEvent, MatrixClient } from "matrix-js-sdk/src/matrix";
|
||||
import {
|
||||
Room,
|
||||
RoomMember,
|
||||
RoomState,
|
||||
RoomStateEvent,
|
||||
MatrixEvent,
|
||||
MatrixClient,
|
||||
Membership,
|
||||
KnownMembership,
|
||||
} from "matrix-js-sdk/src/matrix";
|
||||
|
||||
import { MatrixClientPeg } from "../MatrixClientPeg";
|
||||
import SettingsStore from "../settings/SettingsStore";
|
||||
|
@ -66,11 +75,11 @@ export function splitRoomsByMembership(rooms: Room[]): MembershipSplit {
|
|||
}
|
||||
|
||||
export function getEffectiveMembership(membership: Membership): EffectiveMembership {
|
||||
if (membership === Membership.Invite) {
|
||||
if (membership === KnownMembership.Invite) {
|
||||
return EffectiveMembership.Invite;
|
||||
} else if (
|
||||
membership === Membership.Join ||
|
||||
(SettingsStore.getValue("feature_ask_to_join") && membership === Membership.Knock)
|
||||
membership === KnownMembership.Join ||
|
||||
(SettingsStore.getValue("feature_ask_to_join") && membership === KnownMembership.Knock)
|
||||
) {
|
||||
return EffectiveMembership.Join;
|
||||
} else {
|
||||
|
@ -84,7 +93,7 @@ export function isKnockDenied(room: Room): boolean | undefined {
|
|||
const member = memberId ? room.getMember(memberId) : null;
|
||||
const previousMembership = member?.events.member?.getPrevContent().membership;
|
||||
|
||||
return member?.isKicked() && previousMembership === Membership.Knock;
|
||||
return member?.isKicked() && previousMembership === KnownMembership.Knock;
|
||||
}
|
||||
|
||||
export function getEffectiveMembershipTag(room: Room, membership?: string): EffectiveMembership {
|
||||
|
|
|
@ -16,7 +16,7 @@ limitations under the License.
|
|||
|
||||
import isIp from "is-ip";
|
||||
import * as utils from "matrix-js-sdk/src/utils";
|
||||
import { Room, MatrixClient, RoomStateEvent, EventType } from "matrix-js-sdk/src/matrix";
|
||||
import { Room, MatrixClient, RoomStateEvent, EventType, KnownMembership } from "matrix-js-sdk/src/matrix";
|
||||
import { logger } from "matrix-js-sdk/src/logger";
|
||||
|
||||
import MatrixToPermalinkConstructor, {
|
||||
|
@ -178,7 +178,7 @@ export class RoomPermalinkCreator {
|
|||
const entries = Object.entries(users);
|
||||
const allowedEntries = entries.filter(([userId]) => {
|
||||
const member = this.room?.getMember(userId);
|
||||
if (!member || member.membership !== Membership.Join) {
|
||||
if (!member || member.membership !== KnownMembership.Join) {
|
||||
return false;
|
||||
}
|
||||
const serverName = getServerName(userId);
|
||||
|
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
import { JoinRule, Room } from "matrix-js-sdk/src/matrix";
|
||||
import { JoinRule, KnownMembership, Room } from "matrix-js-sdk/src/matrix";
|
||||
|
||||
import { shouldShowComponent } from "../../customisations/helpers/UIComponents";
|
||||
import { UIComponent } from "../../settings/UIFeature";
|
||||
|
@ -29,5 +29,5 @@ export function canInviteTo(room: Room): boolean {
|
|||
const canInvite =
|
||||
!!room.canInvite(client.getSafeUserId()) || !!(room.isSpaceRoom() && room.getJoinRule() === JoinRule.Public);
|
||||
|
||||
return canInvite && room.getMyMembership() === Membership.Join && shouldShowComponent(UIComponent.InviteUsers);
|
||||
return canInvite && room.getMyMembership() === KnownMembership.Join && shouldShowComponent(UIComponent.InviteUsers);
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ limitations under the License.
|
|||
*/
|
||||
|
||||
import React from "react";
|
||||
import { Room, ICreateRoomStateEvent, RoomType, EventType, JoinRule } from "matrix-js-sdk/src/matrix";
|
||||
import { Room, ICreateRoomStateEvent, RoomType, EventType, JoinRule, KnownMembership } from "matrix-js-sdk/src/matrix";
|
||||
|
||||
import { calculateRoomVia } from "./permalinks/Permalinks";
|
||||
import Modal from "../Modal";
|
||||
|
@ -40,7 +40,7 @@ import { SdkContextClass } from "../contexts/SDKContext";
|
|||
export const shouldShowSpaceSettings = (space: Room): boolean => {
|
||||
const userId = space.client.getUserId()!;
|
||||
return (
|
||||
space.getMyMembership() === Membership.Join &&
|
||||
space.getMyMembership() === KnownMembership.Join &&
|
||||
(space.currentState.maySendStateEvent(EventType.RoomAvatar, userId) ||
|
||||
space.currentState.maySendStateEvent(EventType.RoomName, userId) ||
|
||||
space.currentState.maySendStateEvent(EventType.RoomTopic, userId) ||
|
||||
|
@ -85,7 +85,7 @@ export const showCreateNewRoom = async (space: Room, type?: RoomType): Promise<b
|
|||
};
|
||||
|
||||
export const shouldShowSpaceInvite = (space: Room): boolean =>
|
||||
((space?.getMyMembership() === Membership.Join && space.canInvite(space.client.getUserId()!)) ||
|
||||
((space?.getMyMembership() === KnownMembership.Join && space.canInvite(space.client.getUserId()!)) ||
|
||||
space.getJoinRule() === JoinRule.Public) &&
|
||||
shouldShowComponent(UIComponent.InviteUsers);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue