Skip to content

Commit c798a1f

Browse files
committed
renaming public api
1 parent 506ec7f commit c798a1f

4 files changed

Lines changed: 45 additions & 26 deletions

File tree

spec/unit/matrixrtc/MatrixRTCSession.spec.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -555,7 +555,7 @@ describe("MatrixRTCSession", () => {
555555

556556
const onMembershipsChanged = jest.fn();
557557
sess.on(MatrixRTCSessionEvent.MembershipsChanged, onMembershipsChanged);
558-
sess.onMembershipsUpdate();
558+
sess.onRTCSessionMemberUpdate();
559559

560560
expect(onMembershipsChanged).not.toHaveBeenCalled();
561561
});
@@ -568,7 +568,7 @@ describe("MatrixRTCSession", () => {
568568
sess.on(MatrixRTCSessionEvent.MembershipsChanged, onMembershipsChanged);
569569

570570
mockRoom.getLiveTimeline().getState = jest.fn().mockReturnValue(makeMockRoomState([], mockRoom.roomId));
571-
sess.onMembershipsUpdate();
571+
sess.onRTCSessionMemberUpdate();
572572

573573
expect(onMembershipsChanged).toHaveBeenCalled();
574574
});
@@ -757,7 +757,7 @@ describe("MatrixRTCSession", () => {
757757
mockRoom.getLiveTimeline().getState = jest
758758
.fn()
759759
.mockReturnValue(makeMockRoomState([membershipTemplate], mockRoom.roomId));
760-
sess.onMembershipsUpdate();
760+
sess.onRTCSessionMemberUpdate();
761761

762762
// member2 re-joins which should trigger an immediate re-send
763763
const keysSentPromise2 = new Promise<EncryptionKeysEventContent>((resolve) => {
@@ -766,7 +766,7 @@ describe("MatrixRTCSession", () => {
766766
mockRoom.getLiveTimeline().getState = jest
767767
.fn()
768768
.mockReturnValue(makeMockRoomState([membershipTemplate, member2], mockRoom.roomId));
769-
sess.onMembershipsUpdate();
769+
sess.onRTCSessionMemberUpdate();
770770
// but, that immediate resend is throttled so we need to wait a bit
771771
jest.advanceTimersByTime(1000);
772772
const { keys } = await keysSentPromise2;
@@ -819,7 +819,7 @@ describe("MatrixRTCSession", () => {
819819
mockRoom.getLiveTimeline().getState = jest
820820
.fn()
821821
.mockReturnValue(makeMockRoomState([membershipTemplate, member2], mockRoom.roomId));
822-
sess.onMembershipsUpdate();
822+
sess.onRTCSessionMemberUpdate();
823823

824824
await keysSentPromise2;
825825

@@ -873,7 +873,7 @@ describe("MatrixRTCSession", () => {
873873
sendEventMock.mockClear();
874874

875875
// these should be a no-op:
876-
sess.onMembershipsUpdate();
876+
sess.onRTCSessionMemberUpdate();
877877
expect(sendEventMock).toHaveBeenCalledTimes(0);
878878
expect(sess!.statistics.counters.roomEventEncryptionKeysSent).toEqual(1);
879879
} finally {
@@ -927,7 +927,7 @@ describe("MatrixRTCSession", () => {
927927
sendEventMock.mockClear();
928928

929929
// this should be a no-op:
930-
sess.onMembershipsUpdate();
930+
sess.onRTCSessionMemberUpdate();
931931
expect(sendEventMock).toHaveBeenCalledTimes(0);
932932

933933
// advance time to avoid key throttling
@@ -941,7 +941,7 @@ describe("MatrixRTCSession", () => {
941941
});
942942

943943
// this should re-send the key
944-
sess.onMembershipsUpdate();
944+
sess.onRTCSessionMemberUpdate();
945945

946946
await keysSentPromise2;
947947

@@ -1004,7 +1004,7 @@ describe("MatrixRTCSession", () => {
10041004
mockRoom.getLiveTimeline().getState = jest
10051005
.fn()
10061006
.mockReturnValue(makeMockRoomState([membershipTemplate], mockRoom.roomId));
1007-
sess.onMembershipsUpdate();
1007+
sess.onRTCSessionMemberUpdate();
10081008

10091009
jest.advanceTimersByTime(10000);
10101010

@@ -1049,7 +1049,7 @@ describe("MatrixRTCSession", () => {
10491049
);
10501050
}
10511051

1052-
sess!.onMembershipsUpdate();
1052+
sess!.onRTCSessionMemberUpdate();
10531053

10541054
// advance time to avoid key throttling
10551055
jest.advanceTimersByTime(10000);
@@ -1090,7 +1090,7 @@ describe("MatrixRTCSession", () => {
10901090
mockRoom.getLiveTimeline().getState = jest
10911091
.fn()
10921092
.mockReturnValue(makeMockRoomState([membershipTemplate, member2], mockRoom.roomId));
1093-
sess.onMembershipsUpdate();
1093+
sess.onRTCSessionMemberUpdate();
10941094

10951095
await new Promise((resolve) => {
10961096
realSetTimeout(resolve);

src/matrixrtc/MatrixRTCSession.ts

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import { decodeBase64, encodeUnpaddedBase64 } from "../base64.ts";
2929
import { KnownMembership } from "../@types/membership.ts";
3030
import { MatrixError, safeGetRetryAfterMs } from "../http-api/errors.ts";
3131
import { MatrixEvent } from "../models/event.ts";
32-
import { MembershipManager, MembershipManagerInterface } from "./MembershipManager.ts";
32+
import { LegacyMembershipManager, IMembershipManager } from "./MembershipManager.ts";
3333

3434
const logger = rootLogger.getChild("MatrixRTCSession");
3535

@@ -132,7 +132,7 @@ export type JoinSessionConfig = MembershipConfig & EncryptionConfig;
132132
* This class doesn't deal with media at all, just membership & properties of a session.
133133
*/
134134
export class MatrixRTCSession extends TypedEventEmitter<MatrixRTCSessionEvent, MatrixRTCSessionEventHandlerMap> {
135-
private membershipManager?: MembershipManagerInterface;
135+
private membershipManager?: IMembershipManager;
136136

137137
// The session Id of the call, this is the call_id of the call Member event.
138138
private _callId: string | undefined;
@@ -284,7 +284,7 @@ export class MatrixRTCSession extends TypedEventEmitter<MatrixRTCSessionEvent, M
284284
this._callId = memberships[0]?.callId;
285285
const roomState = this.room.getLiveTimeline().getState(EventTimeline.FORWARDS);
286286
// TODO: double check if this is actually needed. Should be covered by refreshRoom in MatrixRTCSessionManager
287-
roomState?.on(RoomStateEvent.Members, this.onMembershipsUpdate);
287+
roomState?.on(RoomStateEvent.Members, this.onRoomMemberUpdate);
288288
this.setExpiryTimer();
289289
}
290290

@@ -306,7 +306,7 @@ export class MatrixRTCSession extends TypedEventEmitter<MatrixRTCSessionEvent, M
306306
this.expiryTimeout = undefined;
307307
}
308308
const roomState = this.room.getLiveTimeline().getState(EventTimeline.FORWARDS);
309-
roomState?.off(RoomStateEvent.Members, this.onMembershipsUpdate);
309+
roomState?.off(RoomStateEvent.Members, this.onRoomMemberUpdate);
310310
}
311311

312312
/**
@@ -329,7 +329,7 @@ export class MatrixRTCSession extends TypedEventEmitter<MatrixRTCSessionEvent, M
329329
logger.info(`Already joined to session in room ${this.room.roomId}: ignoring join call`);
330330
return;
331331
} else {
332-
this.membershipManager = new MembershipManager(joinConfig, this.room, this.client, () =>
332+
this.membershipManager = new LegacyMembershipManager(joinConfig, this.room, this.client, () =>
333333
this.getOldestMembership(),
334334
);
335335
}
@@ -652,7 +652,7 @@ export class MatrixRTCSession extends TypedEventEmitter<MatrixRTCSessionEvent, M
652652
}
653653

654654
if (soonestExpiry != undefined) {
655-
this.expiryTimeout = setTimeout(this.onMembershipsUpdate, soonestExpiry);
655+
this.expiryTimeout = setTimeout(this.onRTCSessionMemberUpdate, soonestExpiry);
656656
}
657657
}
658658

@@ -755,19 +755,35 @@ export class MatrixRTCSession extends TypedEventEmitter<MatrixRTCSessionEvent, M
755755
m.sender === this.client.getUserId() && m.deviceId === this.client.getDeviceId();
756756

757757
/**
758-
* @deprecated use onMembershipsUpdate instead. this should be called when any membership in the call is updated
758+
* @deprecated use onRoomMemberUpdate or onRTCSessionMemberUpdate instead. this should be called when any membership in the call is updated
759759
* the old name might have implied to only need to call this when your own membership changes.
760760
*/
761761
public onMembershipUpdate = (): void => {
762-
this.onMembershipsUpdate();
762+
this.recalculateSessionMembers();
763763
};
764764

765765
/**
766+
* Call this when the room members have changed.
767+
*/
768+
public onRoomMemberUpdate = (): void => {
769+
this.recalculateSessionMembers();
770+
};
771+
772+
/**
773+
* Call this when sth changed that impacts the current rtc members in this session.
774+
*/
775+
public onRTCSessionMemberUpdate = (): void => {
776+
this.recalculateSessionMembers();
777+
};
778+
779+
/**
780+
* Call this when anything that could impact rtc memberships has changed: Room Members or RTC members.
781+
*
766782
* Examines the latest call memberships and handles any encryption key sending or rotation that is needed.
767783
*
768784
* This function should be called when the room members or call memberships might have changed.
769785
*/
770-
public onMembershipsUpdate = (): void => {
786+
private recalculateSessionMembers = (): void => {
771787
const oldMemberships = this.memberships;
772788
this.memberships = MatrixRTCSession.callMembershipsForRoom(this.room);
773789

@@ -781,7 +797,7 @@ export class MatrixRTCSession extends TypedEventEmitter<MatrixRTCSessionEvent, M
781797
logger.info(`Memberships for call in room ${this.room.roomId} have changed: emitting`);
782798
this.emit(MatrixRTCSessionEvent.MembershipsChanged, oldMemberships, this.memberships);
783799

784-
this.membershipManager?.onMembershipsUpdate(this.memberships);
800+
this.membershipManager?.onRTCSessionMemberUpdate(this.memberships);
785801
}
786802

787803
if (this.manageMediaKeys && this.isJoined()) {

src/matrixrtc/MatrixRTCSessionManager.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ export class MatrixRTCSessionManager extends TypedEventEmitter<MatrixRTCSessionM
153153

154154
const wasActiveAndKnown = sess.memberships.length > 0 && !isNewSession;
155155

156-
sess.onMembershipsUpdate();
156+
sess.onRTCSessionMemberUpdate();
157157

158158
const nowActive = sess.memberships.length > 0;
159159

src/matrixrtc/MembershipManager.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,14 @@ import { MembershipConfig } from "./MatrixRTCSession.ts";
1717
*
1818
* @internal
1919
*/
20-
export interface MembershipManagerInterface {
20+
export interface IMembershipManager {
2121
isJoined(): boolean;
2222
join(fociPreferred: Focus[], fociActive?: Focus): void;
2323
leave(timeout: number | undefined): Promise<boolean>;
24-
onMembershipsUpdate(memberships: CallMembership[]): Promise<void>;
24+
/**
25+
* call this if the MatrixRTC session members have changed
26+
*/
27+
onRTCSessionMemberUpdate(memberships: CallMembership[]): Promise<void>;
2528
getActiveFocus(): Focus | undefined;
2629
}
2730

@@ -41,7 +44,7 @@ export interface MembershipManagerInterface {
4144
*
4245
* @internal
4346
*/
44-
export class MembershipManager implements MembershipManagerInterface {
47+
export class LegacyMembershipManager implements IMembershipManager {
4548
private relativeExpiry: number | undefined;
4649

4750
private memberEventTimeout?: ReturnType<typeof setTimeout>;
@@ -135,7 +138,7 @@ export class MembershipManager implements MembershipManagerInterface {
135138
}
136139
}
137140

138-
public async onMembershipsUpdate(memberships: CallMembership[]): Promise<void> {
141+
public async onRTCSessionMemberUpdate(memberships: CallMembership[]): Promise<void> {
139142
const isMyMembership = (m: CallMembership): boolean =>
140143
m.sender === this.client.getUserId() && m.deviceId === this.client.getDeviceId();
141144

0 commit comments

Comments
 (0)