Skip to content

Commit 8231f75

Browse files
committed
convert interface to abstract class.
1 parent cc0debe commit 8231f75

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
@@ -11,26 +11,25 @@ import { Focus } from "./focus.ts";
1111
import { isLivekitFocusActive } from "./LivekitFocus.ts";
1212
import { MembershipConfig } from "./MatrixRTCSession.ts";
1313

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

3635
/**
@@ -85,11 +84,9 @@ export class MembershipManager {
8584
8_000
8685
);
8786
}
88-
8987
private get membershipKeepAlivePeriod(): number {
9088
return this.joinConfig?.membershipKeepAlivePeriod ?? 5_000;
9189
}
92-
9390
private get callMemberEventRetryJitter(): number {
9491
return this.joinConfig?.callMemberEventRetryJitter ?? 2_000;
9592
}

0 commit comments

Comments
 (0)