Rename moderatorRoomUrl and speakerRoomUrl to moderatorUrl and speakerUrl across the codebase

This commit is contained in:
juancarmore 2025-08-22 12:22:59 +02:00
parent f1fc2e0ba4
commit 5b2b26fef9
18 changed files with 89 additions and 91 deletions

View File

@ -6,4 +6,4 @@ description: >
required: false required: false
schema: schema:
type: string type: string
example: 'roomId,moderatorRoomUrl' example: 'roomId,moderatorUrl'

View File

@ -18,8 +18,8 @@ content:
enabled: false enabled: false
virtualBackgroundPreferences: virtualBackgroundPreferences:
enabled: true enabled: true
moderatorRoomURL: 'http://localhost:6080/room/room-123?secret=123456' moderatorUrl: 'http://localhost:6080/room/room-123?secret=123456'
speakerRoomURL: 'http://localhost:6080/room/room-123?secret=654321' speakerUrl: 'http://localhost:6080/room/room-123?secret=654321'
fields=roomId: fields=roomId:
summary: Response with only the roomId summary: Response with only the roomId
@ -41,8 +41,8 @@ content:
virtualBackgroundPreferences: virtualBackgroundPreferences:
enabled: true enabled: true
fields=moderatorRoomURL,speakerRoomURL: fields=moderatorUrl,speakerUrl:
summary: Response containing only moderator and speaker URLs summary: Response containing only moderator and speaker URLs
value: value:
moderatorRoomURL: 'http://localhost:6080/room/room-123?secret=123456' moderatorUrl: 'http://localhost:6080/room/room-123?secret=123456'
speakerRoomURL: 'http://localhost:6080/room/room-123?secret=654321' speakerUrl: 'http://localhost:6080/room/room-123?secret=654321'

View File

@ -27,8 +27,8 @@ content:
enabled: false enabled: false
virtualBackgroundPreferences: virtualBackgroundPreferences:
enabled: true enabled: true
moderatorRoomURL: 'http://localhost:6080/room/room-123?secret=123456' moderatorUrl: 'http://localhost:6080/room/room-123?secret=123456'
speakerRoomURL: 'http://localhost:6080/room/room-123?secret=654321' speakerUrl: 'http://localhost:6080/room/room-123?secret=654321'
- roomId: 'room-456' - roomId: 'room-456'
roomName: 'room' roomName: 'room'
creationDate: 1620001000000 creationDate: 1620001000000
@ -40,8 +40,8 @@ content:
enabled: true enabled: true
virtualBackgroundPreferences: virtualBackgroundPreferences:
enabled: false enabled: false
moderatorRoomURL: 'http://localhost:6080/room/room-456?secret=789012' moderatorUrl: 'http://localhost:6080/room/room-456?secret=789012'
speakerRoomURL: 'http://localhost:6080/room/room-456?secret=210987' speakerUrl: 'http://localhost:6080/room/room-456?secret=210987'
pagination: pagination:
isTruncated: false isTruncated: false
maxItems: 10 maxItems: 10
@ -86,14 +86,14 @@ content:
nextPageToken: 'abc123' nextPageToken: 'abc123'
maxItems: 10 maxItems: 10
fields=moderatorRoomURL,speakerRoomURL: fields=moderatorUrl,speakerUrl:
summary: Response containing only moderator and speaker URLs summary: Response containing only moderator and speaker URLs
value: value:
rooms: rooms:
- moderatorRoomURL: 'http://localhost:6080/room/room-123?secret=123456' - moderatorUrl: 'http://localhost:6080/room/room-123?secret=123456'
speakerRoomURL: 'http://localhost:6080/room/room-123?secret=654321' speakerUrl: 'http://localhost:6080/room/room-123?secret=654321'
- moderatorRoomURL: 'http://localhost:6080/room/room-456?secret=789012' - moderatorUrl: 'http://localhost:6080/room/room-456?secret=789012'
speakerRoomURL: 'http://localhost:6080/room/room-456?secret=210987' speakerUrl: 'http://localhost:6080/room/room-456?secret=210987'
pagination: pagination:
isTruncated: false isTruncated: false
maxItems: 10 maxItems: 10

View File

