From 7cddb59e2d578222b1929f263f6ad5d0cf073016 Mon Sep 17 00:00:00 2001 From: Carlos Santos <4a.santos@gmail.com> Date: Mon, 12 Jan 2026 20:13:26 +0100 Subject: [PATCH] frontend: Refactors recording URL generation Moves recording URL generation to the component using the URL. This provides more flexibility in how the URL is generated, allowing the component to handle different scenarios. The service is no longer responsible for generating the URL. --- .../recording-share-dialog.component.ts | 16 ++++++++++++---- .../recordings/services/recording.service.ts | 3 ++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/recordings/components/recording-share-dialog/recording-share-dialog.component.ts b/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/recordings/components/recording-share-dialog/recording-share-dialog.component.ts index 6286327f..0c0e11bf 100644 --- a/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/recordings/components/recording-share-dialog/recording-share-dialog.component.ts +++ b/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/recordings/components/recording-share-dialog/recording-share-dialog.component.ts @@ -15,7 +15,6 @@ import { MatInputModule } from '@angular/material/input'; import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; import { MatRadioModule } from '@angular/material/radio'; import { MatTooltipModule } from '@angular/material/tooltip'; -import { RecordingService } from '../../services/recording.service'; @Component({ selector: 'ov-share-recording-dialog', @@ -46,8 +45,12 @@ export class RecordingShareDialogComponent implements OnInit { copied = false; constructor( - @Inject(MAT_DIALOG_DATA) public data: { recordingId: string; recordingUrl?: string }, - private recordingService: RecordingService, + @Inject(MAT_DIALOG_DATA) + public data: { + recordingId: string; + recordingUrl?: string; + generateRecordingUrl?: (privateAccess: boolean) => Promise<{ url: string }>; + }, private clipboard: Clipboard ) { this.recordingUrl = data.recordingUrl; @@ -63,12 +66,17 @@ export class RecordingShareDialogComponent implements OnInit { } async getRecordingUrl() { + if (!this.data.generateRecordingUrl) { + this.erroMessage = 'URL generation function not available.'; + return; + } + this.loading = true; this.erroMessage = undefined; try { const privateAccess = this.accessType === 'private'; - const { url } = await this.recordingService.generateRecordingUrl(this.data.recordingId, privateAccess); + const { url } = await this.data.generateRecordingUrl(privateAccess); this.recordingUrl = url; } catch (error) { this.erroMessage = 'Failed to generate recording URL. Please try again later.'; diff --git a/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/recordings/services/recording.service.ts b/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/recordings/services/recording.service.ts index 11eaca41..8caf6145 100644 --- a/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/recordings/services/recording.service.ts +++ b/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/recordings/services/recording.service.ts @@ -269,7 +269,8 @@ export class RecordingService { width: '450px', data: { recordingId, - recordingUrl + recordingUrl, + generateRecordingUrl: (privateAccess: boolean) => this.generateRecordingUrl(recordingId, privateAccess) }, panelClass: 'ov-meet-dialog' });