Skip to content

Commit 00d4e72

Browse files
committed
renaming public api
1 parent 506ec7f commit 00d4e72

3 files changed

Lines changed: 26 additions & 15 deletions

File tree

src/matrixrtc/MatrixRTCSession.ts

Lines changed: 18 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,27 @@ 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 onMembershipUpdate or onRoomMembershipUpdate 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();
763+
};
764+
public onRoomMemberUpdate = (): void => {
765+
this.recalculateSessionMembers();
766+
};
767+
public onRTCSessionMemberUpdate = (): void => {
768+
this.recalculateSessionMembers();
763769
};
764770

765771
/**
772+
* Call this when anything that could impact rtc memberships has changed: Room Members or RTC members.
773+
*
766774
* Examines the latest call memberships and handles any encryption key sending or rotation that is needed.
767775
*
768776
* This function should be called when the room members or call memberships might have changed.
769777
*/
770-
public onMembershipsUpdate = (): void => {
778+
private recalculateSessionMembers = (): void => {
771779
const oldMemberships = this.memberships;
772780
this.memberships = MatrixRTCSession.callMembershipsForRoom(this.room);
773781

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

784-
this.membershipManager?.onMembershipsUpdate(this.memberships);
792+
this.membershipManager?.onRTCSessionMemberUpdate(this.memberships);
785793
}
786794

787795
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)