Refactors participant moderation and badge display logic
Unifies participant badge handling to support multiple roles (owner, admin, moderator) and updates control visibility based on user permissions. Simplifies template context, centralizes moderation action checks, and refines role change logic for better maintainability and scalability of participant controls.
Unifies backend and frontend handling of participant role changes by shifting from direct role assignment to moderation actions and UI badges. Simplifies signal payloads, removes token/secret mechanics, and clarifies notifications for moderator promotions and removals. Improves maintainability and aligns with updated moderation model.
Enhances token refresh with participant metadata support
Improves room member token generation to allow rebuilding token
metadata from current participant state in LiveKit, enabling
accurate permission and role handling after in-meeting upgrades
or downgrades. Adds support for in-meeting moderation actions
(promote/demote moderator) and updates token and context logic
to reflect dynamic role and permission changes for participants.
Overhauls the room configuration step, now titled "Room Features", to improve clarity and organization.
Transitions from a card-based layout to a categorized, list-style presentation, grouping features under sections like 'Security', 'Communication', and 'Experience'. Updates the HTML template and SCSS styling to reflect this new structure and removes the unused `MatCardModule`.
Adjusts the wizard state service to ensure the "Room Features" step is the initial active step when editing a room.
Replaces the 'Role Permissions' step with a comprehensive 'Room Access' step, centralizing all related configurations.
This new step allows users to define:
- General room access policies (anonymous moderator/speaker, registered users).
- Detailed role-based permissions for Moderator and Speaker.
- Specific room members to be added with their roles during room creation.
Pending members are now collected within the wizard and subsequently created using the RoomMemberService after the room is successfully established, including robust error handling for member creation.
- Implemented RoomMembersListComponent for displaying room members in a Material Design table.
- Added SCSS styles for the room members list and its associated elements.
- Created AddRoomMemberComponent for adding new members to a room with role and permission configuration.
- Integrated user search functionality with autocomplete in the AddRoomMemberComponent.
- Updated RoomDetailComponent to utilize the new RoomMembersListComponent for displaying members.
- Defined routing for adding room members.
- Enhanced overall user experience with loading states and error handling.
- Updated the MeetRoom interface to replace anonymous access configuration with a unified access configuration.
- Refactored RoomService to handle access configuration for both anonymous and registered users.
- Modified tests to reflect changes in access configuration structure.
- Updated frontend components to use the new access configuration for meeting URLs and permissions.
- Ensured backward compatibility by adjusting API endpoints and request/response types.
Implements users list, reset password dialog and create user page.
This enhancement provides the necessary UI components and services
to manage users within the application, including listing,
creating, and resetting passwords.
The user list component supports filtering, sorting, and bulk
actions. The reset password dialog allows administrators to reset
user passwords. The create user page enables the creation of new
user accounts with specific roles.
- Implemented profile component with loading state, user details, and password change functionality.
- Added form validation for password fields and error handling.
- Included admin actions for role management, password reset, and user deletion.
- Updated console navigation to include a link to the profile page.
- Refactored user component to remove admin password management UI.
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.
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.