1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-11-23 17:02:25 +03:00

Small improvements

Signed-off-by: Timo K <toger5@hotmail.de>
This commit is contained in:
Timo K
2025-10-09 17:39:42 +02:00
parent 8f157da779
commit d70e4f732c
3 changed files with 33 additions and 42 deletions

View File

@@ -102,12 +102,12 @@ describe("MatrixRTCSession", () => {
if (testConfig.listenForMemberStateEvents) { if (testConfig.listenForMemberStateEvents) {
// eslint-disable-next-line jest/no-conditional-expect // eslint-disable-next-line jest/no-conditional-expect
expect(() => { expect(() => {
MatrixRTCSession.sessionForRoom(client, mockRoom, callSession, testConfig); MatrixRTCSession.sessionForSlot(client, mockRoom, callSession, testConfig);
}).toThrow(); }).toThrow();
} else { } else {
// eslint-disable-next-line jest/no-conditional-expect // eslint-disable-next-line jest/no-conditional-expect
expect(() => { expect(() => {
MatrixRTCSession.sessionForRoom(client, mockRoom, callSession, testConfig); MatrixRTCSession.sessionForSlot(client, mockRoom, callSession, testConfig);
}).not.toThrow(); }).not.toThrow();
} }
}); });
@@ -115,19 +115,19 @@ describe("MatrixRTCSession", () => {
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);
sess = MatrixRTCSession.sessionForRoom( sess = MatrixRTCSession.sessionForSlot(
client, client,
mockRoom, mockRoom,
callSession, callSession,
testConfig.createWithDefaults ? undefined : testConfig, testConfig.createWithDefaults ? undefined : testConfig,
); );
expect(sess?.memberships.length).toEqual(1); expect(sess?.memberships.length).toEqual(1);
expect(sess?.memberships[0].sessionDescription.id).toEqual(""); expect(sess?.memberships[0].slotDescription.id).toEqual("");
expect(sess?.memberships[0].scope).toEqual("m.room"); expect(sess?.memberships[0].scope).toEqual("m.room");
expect(sess?.memberships[0].application).toEqual("m.call"); expect(sess?.memberships[0].application).toEqual("m.call");
expect(sess?.memberships[0].deviceId).toEqual("AAAAAAA"); expect(sess?.memberships[0].deviceId).toEqual("AAAAAAA");
expect(sess?.memberships[0].isExpired()).toEqual(false); expect(sess?.memberships[0].isExpired()).toEqual(false);
expect(sess?.sessionDescription.id).toEqual(""); expect(sess?.slotDescription.id).toEqual("");
}); });
it("ignores memberships where application is not m.call", () => { it("ignores memberships where application is not m.call", () => {
@@ -135,7 +135,7 @@ describe("MatrixRTCSession", () => {
application: "not-m.call", application: "not-m.call",
}); });
const mockRoom = makeMockRoom([testMembership], testConfig.testCreateSticky); const mockRoom = makeMockRoom([testMembership], testConfig.testCreateSticky);
const sess = MatrixRTCSession.sessionForRoom( const sess = MatrixRTCSession.sessionForSlot(
client, client,
mockRoom, mockRoom,
callSession, callSession,
@@ -150,7 +150,7 @@ describe("MatrixRTCSession", () => {
scope: "m.room", scope: "m.room",
}); });
const mockRoom = makeMockRoom([testMembership], testConfig.testCreateSticky); const mockRoom = makeMockRoom([testMembership], testConfig.testCreateSticky);
const sess = MatrixRTCSession.sessionForRoom( const sess = MatrixRTCSession.sessionForSlot(
client, client,
mockRoom, mockRoom,
callSession, callSession,
@@ -167,7 +167,7 @@ describe("MatrixRTCSession", () => {
const mockRoom = makeMockRoom([membershipTemplate, expiredMembership], testConfig.testCreateSticky); const mockRoom = makeMockRoom([membershipTemplate, expiredMembership], testConfig.testCreateSticky);
jest.advanceTimersByTime(2000); jest.advanceTimersByTime(2000);
sess = MatrixRTCSession.sessionForRoom( sess = MatrixRTCSession.sessionForSlot(
client, client,
mockRoom, mockRoom,
callSession, callSession,
@@ -181,7 +181,7 @@ describe("MatrixRTCSession", () => {
it("ignores memberships events of members not in the room", () => { it("ignores memberships events of members not in the room", () => {
const mockRoom = makeMockRoom([membershipTemplate], testConfig.testCreateSticky); const mockRoom = makeMockRoom([membershipTemplate], testConfig.testCreateSticky);
mockRoom.hasMembershipState.mockImplementation((state) => state === KnownMembership.Join); mockRoom.hasMembershipState.mockImplementation((state) => state === KnownMembership.Join);
sess = MatrixRTCSession.sessionForRoom( sess = MatrixRTCSession.sessionForSlot(
client, client,
mockRoom, mockRoom,
callSession, callSession,
@@ -194,7 +194,7 @@ describe("MatrixRTCSession", () => {
// Force the sender to be undefined. // Force the sender to be undefined.
const mockRoom = makeMockRoom([{ ...membershipTemplate, user_id: "" }], testConfig.testCreateSticky); const mockRoom = makeMockRoom([{ ...membershipTemplate, user_id: "" }], testConfig.testCreateSticky);
mockRoom.hasMembershipState.mockImplementation((state) => state === KnownMembership.Join); mockRoom.hasMembershipState.mockImplementation((state) => state === KnownMembership.Join);
sess = MatrixRTCSession.sessionForRoom( sess = MatrixRTCSession.sessionForSlot(
client, client,
mockRoom, mockRoom,
callSession, callSession,
@@ -210,7 +210,7 @@ describe("MatrixRTCSession", () => {
expiredMembership.created_ts = 500; expiredMembership.created_ts = 500;
expiredMembership.expires = 1000; expiredMembership.expires = 1000;
const mockRoom = makeMockRoom([expiredMembership], testConfig.testCreateSticky); const mockRoom = makeMockRoom([expiredMembership], testConfig.testCreateSticky);
sess = MatrixRTCSession.sessionForRoom( sess = MatrixRTCSession.sessionForSlot(
client, client,
mockRoom, mockRoom,
callSession, callSession,
@@ -222,7 +222,7 @@ describe("MatrixRTCSession", () => {
it("returns empty session if no membership events are present", () => { it("returns empty session if no membership events are present", () => {
const mockRoom = makeMockRoom([], testConfig.testCreateSticky); const mockRoom = makeMockRoom([], testConfig.testCreateSticky);
sess = MatrixRTCSession.sessionForRoom( sess = MatrixRTCSession.sessionForSlot(
client, client,
mockRoom, mockRoom,
callSession, callSession,
@@ -258,7 +258,7 @@ describe("MatrixRTCSession", () => {
]), ]),
}), }),
} as unknown as EventTimeline); } as unknown as EventTimeline);
sess = MatrixRTCSession.sessionForRoom( sess = MatrixRTCSession.sessionForSlot(
client, client,
mockRoom, mockRoom,
callSession, callSession,
@@ -294,7 +294,7 @@ describe("MatrixRTCSession", () => {
]), ]),
}), }),
} as unknown as EventTimeline); } as unknown as EventTimeline);
sess = MatrixRTCSession.sessionForRoom( sess = MatrixRTCSession.sessionForSlot(
client, client,
mockRoom, mockRoom,
callSession, callSession,
@@ -307,7 +307,7 @@ describe("MatrixRTCSession", () => {
const testMembership = Object.assign({}, membershipTemplate); const testMembership = Object.assign({}, membershipTemplate);
(testMembership.device_id as string | undefined) = undefined; (testMembership.device_id as string | undefined) = undefined;
const mockRoom = makeMockRoom([testMembership]); const mockRoom = makeMockRoom([testMembership]);
const sess = MatrixRTCSession.sessionForRoom( const sess = MatrixRTCSession.sessionForSlot(
client, client,
mockRoom, mockRoom,
callSession, callSession,
@@ -320,7 +320,7 @@ describe("MatrixRTCSession", () => {
const testMembership = Object.assign({}, membershipTemplate); const testMembership = Object.assign({}, membershipTemplate);
(testMembership.call_id as string | undefined) = undefined; (testMembership.call_id as string | undefined) = undefined;
const mockRoom = makeMockRoom([testMembership]); const mockRoom = makeMockRoom([testMembership]);
sess = MatrixRTCSession.sessionForRoom( sess = MatrixRTCSession.sessionForSlot(
client, client,
mockRoom, mockRoom,
callSession, callSession,
@@ -347,7 +347,7 @@ describe("MatrixRTCSession", () => {
}); });
// Expect for there to be one membership as the state has been merged down. // Expect for there to be one membership as the state has been merged down.
sess = MatrixRTCSession.sessionForRoom(client, mockRoom, callSession, { sess = MatrixRTCSession.sessionForSlot(client, mockRoom, callSession, {
listenForStickyEvents: true, listenForStickyEvents: true,
listenForMemberStateEvents: true, listenForMemberStateEvents: true,
}); });
@@ -377,7 +377,7 @@ describe("MatrixRTCSession", () => {
return [ev as StickyMatrixEvent]; return [ev as StickyMatrixEvent];
}); });
sess = MatrixRTCSession.sessionForRoom(client, mockRoom, callSession, { sess = MatrixRTCSession.sessionForSlot(client, mockRoom, callSession, {
listenForStickyEvents: true, listenForStickyEvents: true,
listenForMemberStateEvents: true, listenForMemberStateEvents: true,
}); });
@@ -385,7 +385,7 @@ describe("MatrixRTCSession", () => {
const memberships = sess.memberships; const memberships = sess.memberships;
expect(memberships.length).toEqual(2); expect(memberships.length).toEqual(2);
expect(memberships[0].sender).toEqual(stickyUserId); expect(memberships[0].sender).toEqual(stickyUserId);
expect(memberships[0].sessionDescription.id).toEqual(""); expect(memberships[0].slotDescription.id).toEqual("");
expect(memberships[0].scope).toEqual("m.room"); expect(memberships[0].scope).toEqual("m.room");
expect(memberships[0].application).toEqual("m.call"); expect(memberships[0].application).toEqual("m.call");
expect(memberships[0].deviceId).toEqual("AAAAAAA"); expect(memberships[0].deviceId).toEqual("AAAAAAA");
@@ -394,13 +394,13 @@ describe("MatrixRTCSession", () => {
// Then state // Then state
expect(memberships[1].sender).toEqual(membershipTemplate.user_id); expect(memberships[1].sender).toEqual(membershipTemplate.user_id);
expect(sess?.sessionDescription.id).toEqual(""); expect(sess?.slotDescription.id).toEqual("");
}); });
it("handles an incoming sticky event to an existing session", () => { it("handles an incoming sticky event to an existing session", () => {
const mockRoom = makeMockRoom([membershipTemplate]); const mockRoom = makeMockRoom([membershipTemplate]);
const stickyUserId = "@stickyev:user.example"; const stickyUserId = "@stickyev:user.example";
sess = MatrixRTCSession.sessionForRoom(client, mockRoom, callSession, { sess = MatrixRTCSession.sessionForSlot(client, mockRoom, callSession, {
listenForStickyEvents: true, listenForStickyEvents: true,
listenForMemberStateEvents: true, listenForMemberStateEvents: true,
}); });

View File

@@ -116,16 +116,13 @@ export class MatrixRTCSessionManager extends TypedEventEmitter<MatrixRTCSessionM
}; };
private readonly onEvent = (event: MatrixEvent): void => { private readonly onEvent = (event: MatrixEvent): void => {
if (!event.unstableStickyExpiresAt) { if (!event.unstableStickyExpiresAt) return; // Not sticky, not interested.
return; // Not sticky, not interested.
} if (event.getType() !== EventType.GroupCallMemberPrefix) return;
if (event.getType() !== EventType.GroupCallMemberPrefix) {
return;
}
const room = this.client.getRoom(event.getRoomId()); const room = this.client.getRoom(event.getRoomId());
if (!room) { if (!room) return;
return;
}
this.refreshRoom(room); this.refreshRoom(room);
}; };

View File

@@ -1058,18 +1058,12 @@ export class StickyEventMembershipManager extends MembershipManager {
); );
}; };
protected actionUpdateFromErrors( protected actionUpdateFromErrors(e: unknown, t: MembershipActionType, m: string): ActionUpdate | undefined {
error: unknown, const mappedMethod = new Map([
type: MembershipActionType, ["sendStateEvent", "_unstable_sendStickyEvent"],
method: string, ["_unstable_sendDelayedStateEvent", "_unstable_sendStickyDelayedEvent"],
): ActionUpdate | undefined { ]).get(m);
// Override method name. return super.actionUpdateFromErrors(e, t, mappedMethod ?? "unknown method");
if (method === "sendStateEvent") {
method = "_unstable_sendStickyEvent";
} else if (method === "_unstable_sendDelayedStateEvent") {
method = "_unstable_sendStickyDelayedEvent";
}
return super.actionUpdateFromErrors(error, type, method);
} }
protected makeMyMembership(expires: number): SessionMembershipData | RtcMembershipData { protected makeMyMembership(expires: number): SessionMembershipData | RtcMembershipData {