frontend: update getRecordings method to accept filters and improve query parameters

This commit is contained in:
juancarmore 2025-06-10 17:25:42 +02:00
parent e039e48e06
commit 777b2da6cd
2 changed files with 29 additions and 5 deletions

View File

@ -6,7 +6,12 @@ import { MatIconModule } from '@angular/material/icon';
import { MatToolbarModule } from '@angular/material/toolbar'; import { MatToolbarModule } from '@angular/material/toolbar';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { ContextService, HttpService } from '@lib/services'; import { ContextService, HttpService } from '@lib/services';
import { ActionService, MeetRecordingInfo, OpenViduComponentsUiModule } from 'shared-meet-components'; import {
ActionService,
MeetRecordingFilters,
MeetRecordingInfo,
OpenViduComponentsUiModule
} from 'shared-meet-components';
@Component({ @Component({
selector: 'app-room-recordings', selector: 'app-room-recordings',
@ -99,7 +104,11 @@ export class RoomRecordingsComponent implements OnInit {
private async loadRecordings() { private async loadRecordings() {
try { try {
const response = await this.httpService.getRecordings(this.nextPageToken); const recordingFilters: MeetRecordingFilters = {
roomId: this.roomId,
nextPageToken: this.nextPageToken
};
const response = await this.httpService.getRecordings(recordingFilters);
this.recordings.push(...response.recordings); this.recordings.push(...response.recordings);
this.recordings = this.sortRecordingsByDate(this.recordings); this.recordings = this.sortRecordingsByDate(this.recordings);
this.nextPageToken = response.pagination.nextPageToken; this.nextPageToken = response.pagination.nextPageToken;

View File

@ -1,6 +1,7 @@
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { import {
MeetRecordingFilters,
MeetRecordingInfo, MeetRecordingInfo,
MeetRoom, MeetRoom,
MeetRoomOptions, MeetRoomOptions,
@ -114,7 +115,7 @@ export class HttpService {
return `${this.API_PATH_PREFIX}/recordings/${recordingId}/media`; return `${this.API_PATH_PREFIX}/recordings/${recordingId}/media`;
} }
getRecordings(nextPageToken?: string): Promise<{ getRecordings(filters?: MeetRecordingFilters): Promise<{
recordings: MeetRecordingInfo[]; recordings: MeetRecordingInfo[];
pagination: { pagination: {
isTruncated: boolean; isTruncated: boolean;
@ -124,8 +125,22 @@ export class HttpService {
}> { }> {
let path = `${this.API_PATH_PREFIX}/recordings`; let path = `${this.API_PATH_PREFIX}/recordings`;
if (nextPageToken) { if (filters) {
path += `?nextPageToken=${nextPageToken}`; const params = new URLSearchParams();
if (filters.maxItems) {
params.append('maxItems', filters.maxItems.toString());
}
if (filters.nextPageToken) {
params.append('nextPageToken', filters.nextPageToken);
}
if (filters.roomId) {
params.append('roomId', filters.roomId);
}
if (filters.fields) {
params.append('fields', filters.fields);
}
path += `?${params.toString()}`;
} }
return this.getRequest(path); return this.getRequest(path);