@ -39,13 +39,13 @@ properties:
# description: > # description: >
# The maximum number of participants allowed in the room. If the number of participants exceeds # The maximum number of participants allowed in the room. If the number of participants exceeds
# this limit, new participants will not be allowed to join. # this limit, new participants will not be allowed to join.
moderatorRoomURL: moderatorUrl:
type: string type: string
example: 'http://localhost:6080/room/room-123?secret=123456' example: 'http://localhost:6080/room/room-123?secret=123456'
description: > description: >
The URL for the moderator participants to join the room. The moderator role has special permissions to manage the The URL for the moderator participants to join the room. The moderator role has special permissions to manage the
room and participants. room and participants.
speakerRoomURL: speakerUrl:
type: string type: string
example: 'http://localhost:6080/room/room-123?secret=654321' example: 'http://localhost:6080/room/room-123?secret=654321'
description: > description: >

View File

@ -896,9 +896,9 @@
} }
}, },
"node_modules/@aws-sdk/util-locate-window": { "node_modules/@aws-sdk/util-locate-window": {
"version": "3.804.0", "version": "3.873.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.804.0.tgz", "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.873.0.tgz",
"integrity": "sha512-zVoRfpmBVPodYlnMjgVjfGoEZagyRF5IPn3Uo6ZvOZp24chnW/FRstH7ESDHDDRga4z3V+ElUQHKpFDXWyBW5A==", "integrity": "sha512-xcVhZF6svjM5Rj89T1WzkjQmrTF6dpR2UvIHPMTnSZoNe6CixejPZ6f0JJ2kAhO8H+dUHwNBlsUgOTIKiK/Syg==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"tslib": "^2.6.2" "tslib": "^2.6.2"
@ -6227,9 +6227,9 @@
} }
}, },
"node_modules/browserslist": { "node_modules/browserslist": {
"version": "4.25.2", "version": "4.25.3",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.2.tgz", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.3.tgz",
"integrity": "sha512-0si2SJK3ooGzIawRu61ZdPCO1IncZwS8IzuX73sPZsXW6EQ/w/DAfPyKI8l1ETTCr2MnvqWitmlCUxgdul45jA==", "integrity": "sha512-cDGv1kkDI4/0e5yON9yM5G/0A5u8sf5TnmdX5C9qHzI9PPu++sQ9zjm1k9NiOrf3riY4OkK0zSGqfvJyJsgCBQ==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
@ -6247,8 +6247,8 @@
], ],
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"caniuse-lite": "^1.0.30001733", "caniuse-lite": "^1.0.30001735",
"electron-to-chromium": "^1.5.199", "electron-to-chromium": "^1.5.204",
"node-releases": "^2.0.19", "node-releases": "^2.0.19",
"update-browserslist-db": "^1.1.3" "update-browserslist-db": "^1.1.3"
}, },
@ -6434,9 +6434,9 @@
} }
}, },
"node_modules/caniuse-lite": { "node_modules/caniuse-lite": {
"version": "1.0.30001735", "version": "1.0.30001737",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001735.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001737.tgz",
"integrity": "sha512-EV/laoX7Wq2J9TQlyIXRxTJqIw4sxfXS4OYgudGxBYRuTv0q7AM6yMEpU/Vo1I94thg9U6EZ2NfZx9GJq83u7w==", "integrity": "sha512-BiloLiXtQNrY5UyF0+1nSJLXUENuhka2pzy2Fx5pGxqavdrxSCW4U6Pn/PoG3Efspi2frRbHpBV2XsrPE6EDlw==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
@ -7517,9 +7517,9 @@
} }
}, },
"node_modules/electron-to-chromium": { "node_modules/electron-to-chromium": {
"version": "1.5.203", "version": "1.5.208",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.203.tgz", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.208.tgz",
"integrity": "sha512-uz4i0vLhfm6dLZWbz/iH88KNDV+ivj5+2SA+utpgjKaj9Q0iDLuwk6Idhe9BTxciHudyx6IvTvijhkPvFGUQ0g==", "integrity": "sha512-ozZyibehoe7tOhNaf16lKmljVf+3npZcJIEbJRVftVsmAg5TeA1mGS9dVCZzOwr2xT7xK15V0p7+GZqSPgkuPg==",
"dev": true, "dev": true,
"license": "ISC" "license": "ISC"
}, },
@ -9652,9 +9652,9 @@
} }
}, },
"node_modules/istanbul-reports": { "node_modules/istanbul-reports": {
"version": "3.1.7", "version": "3.2.0",
"resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz",
"integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==",
"dev": true, "dev": true,
"license": "BSD-3-Clause", "license": "BSD-3-Clause",
"dependencies": { "dependencies": {
@ -12339,13 +12339,12 @@
} }
}, },
"node_modules/openapi-generate-html/node_modules/@apidevtools/json-schema-ref-parser": { "node_modules/openapi-generate-html/node_modules/@apidevtools/json-schema-ref-parser": {
"version": "14.1.1", "version": "14.2.0",
"resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-14.1.1.tgz", "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-14.2.0.tgz",
"integrity": "sha512-uGF1YGOzzD50L7HLNWclXmsEhQflw8/zZHIz0/AzkJrKL5r9PceUipZxR/cp/8veTk4TVfdDJLyIwXLjaP5ePg==", "integrity": "sha512-NaGMMWwppbByagq+LwQMq6PMXHFWVu6kSwwx+eJfYTJ5zdpOvb9TIk6ZWxEEeXMUvGdVOZq3JalYsjsTZDvtkA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@types/json-schema": "^7.0.15",
"js-yaml": "^4.1.0" "js-yaml": "^4.1.0"
}, },
"engines": { "engines": {
@ -12353,6 +12352,9 @@
}, },
"funding": { "funding": {
"url": "https://github.com/sponsors/philsturgeon" "url": "https://github.com/sponsors/philsturgeon"
},
"peerDependencies": {
"@types/json-schema": "^7.0.15"
} }
}, },
"node_modules/openapi-generate-html/node_modules/commander": { "node_modules/openapi-generate-html/node_modules/commander": {
@ -14487,9 +14489,9 @@
} }
}, },
"node_modules/uint8array-extras": { "node_modules/uint8array-extras": {
"version": "1.4.1", "version": "1.5.0",
"resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.4.1.tgz", "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.5.0.tgz",
"integrity": "sha512-+NWHrac9dvilNgme+gP4YrBSumsaMZP0fNBtXXFIf33RLLKEcBUKaQZ7ULUbS0sBfcjxIZ4V96OTRkCbM7hxpw==", "integrity": "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
@ -15043,9 +15045,9 @@
} }
}, },
"node_modules/yoctocolors-cjs": { "node_modules/yoctocolors-cjs": {
"version": "2.1.2", "version": "2.1.3",
"resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz",
"integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==", "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {

View File

@ -27,18 +27,18 @@ export class MeetRoomHelper {
* This method parses the 'secret' query parameter from both speaker and moderator * This method parses the 'secret' query parameter from both speaker and moderator
* room URLs associated with the meeting room. * room URLs associated with the meeting room.
* *
* @param room - The MeetRoom object containing speakerRoomUrl and moderatorRoomUrl properties * @param room - The MeetRoom object containing speakerUrl and moderatorUrl properties
* @returns An object containing the extracted secrets with the following properties: * @returns An object containing the extracted secrets with the following properties:
* - speakerSecret: The secret extracted from the speaker room URL * - speakerSecret: The secret extracted from the speaker room URL
* - moderatorSecret: The secret extracted from the moderator room URL * - moderatorSecret: The secret extracted from the moderator room URL
*/ */
static extractSecretsFromRoom(room: MeetRoom): { speakerSecret: string; moderatorSecret: string } { static extractSecretsFromRoom(room: MeetRoom): { speakerSecret: string; moderatorSecret: string } {
const { speakerRoomUrl, moderatorRoomUrl } = room; const { speakerUrl, moderatorUrl } = room;
const speakerUrl = new URL(speakerRoomUrl); const parsedSpeakerUrl = new URL(speakerUrl);
const speakerSecret = speakerUrl.searchParams.get('secret') || ''; const speakerSecret = parsedSpeakerUrl.searchParams.get('secret') || '';
const moderatorUrl = new URL(moderatorRoomUrl); const parsedModeratorUrl = new URL(moderatorUrl);
const moderatorSecret = moderatorUrl.searchParams.get('secret') || ''; const moderatorSecret = parsedModeratorUrl.searchParams.get('secret') || '';
return { speakerSecret, moderatorSecret }; return { speakerSecret, moderatorSecret };
} }

View File

@ -81,8 +81,8 @@ export class RoomService {
// maxParticipants, // maxParticipants,
autoDeletionDate, autoDeletionDate,
preferences, preferences,
moderatorRoomUrl: `${baseUrl}/room/${roomId}?secret=${secureUid(10)}`, moderatorUrl: `${baseUrl}/room/${roomId}?secret=${secureUid(10)}`,
speakerRoomUrl: `${baseUrl}/room/${roomId}?secret=${secureUid(10)}` speakerUrl: `${baseUrl}/room/${roomId}?secret=${secureUid(10)}`
}; };
await this.storageService.saveMeetRoom(meetRoom); await this.storageService.saveMeetRoom(meetRoom);
@ -197,9 +197,9 @@ export class RoomService {
const filteredRoom = UtilsHelper.filterObjectFields(meetRoom, fields); const filteredRoom = UtilsHelper.filterObjectFields(meetRoom, fields);
// Remove moderatorRoomUrl if the participant is a speaker to prevent access to moderator links // Remove moderatorUrl if the participant is a speaker to prevent access to moderator links
if (participantRole === ParticipantRole.SPEAKER) { if (participantRole === ParticipantRole.SPEAKER) {
delete filteredRoom.moderatorRoomUrl; delete filteredRoom.moderatorUrl;
} }
return filteredRoom as MeetRoom; return filteredRoom as MeetRoom;

View File

@ -311,8 +311,8 @@ export class MeetStorageService<
} }
const archivedRoom: Partial<MRoom> = { const archivedRoom: Partial<MRoom> = {
moderatorRoomUrl: room.moderatorRoomUrl, moderatorUrl: room.moderatorUrl,
speakerRoomUrl: room.speakerRoomUrl, speakerUrl: room.speakerUrl,
preferences: { preferences: {
recordingPreferences: room.preferences?.recordingPreferences recordingPreferences: room.preferences?.recordingPreferences
} }

View File

@ -138,10 +138,10 @@ export const expectValidRoom = (
}); });
} }
expect(room.moderatorRoomUrl).toBeDefined(); expect(room.moderatorUrl).toBeDefined();
expect(room.speakerRoomUrl).toBeDefined(); expect(room.speakerUrl).toBeDefined();
expect(room.moderatorRoomUrl).toContain(room.roomId); expect(room.moderatorUrl).toContain(room.roomId);
expect(room.speakerRoomUrl).toContain(room.roomId); expect(room.speakerUrl).toContain(room.roomId);
if (markedForDeletion !== undefined) { if (markedForDeletion !== undefined) {
expect(room.autoDeletionDate).toBeDefined(); expect(room.autoDeletionDate).toBeDefined();

View File

@ -181,14 +181,14 @@ describe('Recording API Tests', () => {
let roomMetadata = await meetStorageService.getArchivedRoomMetadata(room.roomId); let roomMetadata = await meetStorageService.getArchivedRoomMetadata(room.roomId);
expect(roomMetadata).toBeDefined(); expect(roomMetadata).toBeDefined();
expect(roomMetadata!.moderatorRoomUrl).toContain(room.roomId); expect(roomMetadata!.moderatorUrl).toContain(room.roomId);
expect(roomMetadata!.speakerRoomUrl).toContain(room.roomId); expect(roomMetadata!.speakerUrl).toContain(room.roomId);
roomMetadata = await meetStorageService.getArchivedRoomMetadata(room.roomId); roomMetadata = await meetStorageService.getArchivedRoomMetadata(room.roomId);
expect(roomMetadata).toBeDefined(); expect(roomMetadata).toBeDefined();
expect(roomMetadata!.moderatorRoomUrl).toContain(room.roomId); expect(roomMetadata!.moderatorUrl).toContain(room.roomId);
expect(roomMetadata!.speakerRoomUrl).toContain(room.roomId); expect(roomMetadata!.speakerUrl).toContain(room.roomId);
const response = await startRecording(room.roomId, moderatorCookie); const response = await startRecording(room.roomId, moderatorCookie);
expectValidStartRecordingResponse(response, room.roomId, room.roomName); expectValidStartRecordingResponse(response, room.roomId, room.roomName);

View File

@ -73,8 +73,8 @@ describe('Recording API Tests', () => {
// Check that the room metadata exists after starting the first recording // Check that the room metadata exists after starting the first recording
let roomMetadata = await meetStorageService.getArchivedRoomMetadata(room.roomId); let roomMetadata = await meetStorageService.getArchivedRoomMetadata(room.roomId);
expect(roomMetadata).toBeDefined(); expect(roomMetadata).toBeDefined();
expect(roomMetadata!.moderatorRoomUrl).toContain(room.roomId); expect(roomMetadata!.moderatorUrl).toContain(room.roomId);
expect(roomMetadata!.speakerRoomUrl).toContain(room.roomId); expect(roomMetadata!.speakerUrl).toContain(room.roomId);
// Generate a new recording // Generate a new recording
const response = await startRecording(room.roomId, moderatorCookie); const response = await startRecording(room.roomId, moderatorCookie);
@ -90,8 +90,8 @@ describe('Recording API Tests', () => {
roomMetadata = await meetStorageService.getArchivedRoomMetadata(room.roomId); roomMetadata = await meetStorageService.getArchivedRoomMetadata(room.roomId);
expect(roomMetadata).toBeDefined(); expect(roomMetadata).toBeDefined();
expect(roomMetadata!.moderatorRoomUrl).toContain(room.roomId); expect(roomMetadata!.moderatorUrl).toContain(room.roomId);
expect(roomMetadata!.speakerRoomUrl).toContain(room.roomId); expect(roomMetadata!.speakerUrl).toContain(room.roomId);
// Delete the second recording // Delete the second recording
deleteResponse = await deleteRecording(secondRecordingId!); deleteResponse = await deleteRecording(secondRecordingId!);

View File

@ -71,8 +71,8 @@ describe('Recording API Tests', () => {
const archivedRoom = await storageService.getArchivedRoomMetadata(room.roomId); const archivedRoom = await storageService.getArchivedRoomMetadata(room.roomId);
expect(archivedRoom).toBeDefined(); expect(archivedRoom).toBeDefined();
expect(archivedRoom?.moderatorRoomUrl).toBeDefined(); expect(archivedRoom?.moderatorUrl).toBeDefined();
expect(archivedRoom?.speakerRoomUrl).toBeDefined(); expect(archivedRoom?.speakerUrl).toBeDefined();
expect(archivedRoom?.preferences).toBeDefined(); expect(archivedRoom?.preferences).toBeDefined();
const secretsResponse = await stopRecording(recordingId, moderatorCookie); const secretsResponse = await stopRecording(recordingId, moderatorCookie);

View File

@ -97,7 +97,7 @@ describe('Room API Tests', () => {
expectSuccessRoomResponse(response, 'deletion-date', validAutoDeletionDate); expectSuccessRoomResponse(response, 'deletion-date', validAutoDeletionDate);
}); });
it('should retrieve a room without moderatorRoomUrl when participant is speaker', async () => { it('should retrieve a room without moderatorUrl when participant is speaker', async () => {
const roomData = await setupSingleRoom(); const roomData = await setupSingleRoom();
const response = await getRoom( const response = await getRoom(
roomData.room.roomId, roomData.room.roomId,
@ -106,7 +106,7 @@ describe('Room API Tests', () => {
ParticipantRole.SPEAKER ParticipantRole.SPEAKER
); );
expect(response.status).toBe(200); expect(response.status).toBe(200);
expect(response.body.moderatorRoomUrl).toBeUndefined(); expect(response.body.moderatorUrl).toBeUndefined();
}); });
it('should return 404 for a non-existent room', async () => { it('should return 404 for a non-existent room', async () => {

View File

@ -130,8 +130,8 @@ export class RoomWizardComponent implements OnInit {
async createRoom(roomName?: string) { async createRoom(roomName?: string) {
try { try {
// Call the room service to create a new room // Call the room service to create a new room
const { moderatorRoomUrl } = await this.roomService.createRoom({ roomName }); const { moderatorUrl } = await this.roomService.createRoom({ roomName });
await this.navigationService.redirectTo(moderatorRoomUrl); await this.navigationService.redirectTo(moderatorUrl);
} catch (error) { } catch (error) {
const errorMessage = `Failed to create room ${roomName}`; const errorMessage = `Failed to create room ${roomName}`;
this.notificationService.showSnackbar(errorMessage); this.notificationService.showSnackbar(errorMessage);
@ -157,8 +157,8 @@ export class RoomWizardComponent implements OnInit {
this.notificationService.showSnackbar('Room updated successfully'); this.notificationService.showSnackbar('Room updated successfully');
} else { } else {
// Create new room // Create new room
const { moderatorRoomUrl } = await this.roomService.createRoom(roomOptions); const { moderatorUrl } = await this.roomService.createRoom(roomOptions);
await this.navigationService.redirectTo(moderatorRoomUrl); await this.navigationService.redirectTo(moderatorUrl);
} }
} catch (error) { } catch (error) {
const errorMessage = `Failed to ${this.editMode ? 'update' : 'create'} room`; const errorMessage = `Failed to ${this.editMode ? 'update' : 'create'} room`;

View File

@ -233,7 +233,7 @@ export class RoomsComponent implements OnInit {
} }
private openRoom(room: MeetRoom) { private openRoom(room: MeetRoom) {
window.open(room.moderatorRoomUrl, '_blank'); window.open(room.moderatorUrl, '_blank');
} }
private async editRoomPreferences(room: MeetRoom) { private async editRoomPreferences(room: MeetRoom) {
@ -254,12 +254,12 @@ export class RoomsComponent implements OnInit {
} }
private copyModeratorLink(room: MeetRoom) { private copyModeratorLink(room: MeetRoom) {
this.clipboard.copy(room.moderatorRoomUrl); this.clipboard.copy(room.moderatorUrl);
this.notificationService.showSnackbar('Moderator link copied to clipboard'); this.notificationService.showSnackbar('Moderator link copied to clipboard');
} }
private copySpeakerLink(room: MeetRoom) { private copySpeakerLink(room: MeetRoom) {
this.clipboard.copy(room.speakerRoomUrl); this.clipboard.copy(room.speakerUrl);
this.notificationService.showSnackbar('Speaker link copied to clipboard'); this.notificationService.showSnackbar('Speaker link copied to clipboard');
} }

View File

@ -519,11 +519,7 @@ export class MeetingComponent implements OnInit {
if (!this.participantService.isModeratorParticipant()) return; if (!this.participantService.isModeratorParticipant()) return;
try { try {
await this.meetingService.changeParticipantRole( await this.meetingService.changeParticipantRole(this.roomId, participant.identity, ParticipantRole.SPEAKER);
this.roomId,
participant.identity,
ParticipantRole.SPEAKER
);
} catch (error) { } catch (error) {
console.error('Error unmaking participant moderator:', error); console.error('Error unmaking participant moderator:', error);
this.notificationService.showSnackbar('Failed to unmake participant moderator'); this.notificationService.showSnackbar('Failed to unmake participant moderator');
@ -531,12 +527,12 @@ export class MeetingComponent implements OnInit {
} }
async copyModeratorLink() { async copyModeratorLink() {
this.clipboard.copy(this.room!.moderatorRoomUrl); this.clipboard.copy(this.room!.moderatorUrl);
this.notificationService.showSnackbar('Moderator link copied to clipboard'); this.notificationService.showSnackbar('Moderator link copied to clipboard');
} }
async copySpeakerLink() { async copySpeakerLink() {
this.clipboard.copy(this.room!.speakerRoomUrl); this.clipboard.copy(this.room!.speakerUrl);
this.notificationService.showSnackbar('Speaker link copied to clipboard'); this.notificationService.showSnackbar('Speaker link copied to clipboard');
} }

View File

@ -68,7 +68,7 @@
<input <input
type="hidden" type="hidden"
name="roomUrl" name="roomUrl"
value="{{ moderatorRoomUrl }}" value="{{ moderatorUrl }}"
/> />
<input <input
type="hidden" type="hidden"
@ -91,7 +91,7 @@
<input <input
type="hidden" type="hidden"
name="roomUrl" name="roomUrl"
value="{{ speakerRoomUrl }}" value="{{ speakerUrl }}"
/> />
<input <input
type="hidden" type="hidden"
@ -115,7 +115,7 @@
<input <input
type="hidden" type="hidden"
name="roomUrl" name="roomUrl"
value="{{ moderatorRoomUrl }}" value="{{ moderatorUrl }}"
/> />
<input <input
type="hidden" type="hidden"

View File

@ -20,8 +20,8 @@ export interface MeetRoom extends BaseRoomOptions {
roomId: string; roomId: string;
roomName: string; roomName: string;
creationDate: number; creationDate: number;
moderatorRoomUrl: string; moderatorUrl: string;
speakerRoomUrl: string; speakerUrl: string;
markedForDeletion?: boolean; markedForDeletion?: boolean;
} }