From fff7fb957cdb36d381564f50de36e93eabca302f Mon Sep 17 00:00:00 2001 From: juancarmore Date: Sat, 14 Jun 2025 13:55:48 +0200 Subject: [PATCH] frontend: add share button and dialog for recording sharing functionality --- .../room-recordings/room-recordings.component.html | 8 ++++++++ .../room-recordings/room-recordings.component.scss | 3 +++ .../room-recordings/room-recordings.component.ts | 12 +++++++++++- .../src/lib/services/http/http.service.ts | 12 ++++++++++-- 4 files changed, 32 insertions(+), 3 deletions(-) diff --git a/frontend/projects/shared-meet-components/src/lib/pages/room-recordings/room-recordings.component.html b/frontend/projects/shared-meet-components/src/lib/pages/room-recordings/room-recordings.component.html index 33fc1d3..8962ee8 100644 --- a/frontend/projects/shared-meet-components/src/lib/pages/room-recordings/room-recordings.component.html +++ b/frontend/projects/shared-meet-components/src/lib/pages/room-recordings/room-recordings.component.html @@ -51,6 +51,14 @@ delete } +
diff --git a/frontend/projects/shared-meet-components/src/lib/pages/room-recordings/room-recordings.component.scss b/frontend/projects/shared-meet-components/src/lib/pages/room-recordings/room-recordings.component.scss index 4a687d0..cac8494 100644 --- a/frontend/projects/shared-meet-components/src/lib/pages/room-recordings/room-recordings.component.scss +++ b/frontend/projects/shared-meet-components/src/lib/pages/room-recordings/room-recordings.component.scss @@ -90,6 +90,9 @@ .video-btns button #delete { color: var(--ov-error-color); } +.video-btns button #share { + color: var(--ov-text-primary-color); +} .video-info-container > div { width: 100%; diff --git a/frontend/projects/shared-meet-components/src/lib/pages/room-recordings/room-recordings.component.ts b/frontend/projects/shared-meet-components/src/lib/pages/room-recordings/room-recordings.component.ts index 56ef960..0295f93 100644 --- a/frontend/projects/shared-meet-components/src/lib/pages/room-recordings/room-recordings.component.ts +++ b/frontend/projects/shared-meet-components/src/lib/pages/room-recordings/room-recordings.component.ts @@ -2,9 +2,11 @@ import { CommonModule, DatePipe, DecimalPipe } from '@angular/common'; import { Component, OnInit } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatCardModule } from '@angular/material/card'; +import { MatDialog } from '@angular/material/dialog'; import { MatIconModule } from '@angular/material/icon'; import { MatToolbarModule } from '@angular/material/toolbar'; import { ActivatedRoute } from '@angular/router'; +import { ShareRecordingDialogComponent } from '@lib/components'; import { ContextService, HttpService } from '@lib/services'; import { ActionService, @@ -40,7 +42,8 @@ export class RoomRecordingsComponent implements OnInit { protected contextService: ContextService, protected httpService: HttpService, protected actionService: ActionService, - protected route: ActivatedRoute + protected route: ActivatedRoute, + protected dialog: MatDialog ) {} async ngOnInit() { @@ -102,6 +105,13 @@ export class RoomRecordingsComponent implements OnInit { } } + openShareDialog(recording: MeetRecordingInfo) { + this.dialog.open(ShareRecordingDialogComponent, { + width: '400px', + data: { recordingId: recording.recordingId } + }); + } + private async loadRecordings() { try { const recordingFilters: MeetRecordingFilters = { diff --git a/frontend/projects/shared-meet-components/src/lib/services/http/http.service.ts b/frontend/projects/shared-meet-components/src/lib/services/http/http.service.ts index e8a85e1..e33c69a 100644 --- a/frontend/projects/shared-meet-components/src/lib/services/http/http.service.ts +++ b/frontend/projects/shared-meet-components/src/lib/services/http/http.service.ts @@ -149,8 +149,16 @@ export class HttpService { return this.getRequest(path); } - getRecordingMediaUrl(recordingId: string): string { - return `${this.API_PATH_PREFIX}/recordings/${recordingId}/media`; + getRecordingMediaUrl(recordingId: string, secret?: string): string { + let path = `${this.API_PATH_PREFIX}/recordings/${recordingId}/media`; + if (secret) { + path += `?secret=${secret}`; + } + return path; + } + + generateRecordingUrl(recordingId: string, privateAccess: boolean): Promise<{ url: string }> { + return this.getRequest(`${this.API_PATH_PREFIX}/recordings/${recordingId}/url?privateAccess=${privateAccess}`); } startRecording(roomId: string): Promise {