frontend: Add numParticipants to OpenViduMeetRoom and update room creation logic

This commit is contained in:
Carlos Santos 2025-03-13 13:48:00 +01:00
parent e86a6e8ed6
commit ac2e9a59f4
3 changed files with 10 additions and 7 deletions

View File

@ -214,13 +214,14 @@ export class RoomService {
livekitRoom: Room, livekitRoom: Room,
roomOptions: OpenViduMeetRoomOptions roomOptions: OpenViduMeetRoomOptions
): OpenViduMeetRoom { ): OpenViduMeetRoom {
const { name: roomName, creationTime } = livekitRoom; const { name: roomName, creationTime, numParticipants } = livekitRoom;
const { preferences, expirationDate, roomNamePrefix, maxParticipants } = roomOptions; const { preferences, expirationDate, roomNamePrefix, maxParticipants } = roomOptions;
const openviduRoom: OpenViduMeetRoom = { const openviduRoom: OpenViduMeetRoom = {
roomName, roomName,
roomNamePrefix, roomNamePrefix,
creationDate: Number(creationTime) * 1000, creationDate: Number(creationTime) * 1000,
numParticipants,
maxParticipants, maxParticipants,
expirationDate, expirationDate,
moderatorRoomUrl: `${baseUrl}/${roomName}?secret=${secureUid(10)}`, moderatorRoomUrl: `${baseUrl}/${roomName}?secret=${secureUid(10)}`,

View File

@ -17,7 +17,7 @@ import { ActivatedRoute, Router } from '@angular/router';
import { Subscription } from 'rxjs'; import { Subscription } from 'rxjs';
// import { ConfigService } from '@app/services/config.service'; // import { ConfigService } from '@app/services/config.service';
import { HttpService, OpenViduMeetRoomOptions } from 'projects/shared-meet-components/src/public-api'; import { HttpService, OpenViduMeetRoom, OpenViduMeetRoomOptions } from 'projects/shared-meet-components/src/public-api';
import packageInfo from '../../../../package.json'; import packageInfo from '../../../../package.json';
@ -145,14 +145,15 @@ export class HomeComponent implements OnInit, OnDestroy {
expirationDate: Date.now() + 3600 expirationDate: Date.now() + 3600
}; };
const room = await this.httpService.createRoom(options); const room: OpenViduMeetRoom = await this.httpService.createRoom(options);
this.roomForm.get('roomNamePrefix')?.setValue(roomNamePrefix); this.roomForm.get('roomNamePrefix')?.setValue(roomNamePrefix);
// TODO: Should create a way of select the access role (moderator/participant) const isFirstParticipant = room.numParticipants === 0;
const publisherUrl = new URL(room.publisherRoomUrl); const accessRoomUrl = new URL(isFirstParticipant ? room.moderatorRoomUrl : room.publisherRoomUrl);
const secret = publisherUrl.searchParams.get('secret');
const path = publisherUrl.pathname; const secret = accessRoomUrl.searchParams.get('secret');
const path = accessRoomUrl.pathname;
this.router.navigate([path], { queryParams: { secret } }); this.router.navigate([path], { queryParams: { secret } });
} catch (error) { } catch (error) {
console.error('Error creating room ', error); console.error('Error creating room ', error);

View File

@ -17,6 +17,7 @@ export type OpenViduMeetRoomOptions = BaseRoomOptions;
export interface OpenViduMeetRoom extends BaseRoomOptions { export interface OpenViduMeetRoom extends BaseRoomOptions {
roomName: string; roomName: string;
creationDate: number; creationDate: number;
numParticipants: number;
moderatorRoomUrl: string; moderatorRoomUrl: string;
publisherRoomUrl: string; publisherRoomUrl: string;
} }