setPositions

View as Markdown

setPositions

  • setPositions(params): Promise<void>

Assigns a position in the layout for multiple members.

Parameters

params
objectRequired

Object containing the parameters of the method.

positions
VideoPositionsRequired

Mapping of member IDs and positions to assign. See VideoPositions.

Returns

Promise<void>

Example

In this example, we wait for a room to start and then set the roomlayout to "6x6". When a second member joins the room, we set the position of all older members to "off-canvas". This example assumes that there is a RoomSession already active and that members are joining the room.

1import { SignalWire } from "@signalwire/realtime-api";
2
3// Initialize the SignalWire client
4const client = await SignalWire({ project: "ProjectID Here", token: "Token Here" });
5
6// Access video client from the main client
7const videoClient = client.video;
8
9// Setup listener for when a room starts
10await videoClient.listen({
11 onRoomStarted: (roomsession) => {
12 console.log("Room started", roomsession.displayName);
13 // Set the 6x6 layout
14 roomsession.setLayout({
15 name: "6x6",
16 positions: {
17 self: 'auto'
18 }
19 });
20 roomsession.listen({
21 onRoomUpdated: (roomsession) => {
22 console.log("Room layout updated", roomsession.layoutName);
23 },
24 onMemberJoined: async (member) => {
25 console.log("Member joined", member.name);
26
27 // Get all members and loop through them ans save all old members to an array
28 const members = await roomsession.getMembers();
29
30 // Create an object to hold all member positions
31 const positions = {
32 ...members.members
33 .filter(memberItem => memberItem.id !== member.id) // Filter out the member with member.id
34 .reduce((acc, memberItem) => {
35 acc[memberItem.id] = 'off-canvas';
36 return acc;
37 }, {})
38 };
39
40 console.log("Updating member positions...")
41 // Update all old members positions to off canvas and the new member to be automatically positioned
42
43 await roomsession.setPositions({
44 positions: positions
45 });
46 },
47 onMemberUpdated: (member) => {
48 console.log(`Member ${member.name} updated`);
49 }
50 })
51 }
52});