Skip to content

Commit e3157e6

Browse files
committed
reconnect the bits to RTC
1 parent 3a0a16a commit e3157e6

File tree

3 files changed

+15
-20
lines changed

3 files changed

+15
-20
lines changed

spec/unit/models/room-sticky-events.spec.ts

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -258,19 +258,5 @@ describe("RoomStickyEvents", () => {
258258
jest.advanceTimersByTime(15000);
259259
expect(emitSpy).toHaveBeenCalledWith([], [], [ev]);
260260
});
261-
it("should emit when a unkeyed sticky event expires", () => {
262-
const emitSpy = jest.fn();
263-
stickyEvents.on(RoomStickyEventsEvent.Update, emitSpy);
264-
jest.setSystemTime(0);
265-
const ev = new MatrixEvent({
266-
...stickyEvent,
267-
content: {},
268-
origin_server_ts: Date.now(),
269-
});
270-
stickyEvents.addStickyEvents([ev]);
271-
jest.setSystemTime(15000);
272-
jest.advanceTimersByTime(15000);
273-
expect(emitSpy).toHaveBeenCalledWith([], [ev]);
274-
});
275261
});
276262
});

src/@types/event.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@ export interface TimelineEvents {
337337
[M_BEACON.name]: MBeaconEventContent;
338338
[M_POLL_START.name]: PollStartEventContent;
339339
[M_POLL_END.name]: PollEndEventContent;
340-
[EventType.GroupCallMemberPrefix]: SessionMembershipData | {};
340+
[EventType.GroupCallMemberPrefix]: SessionMembershipData | { msc4354_sticky_key?: string };
341341
}
342342

343343
/**

src/matrixrtc/MatrixRTCSession.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ import {
5151
import { TypedReEmitter } from "../ReEmitter.ts";
5252
import { ToDeviceKeyTransport } from "./ToDeviceKeyTransport.ts";
5353
import { type MatrixEvent } from "src/matrix.ts";
54+
import { type RoomStickyEventsEvent, type RoomStickyEventsMap } from "src/models/room-sticky-events.ts";
5455

5556
/**
5657
* Events emitted by MatrixRTCSession
@@ -296,7 +297,7 @@ export class MatrixRTCSession extends TypedEventEmitter<
296297
* @deprecated Use `MatrixRTCSession.sessionMembershipsForRoom` instead.
297298
*/
298299
public static callMembershipsForRoom(
299-
room: Pick<Room, "getLiveTimeline" | "roomId" | "hasMembershipState" | "unstableGetStickyEvents">,
300+
room: Pick<Room, "getLiveTimeline" | "roomId" | "hasMembershipState" | "_unstable_getStickyEvents">,
300301
): CallMembership[] {
301302
return MatrixRTCSession.sessionMembershipsForRoom(room, {
302303
id: "",
@@ -309,7 +310,7 @@ export class MatrixRTCSession extends TypedEventEmitter<
309310
* oldest first.
310311
*/
311312
public static sessionMembershipsForRoom(
312-
room: Pick<Room, "getLiveTimeline" | "roomId" | "hasMembershipState" | "unstableGetStickyEvents">,
313+
room: Pick<Room, "getLiveTimeline" | "roomId" | "hasMembershipState" | "_unstable_getStickyEvents">,
313314
sessionDescription: SessionDescription,
314315
// default both true this implied we combine sticky and state events for the final call state
315316
// (prefer sticky events in case of a duplicate)
@@ -322,7 +323,7 @@ export class MatrixRTCSession extends TypedEventEmitter<
322323
let callMemberEvents = [] as MatrixEvent[];
323324
if (listenForStickyEvents) {
324325
// prefill with sticky events
325-
callMemberEvents = [...room.unstableGetStickyEvents()].filter(
326+
callMemberEvents = [...room._unstable_getStickyEvents()].filter(
326327
(e) => e.getType() === EventType.GroupCallMemberPrefix,
327328
);
328329
}
@@ -817,9 +818,17 @@ export class MatrixRTCSession extends TypedEventEmitter<
817818
/**
818819
* Call this when a sticky event update has occured.
819820
*/
820-
private onStickyEventUpdate = (added: MatrixEvent[], removed: MatrixEvent[]): void => {
821+
private onStickyEventUpdate: RoomStickyEventsMap[RoomStickyEventsEvent.Update] = (
822+
added,
823+
updated,
824+
removed,
825+
): void => {
821826
this.logger.debug("Sticky event update", { added, removed });
822-
if ([...added, ...removed].some((e) => e.getType() === EventType.GroupCallMemberPrefix)) {
827+
if (
828+
[...added, ...removed, ...updated.flatMap((v) => [v.current, v.previous])].some(
829+
(e) => e.getType() === EventType.GroupCallMemberPrefix,
830+
)
831+
) {
823832
this.recalculateSessionMembers();
824833
}
825834
};

0 commit comments

Comments
 (0)