1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-11-23 17:02:25 +03:00
This commit is contained in:
Half-Shot
2025-09-30 12:29:26 +01:00
parent d132e005ba
commit 5f092e187c
4 changed files with 8 additions and 7 deletions

View File

@@ -68,7 +68,7 @@ describe("MatrixRTCSession", () => {
testCreateSticky: true,
},
])(
"roomSessionForRoom listenForSticky=$listenForStickyEvents listenForMemberStateEvents=$listenForStickyEvents testCreateSticky=$testCreateSticky",
"roomSessionForRoom listenForSticky=$listenForStickyEvents listenForMemberStateEvents=$listenForMemberStateEvents testCreateSticky=$testCreateSticky",
(testConfig) => {
it("creates a room-scoped session from room state", () => {
const mockRoom = makeMockRoom([membershipTemplate], testConfig.testCreateSticky);

View File

@@ -14,10 +14,10 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
import { ClientEvent, EventTimeline, MatrixClient, Room } from "../../../src";
import { ClientEvent, EventTimeline, MatrixClient, type Room } from "../../../src";
import { RoomStateEvent } from "../../../src/models/room-state";
import { MatrixRTCSessionManager, MatrixRTCSessionManagerEvents } from "../../../src/matrixrtc/MatrixRTCSessionManager";
import { makeMockRoom, MembershipData, membershipTemplate, mockRoomState, mockRTCEvent } from "./mocks";
import { makeMockRoom, type MembershipData, membershipTemplate, mockRoomState, mockRTCEvent } from "./mocks";
import { logger } from "../../../src/logger";
describe.each([{ eventKind: "sticky" }, { eventKind: "memberState" }])(
@@ -77,7 +77,7 @@ describe.each([{ eventKind: "sticky" }, { eventKind: "memberState" }])(
}
});
it("Fires event when session ends", async () => {
it("Fires event when session ends", () => {
const onEnded = jest.fn();
client.matrixRTC.on(MatrixRTCSessionManagerEvents.SessionEnded, onEnded);
const membershipData: MembershipData[] = [membershipTemplate];

View File

@@ -79,6 +79,7 @@ export function makeMockRoom(
const roomId = secureRandomString(8);
// Caching roomState here so it does not get recreated when calling `getLiveTimeline.getState()`
const roomState = makeMockRoomState(useStickyEvents ? [] : membershipData, roomId);
const ts = Date.now();
const room = Object.assign(new EventEmitter(), {
roomId: roomId,
hasMembershipState: jest.fn().mockReturnValue(true),
@@ -89,7 +90,7 @@ export function makeMockRoom(
unstableGetStickyEvents: jest
.fn()
.mockImplementation(() =>
useStickyEvents ? membershipData.map((m) => mockRTCEvent(m, roomId, 10000)) : [],
useStickyEvents ? membershipData.map((m) => mockRTCEvent(m, roomId, 10000, ts)) : [],
),
}) as unknown as Room;
return Object.assign(room, {
@@ -155,9 +156,10 @@ export function mockRTCEvent(
{ user_id: sender, ...membershipData }: MembershipData,
roomId: string,
stickyDuration?: number,
timestamp?: number,
): MatrixEvent {
return {
...makeMockEvent(EventType.GroupCallMemberPrefix, sender, roomId, membershipData),
...makeMockEvent(EventType.GroupCallMemberPrefix, sender, roomId, membershipData, timestamp),
unstableStickyContent: {
duration_ms: stickyDuration,
},

View File

@@ -321,7 +321,6 @@ export class MatrixRTCSession extends TypedEventEmitter<
const logger = rootLogger.getChild(`[MatrixRTCSession ${room.roomId}]`);
let callMemberEvents = [] as MatrixEvent[];
if (listenForStickyEvents) {
logger.info("useStickyEvents");
// prefill with sticky events
callMemberEvents = Array.from(room.unstableGetStickyEvents()).filter(
(e) => e.getType() === EventType.GroupCallMemberPrefix,