Moves the RoomFeatureService from the shared directory to the rooms domain directory.
This change improves the modularity and organization of the codebase by grouping
domain-specific services within their respective domains. It also updates
imports to reflect the new location of the service.
Moves UI feature flags from `canModerateRoom` to granular `meetingUI` properties.
This change provides more precise control over UI elements,
allowing for customization based on specific feature flags rather than
solely relying on the user's moderation status.
Refactors components to utilize the new `meetingUI` computed signal
for determining the visibility of UI elements such as share link, layout
selector, captions controls, and leave menu. Also, the logic to enable theme
selector, start/stop recording, view recordings, join meeting and kick
participants has been included.
Updates features calculation to properly include room config
and permissions to show or hide features
This improves flexibility in managing the user interface based on a
combination of room configuration and user permissions.
Removes direct dependency of the room feature service on the global config service and room member contexts.
The global configs and room member data are now observed through signals, ensuring reactive updates and decoupling of concerns.
This change allows for a more streamlined and testable architecture.
- Removed the BaseSchemaMigration class and replaced it with a more flexible schema migration approach using transformation functions.
- Updated global-config, recording, room, and user migrations to utilize the new schema migration map structure.
- Introduced runtime migration registry for better management of migration execution.
- Enhanced migration service to handle schema migrations more efficiently, including improved error handling and logging.
- Added utility functions for generating and validating schema migration names.
- Updated migration repository methods to streamline migration status tracking.
Enables filtering of recording API responses (start, get, list, stop)
using both the `fields` query parameter and the `X-Fields` header.
The feature allows clients to request only specific fields in the
response, improving performance and reducing payload size.
When both are provided, values are merged (union of unique fields).
- Added support for `fields` and `extraFields` parameters in `deleteMeetRoom` and `bulkDeleteMeetRooms` methods to allow clients to specify which fields to include in the response.
- Updated the `RoomService` to handle field filtering logic when deleting rooms, ensuring only requested fields are returned in the response.
- Enhanced integration tests to verify that the API correctly filters responses based on `fields` and `extraFields` query parameters and headers during room deletion operations.
- Created new test cases to validate the behavior when some rooms fail to delete due to active meetings, ensuring the response includes the correct fields.
- Refactored existing tests to accommodate the new field filtering functionality and ensure comprehensive coverage.
Updates the room API to use `extraFields` instead of `expand` for including additional data in responses.
This change improves clarity and consistency in the API design.
It also simplifies the filtering logic by explicitly differentiating between
base fields (controlled by `fields`) and extra fields (controlled by `extraFields`).
The changes include:
- Renaming the query parameter and header
- Updating the validation schemas
- Adjusting the filtering logic in the controller and service layers
- Updating the frontend components and services
Organizes feature flags into sub-interfaces for media, UI, permissions, and appearance, enhancing code readability and maintainability.
This change improves the structure of the `RoomFeatures` interface by grouping related flags, making it easier to manage and understand the different categories of features within the application.