Skip to content

Commit 5873e3a

Browse files
committed
convert interface to abstract class.
1 parent ac97746 commit 5873e3a

2 files changed

Lines changed: 22 additions & 24 deletions

File tree

src/matrixrtc/MatrixRTCSession.ts

Lines changed: 4 additions & 3 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 } from "./MembershipManager.ts";
32+
import { MembershipManager, MembershipManagerInterface } 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?: MembershipManager;
135+
private membershipManager?: MembershipManagerInterface;
136136

137137
// The session Id of the call, this is the call_id of the call Member event.
138138
private _callId: string | undefined;
@@ -283,6 +283,7 @@ export class MatrixRTCSession extends TypedEventEmitter<MatrixRTCSessionEvent, M
283283
super();
284284
this._callId = memberships[0]?.callId;
285285
const roomState = this.room.getLiveTimeline().getState(EventTimeline.FORWARDS);
286+
// TODO: double check if this is actually needed. Should be covered by refreshRoom in MatrixRTCSessionManager
286287
roomState?.on(RoomStateEvent.Members, this.onMembershipsUpdate);
287288
this.setExpiryTimer();
288289
}
@@ -332,7 +333,7 @@ export class MatrixRTCSession extends TypedEventEmitter<MatrixRTCSessionEvent, M
332333
this.getOldestMembership(),
333334
);
334335
}
335-
this.membershipManager.join(fociPreferred, fociActive);
336+
this.membershipManager!.join(fociPreferred, fociActive);
336337
this.manageMediaKeys = joinConfig?.manageMediaKeys ?? this.manageMediaKeys;
337338
if (joinConfig?.manageMediaKeys) {
338339
this.makeNewSenderKey();

src/matrixrtc/MembershipManager.ts

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -9,26 +9,25 @@ import { Focus } from "./focus.ts";
99
import { isLivekitFocusActive } from "./LivekitFocus.ts";
1010
import { MembershipConfig } from "./MatrixRTCSession.ts";
1111

12-
export interface MembershipManagerInterface {
13-
constructor: (
12+
export abstract class MembershipManagerInterface {
13+
public constructor(
1414
joinConfig: MembershipConfig | undefined,
15-
room: {
16-
getLiveTimeline: () => void;
17-
},
18-
client: {
19-
sendState: () => void;
20-
// eslint-disable-next-line @typescript-eslint/naming-convention
21-
unstable_sendDelayedState: () => void;
22-
// eslint-disable-next-line @typescript-eslint/naming-convention
23-
unstable_sendDelayedEvent: () => void;
24-
// eslint-disable-next-line @typescript-eslint/naming-convention
25-
unstable_updateDelayedEvent: () => void;
26-
},
27-
) => MembershipManagerInterface;
28-
isJoined(): boolean;
29-
leave(timeout: number | undefined): Promise<boolean>;
30-
onMembershipsUpdate(): Promise<void>;
31-
getActiveFocus(): Focus | undefined;
15+
room: Pick<Room, "getLiveTimeline">,
16+
client: Pick<
17+
MatrixClient,
18+
| "getUserId"
19+
| "getDeviceId"
20+
| "sendStateEvent"
21+
| "_unstable_sendDelayedEvent"
22+
| "_unstable_sendDelayedStateEvent"
23+
>,
24+
getOldestMembership: () => CallMembership | undefined,
25+
) {}
26+
public abstract isJoined(): boolean;
27+
public abstract join(fociPreferred: Focus[], fociActive?: Focus): void;
28+
public abstract leave(timeout: number | undefined): Promise<boolean>;
29+
public abstract onMembershipsUpdate(): Promise<void>;
30+
public abstract getActiveFocus(): Focus | undefined;
3231
}
3332

3433
/**
@@ -83,11 +82,9 @@ export class MembershipManager {
8382
8_000
8483
);
8584
}
86-
8785
private get membershipKeepAlivePeriod(): number {
8886
return this.joinConfig?.membershipKeepAlivePeriod ?? 5_000;
8987
}
90-
9188
private get callMemberEventRetryJitter(): number {
9289
return this.joinConfig?.callMemberEventRetryJitter ?? 2_000;
9390
}

0 commit comments

Comments
 (0)