mirror of
https://github.com/vector-im/element-call.git
synced 2026-08-29 21:15:19 +00:00
Iterate
This commit is contained in:
@@ -24,11 +24,7 @@ import {
|
|||||||
} from "livekit-client";
|
} from "livekit-client";
|
||||||
import * as ComponentsCore from "@livekit/components-core";
|
import * as ComponentsCore from "@livekit/components-core";
|
||||||
import { isEqual } from "lodash";
|
import { isEqual } from "lodash";
|
||||||
import {
|
import { CallMembership, MatrixRTCSession } from "matrix-js-sdk/src/matrixrtc";
|
||||||
CallMembership,
|
|
||||||
MatrixRTCSession,
|
|
||||||
MatrixRTCSessionEvent,
|
|
||||||
} from "matrix-js-sdk/src/matrixrtc";
|
|
||||||
|
|
||||||
import { CallViewModel, Layout } from "./CallViewModel";
|
import { CallViewModel, Layout } from "./CallViewModel";
|
||||||
import {
|
import {
|
||||||
@@ -39,13 +35,13 @@ import {
|
|||||||
mockRemoteParticipant,
|
mockRemoteParticipant,
|
||||||
withTestScheduler,
|
withTestScheduler,
|
||||||
mockMembership,
|
mockMembership,
|
||||||
|
MockRTCSession,
|
||||||
} from "../utils/test";
|
} from "../utils/test";
|
||||||
import {
|
import {
|
||||||
ECAddonConnectionState,
|
ECAddonConnectionState,
|
||||||
ECConnectionState,
|
ECConnectionState,
|
||||||
} from "../livekit/useECConnectionState";
|
} from "../livekit/useECConnectionState";
|
||||||
import { E2eeType } from "../e2ee/e2eeType";
|
import { E2eeType } from "../e2ee/e2eeType";
|
||||||
import { MockRoom, MockRTCSession } from "../useReactions.test";
|
|
||||||
|
|
||||||
vi.mock("@livekit/components-core");
|
vi.mock("@livekit/components-core");
|
||||||
|
|
||||||
@@ -199,12 +195,11 @@ function withCallViewModel(
|
|||||||
} as Partial<MatrixClient> as MatrixClient,
|
} as Partial<MatrixClient> as MatrixClient,
|
||||||
getMember: (userId) => roomMembers.get(userId) ?? null,
|
getMember: (userId) => roomMembers.get(userId) ?? null,
|
||||||
});
|
});
|
||||||
const rtcSession = new MockRTCSession(room as unknown as MockRoom);
|
const rtcSession = new MockRTCSession(
|
||||||
rtcMembers.subscribe((m) => {
|
room,
|
||||||
// always prepend the local participant
|
localRtcMember,
|
||||||
rtcSession.memberships = [localRtcMember, ...m];
|
[],
|
||||||
rtcSession.emit(MatrixRTCSessionEvent.MembershipsChanged);
|
).withMemberships(rtcMembers);
|
||||||
});
|
|
||||||
const participantsSpy = vi
|
const participantsSpy = vi
|
||||||
.spyOn(ComponentsCore, "connectedParticipantsObserver")
|
.spyOn(ComponentsCore, "connectedParticipantsObserver")
|
||||||
.mockReturnValue(remoteParticipants);
|
.mockReturnValue(remoteParticipants);
|
||||||
|
|||||||
@@ -11,10 +11,14 @@ import {
|
|||||||
RoomMember,
|
RoomMember,
|
||||||
Room as MatrixRoom,
|
Room as MatrixRoom,
|
||||||
MatrixEvent,
|
MatrixEvent,
|
||||||
|
Room,
|
||||||
|
TypedEventEmitter,
|
||||||
} from "matrix-js-sdk/src/matrix";
|
} from "matrix-js-sdk/src/matrix";
|
||||||
import {
|
import {
|
||||||
CallMembership,
|
CallMembership,
|
||||||
Focus,
|
Focus,
|
||||||
|
MatrixRTCSessionEvent,
|
||||||
|
MatrixRTCSessionEventHandlerMap,
|
||||||
SessionMembershipData,
|
SessionMembershipData,
|
||||||
} from "matrix-js-sdk/src/matrixrtc";
|
} from "matrix-js-sdk/src/matrixrtc";
|
||||||
import {
|
import {
|
||||||
@@ -229,3 +233,30 @@ export async function withRemoteMedia(
|
|||||||
vm.destroy();
|
vm.destroy();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class MockRTCSession extends TypedEventEmitter<
|
||||||
|
MatrixRTCSessionEvent,
|
||||||
|
MatrixRTCSessionEventHandlerMap
|
||||||
|
> {
|
||||||
|
public constructor(
|
||||||
|
public readonly room: Room,
|
||||||
|
private localMembership: CallMembership,
|
||||||
|
public memberships: CallMembership[] = [],
|
||||||
|
) {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public withMemberships(
|
||||||
|
rtcMembers: Observable<Partial<CallMembership>[]>,
|
||||||
|
): MockRTCSession {
|
||||||
|
rtcMembers.subscribe((m) => {
|
||||||
|
const old = this.memberships;
|
||||||
|
// always prepend the local participant
|
||||||
|
const updated = [this.localMembership, ...(m as CallMembership[])];
|
||||||
|
this.memberships = updated;
|
||||||
|
this.emit(MatrixRTCSessionEvent.MembershipsChanged, old, updated);
|
||||||
|
});
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user