Skip to content

Commit 4a53909

Browse files
committed
refactor to construct the transports outside the RoomAndToDeviceKeyTransport
1 parent 949f804 commit 4a53909

File tree

4 files changed

+24
-44
lines changed

4 files changed

+24
-44
lines changed

src/matrixrtc/MatrixRTCSession.ts

+7-8
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import {
3737
RoomAndToDeviceTransport,
3838
} from "./RoomAndToDeviceKeyTransport.ts";
3939
import { TypedReEmitter } from "../ReEmitter.ts";
40+
import { ToDeviceKeyTransport } from "./ToDeviceKeyTransport.ts";
4041

4142
export enum MatrixRTCSessionEvent {
4243
// A member joined, left, or updated a property of their membership.
@@ -398,14 +399,12 @@ export class MatrixRTCSession extends TypedEventEmitter<
398399
let transport;
399400
if (joinConfig?.useExperimentalToDeviceTransport) {
400401
this.logger.info("Using to-device with room fallback transport for encryption keys");
401-
transport = new RoomAndToDeviceTransport(
402-
this.client.getUserId()!,
403-
this.client.getDeviceId()!,
404-
this.roomSubset,
405-
this.client,
406-
this.statistics,
407-
this.logger,
408-
);
402+
const [uId, dId] = [this.client.getUserId()!, this.client.getDeviceId()!];
403+
const [room, client, statistics] = [this.roomSubset, this.client, this.statistics];
404+
const roomKeyTransport = new RoomKeyTransport(room, client, statistics);
405+
const toDeviceTransport = new ToDeviceKeyTransport(uId, dId, room.roomId, client, statistics);
406+
transport = new RoomAndToDeviceTransport(toDeviceTransport, roomKeyTransport, this.logger);
407+
409408
// Expose the changes so the ui can display the currently used transport.
410409
this.reEmitter.reEmit(transport, [RoomAndToDeviceEvents.EnabledTransportsChanged]);
411410
} else {

src/matrixrtc/RoomAndToDeviceKeyTransport.ts

+7-31
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,12 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17-
import type { MatrixClient } from "../client.ts";
1817
import { logger as rootLogger, type Logger } from "../logger.ts";
1918
import { KeyTransportEvents, type KeyTransportEventsHandlerMap, type IKeyTransport } from "./IKeyTransport.ts";
2019
import { type CallMembership } from "./CallMembership.ts";
21-
import { RoomKeyTransport } from "./RoomKeyTransport.ts";
22-
import type { Statistics } from "./types.ts";
23-
import { ToDeviceKeyTransport } from "./ToDeviceKeyTransport.ts";
20+
import type { RoomKeyTransport } from "./RoomKeyTransport.ts";
21+
import type { ToDeviceKeyTransport } from "./ToDeviceKeyTransport.ts";
2422
import { TypedEventEmitter } from "../models/typed-event-emitter.ts";
25-
import { type Room } from "../models/room.ts";
2623

2724
export interface EnabledTransports {
2825
toDevice: boolean;
@@ -52,39 +49,18 @@ export class RoomAndToDeviceTransport
5249
implements IKeyTransport
5350
{
5451
private readonly logger: Logger;
55-
private roomKeyTransport: RoomKeyTransport;
56-
private toDeviceTransport: IKeyTransport;
5752
private _enabled: EnabledTransports = { toDevice: true, room: false };
5853
public constructor(
59-
userId: string,
60-
deviceId: string,
61-
room: Pick<Room, "on" | "off" | "roomId">,
62-
client: Pick<
63-
MatrixClient,
64-
| "sendEvent"
65-
| "getDeviceId"
66-
| "getUserId"
67-
| "cancelPendingEvent"
68-
| "decryptEventIfNeeded"
69-
| "encryptAndSendToDevice"
70-
| "on"
71-
| "off"
72-
>,
73-
statistics: Statistics,
54+
private toDeviceTransport: ToDeviceKeyTransport,
55+
private roomKeyTransport: RoomKeyTransport,
7456
parentLogger?: Logger,
7557
) {
7658
super();
7759
this.logger = (parentLogger ?? rootLogger).getChild(`[RoomAndToDeviceTransport]`);
60+
// update parent loggers for the sub transports so filtering for `RoomAndToDeviceTransport` contains their logs too
61+
this.toDeviceTransport.setParentLogger(this.logger);
62+
this.roomKeyTransport.setParentLogger(this.logger);
7863

79-
this.roomKeyTransport = new RoomKeyTransport(room, client, statistics, this.logger);
80-
this.toDeviceTransport = new ToDeviceKeyTransport(
81-
userId,
82-
deviceId,
83-
room.roomId,
84-
client,
85-
statistics,
86-
this.logger,
87-
);
8864
this.roomKeyTransport.on(KeyTransportEvents.ReceivedKeys, (...props) => {
8965
// Turn on the room transport if we receive a roomKey from another participant
9066
// and disable the toDevice transport.

src/matrixrtc/RoomKeyTransport.ts

+5-3
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,10 @@ export class RoomKeyTransport
2929
extends TypedEventEmitter<KeyTransportEvents, KeyTransportEventsHandlerMap>
3030
implements IKeyTransport
3131
{
32-
private readonly logger: Logger;
33-
32+
private logger: Logger = rootLogger;
33+
public setParentLogger(parentLogger: Logger): void {
34+
this.logger = parentLogger.getChild(`[RoomKeyTransport]`);
35+
}
3436
public constructor(
3537
private room: Pick<Room, "on" | "off" | "roomId">,
3638
private client: Pick<
@@ -41,7 +43,7 @@ export class RoomKeyTransport
4143
parentLogger?: Logger,
4244
) {
4345
super();
44-
this.logger = (parentLogger ?? rootLogger).getChild(`[RoomKeyTransport]`);
46+
this.setParentLogger(parentLogger ?? rootLogger);
4547
}
4648
public start(): void {
4749
this.room.on(RoomEvent.Timeline, (ev) => void this.consumeCallEncryptionEvent(ev));

src/matrixrtc/ToDeviceKeyTransport.ts

+5-2
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,10 @@ export class ToDeviceKeyTransport
3131
extends TypedEventEmitter<KeyTransportEvents, KeyTransportEventsHandlerMap>
3232
implements IKeyTransport
3333
{
34-
private readonly logger: Logger;
34+
private logger: Logger = rootLogger;
35+
public setParentLogger(parentLogger: Logger): void {
36+
this.logger = parentLogger.getChild(`[ToDeviceKeyTransport]`);
37+
}
3538

3639
public constructor(
3740
private userId: string,
@@ -42,7 +45,7 @@ export class ToDeviceKeyTransport
4245
parentLogger?: Logger,
4346
) {
4447
super();
45-
this.logger = (parentLogger ?? rootLogger).getChild(`[ToDeviceKeyTransport]`);
48+
this.setParentLogger(parentLogger ?? rootLogger);
4649
}
4750

4851
public start(): void {

0 commit comments

Comments
 (0)