From ea8987417972689a7b3cf3afddc83266d936933a Mon Sep 17 00:00:00 2001 From: juancarmore Date: Tue, 17 Sep 2024 17:17:15 +0200 Subject: [PATCH] openvidu-recording-improved: Check if room is active before sending data message when recording is deleted --- .../src/controllers/recording.controller.js | 7 ++++++- .../src/controllers/room.controller.js | 4 ++-- .../src/services/recording.service.js | 2 +- .../src/services/room.service.js | 5 +++++ 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/advanced-features/openvidu-recording-improved-node/src/controllers/recording.controller.js b/advanced-features/openvidu-recording-improved-node/src/controllers/recording.controller.js index 9992d36e..9aa51a81 100644 --- a/advanced-features/openvidu-recording-improved-node/src/controllers/recording.controller.js +++ b/advanced-features/openvidu-recording-improved-node/src/controllers/recording.controller.js @@ -110,7 +110,12 @@ recordingController.delete("/:recordingName", async (req, res) => { await recordingService.deleteRecording(recordingName); // Notify to all participants that the recording was deleted - await roomService.sendDataToRoom(roomName, { recordingName }); + const existsRoom = await roomService.exists(roomName); + + if (existsRoom) { + await roomService.sendDataToRoom(roomName, { recordingName }); + } + res.json({ message: "Recording deleted" }); } catch (error) { console.error("Error deleting recording.", error); diff --git a/advanced-features/openvidu-recording-improved-node/src/controllers/room.controller.js b/advanced-features/openvidu-recording-improved-node/src/controllers/room.controller.js index d9eef347..5e9dd0be 100644 --- a/advanced-features/openvidu-recording-improved-node/src/controllers/room.controller.js +++ b/advanced-features/openvidu-recording-improved-node/src/controllers/room.controller.js @@ -31,9 +31,9 @@ roomController.post("/", async (req, res) => { try { // Create room if it doesn't exist - const room = await roomService.getRoom(roomName); + const exists = await roomService.exists(roomName); - if (!room) { + if (!exists) { await roomService.createRoom(roomName); } } catch (error) { diff --git a/advanced-features/openvidu-recording-improved-node/src/services/recording.service.js b/advanced-features/openvidu-recording-improved-node/src/services/recording.service.js index 50c1da14..871f814d 100644 --- a/advanced-features/openvidu-recording-improved-node/src/services/recording.service.js +++ b/advanced-features/openvidu-recording-improved-node/src/services/recording.service.js @@ -80,7 +80,7 @@ export class RecordingService { } async deleteRecording(recordingName) { - const recordingKey = RECORDINGS_PATH + recordingName; + const recordingKey = this.getRecordingKey(recordingName); const metadataKey = this.getMetadataKey(recordingName); // Delete the recording file and metadata file from S3 await Promise.all([s3Service.deleteObject(recordingKey), s3Service.deleteObject(metadataKey)]); diff --git a/advanced-features/openvidu-recording-improved-node/src/services/room.service.js b/advanced-features/openvidu-recording-improved-node/src/services/room.service.js index 8c79323b..2e057580 100644 --- a/advanced-features/openvidu-recording-improved-node/src/services/room.service.js +++ b/advanced-features/openvidu-recording-improved-node/src/services/room.service.js @@ -32,6 +32,11 @@ export class RoomService { return rooms.length > 0 ? rooms[0] : null; } + async exists(roomName) { + const room = await this.getRoom(roomName); + return room !== null; + } + async updateRoomMetadata(roomName, recordingStatus) { const metadata = { createdBy: APP_NAME,