Skip to content

Commit df69930

Browse files
committed
convert interface to abstract class.
1 parent ab95c50 commit df69930

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
@@ -8,26 +8,25 @@ import { Focus } from "./focus.ts";
88
import { isLivekitFocusActive } from "./LivekitFocus.ts";
99
import { MembershipConfig } from "./MatrixRTCSession.ts";
1010

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

3332
/**
@@ -82,11 +81,9 @@ export class MembershipManager {
8281
8_000
8382
);
8483
}
85-
8684
private get membershipKeepAlivePeriod(): number {
8785
return this.joinConfig?.membershipKeepAlivePeriod ?? 5_000;
8886
}
89-
9087
private get callMemberEventRetryJitter(): number {
9188
return this.joinConfig?.callMemberEventRetryJitter ?? 2_000;
9289
}

0 commit comments

Comments
 (0)