1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-11-23 17:02:25 +03:00
This commit is contained in:
Half-Shot
2025-09-30 12:29:26 +01:00
parent d132e005ba
commit 5f092e187c
4 changed files with 8 additions and 7 deletions

View File

@@ -68,7 +68,7 @@ describe("MatrixRTCSession", () => {
testCreateSticky: true, testCreateSticky: true,
}, },
])( ])(
"roomSessionForRoom listenForSticky=$listenForStickyEvents listenForMemberStateEvents=$listenForStickyEvents testCreateSticky=$testCreateSticky", "roomSessionForRoom listenForSticky=$listenForStickyEvents listenForMemberStateEvents=$listenForMemberStateEvents testCreateSticky=$testCreateSticky",
(testConfig) => { (testConfig) => {
it("creates a room-scoped session from room state", () => { it("creates a room-scoped session from room state", () => {
const mockRoom = makeMockRoom([membershipTemplate], testConfig.testCreateSticky); const mockRoom = makeMockRoom([membershipTemplate], testConfig.testCreateSticky);

View File

@@ -14,10 +14,10 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
import { ClientEvent, EventTimeline, MatrixClient, Room } from "../../../src"; import { ClientEvent, EventTimeline, MatrixClient, type Room } from "../../../src";
import { RoomStateEvent } from "../../../src/models/room-state"; import { RoomStateEvent } from "../../../src/models/room-state";
import { MatrixRTCSessionManager, MatrixRTCSessionManagerEvents } from "../../../src/matrixrtc/MatrixRTCSessionManager"; import { MatrixRTCSessionManager, MatrixRTCSessionManagerEvents } from "../../../src/matrixrtc/MatrixRTCSessionManager";
import { makeMockRoom, MembershipData, membershipTemplate, mockRoomState, mockRTCEvent } from "./mocks"; import { makeMockRoom, type MembershipData, membershipTemplate, mockRoomState, mockRTCEvent } from "./mocks";
import { logger } from "../../../src/logger"; import { logger } from "../../../src/logger";
describe.each([{ eventKind: "sticky" }, { eventKind: "memberState" }])( describe.each([{ eventKind: "sticky" }, { eventKind: "memberState" }])(
@@ -77,7 +77,7 @@ describe.each([{ eventKind: "sticky" }, { eventKind: "memberState" }])(
} }
}); });
it("Fires event when session ends", async () => { it("Fires event when session ends", () => {
const onEnded = jest.fn(); const onEnded = jest.fn();
client.matrixRTC.on(MatrixRTCSessionManagerEvents.SessionEnded, onEnded); client.matrixRTC.on(MatrixRTCSessionManagerEvents.SessionEnded, onEnded);
const membershipData: MembershipData[] = [membershipTemplate]; const membershipData: MembershipData[] = [membershipTemplate];

View File

@@ -79,6 +79,7 @@ export function makeMockRoom(
const roomId = secureRandomString(8); const roomId = secureRandomString(8);
// Caching roomState here so it does not get recreated when calling `getLiveTimeline.getState()` // Caching roomState here so it does not get recreated when calling `getLiveTimeline.getState()`
const roomState = makeMockRoomState(useStickyEvents ? [] : membershipData, roomId); const roomState = makeMockRoomState(useStickyEvents ? [] : membershipData, roomId);
const ts = Date.now();
const room = Object.assign(new EventEmitter(), { const room = Object.assign(new EventEmitter(), {
roomId: roomId, roomId: roomId,
hasMembershipState: jest.fn().mockReturnValue(true), hasMembershipState: jest.fn().mockReturnValue(true),
@@ -89,7 +90,7 @@ export function makeMockRoom(
unstableGetStickyEvents: jest unstableGetStickyEvents: jest
.fn() .fn()
.mockImplementation(() => .mockImplementation(() =>
useStickyEvents ? membershipData.map((m) => mockRTCEvent(m, roomId, 10000)) : [], useStickyEvents ? membershipData.map((m) => mockRTCEvent(m, roomId, 10000, ts)) : [],
), ),
}) as unknown as Room; }) as unknown as Room;
return Object.assign(room, { return Object.assign(room, {
@@ -155,9 +156,10 @@ export function mockRTCEvent(
{ user_id: sender, ...membershipData }: MembershipData, { user_id: sender, ...membershipData }: MembershipData,
roomId: string, roomId: string,
stickyDuration?: number, stickyDuration?: number,
timestamp?: number,
): MatrixEvent { ): MatrixEvent {
return { return {
...makeMockEvent(EventType.GroupCallMemberPrefix, sender, roomId, membershipData), ...makeMockEvent(EventType.GroupCallMemberPrefix, sender, roomId, membershipData, timestamp),
unstableStickyContent: { unstableStickyContent: {
duration_ms: stickyDuration, duration_ms: stickyDuration,
}, },

View File

@@ -321,7 +321,6 @@ export class MatrixRTCSession extends TypedEventEmitter<
const logger = rootLogger.getChild(`[MatrixRTCSession ${room.roomId}]`); const logger = rootLogger.getChild(`[MatrixRTCSession ${room.roomId}]`);
let callMemberEvents = [] as MatrixEvent[]; let callMemberEvents = [] as MatrixEvent[];
if (listenForStickyEvents) { if (listenForStickyEvents) {
logger.info("useStickyEvents");
// prefill with sticky events // prefill with sticky events
callMemberEvents = Array.from(room.unstableGetStickyEvents()).filter( callMemberEvents = Array.from(room.unstableGetStickyEvents()).filter(
(e) => e.getType() === EventType.GroupCallMemberPrefix, (e) => e.getType() === EventType.GroupCallMemberPrefix,