From 80e5334f42260af51ba3d077c264703d80471ce2 Mon Sep 17 00:00:00 2001 From: Carlos Santos <4a.santos@gmail.com> Date: Wed, 30 Jul 2025 17:46:53 +0200 Subject: [PATCH] frontend: allowed share room link to moderators in the prejoin page --- .../lib/pages/meeting/meeting.component.html | 19 ++++++ .../lib/pages/meeting/meeting.component.scss | 66 +++++++++++++++++++ .../lib/pages/meeting/meeting.component.ts | 4 ++ .../lib/services/participant-token.service.ts | 1 + 4 files changed, 90 insertions(+) diff --git a/frontend/projects/shared-meet-components/src/lib/pages/meeting/meeting.component.html b/frontend/projects/shared-meet-components/src/lib/pages/meeting/meeting.component.html index 6a7e372..430b5b4 100644 --- a/frontend/projects/shared-meet-components/src/lib/pages/meeting/meeting.component.html +++ b/frontend/projects/shared-meet-components/src/lib/pages/meeting/meeting.component.html @@ -201,6 +201,25 @@ } + + @if (features().canModerateRoom) { +
+
Invite others with this meeting link
+ +
+ {{ hostname }}/{{ roomId }} + +
+
+ } + @if (showBackButton) {
diff --git a/frontend/projects/shared-meet-components/src/lib/pages/meeting/meeting.component.scss b/frontend/projects/shared-meet-components/src/lib/pages/meeting/meeting.component.scss index 5d6af40..2faf1d9 100644 --- a/frontend/projects/shared-meet-components/src/lib/pages/meeting/meeting.component.scss +++ b/frontend/projects/shared-meet-components/src/lib/pages/meeting/meeting.component.scss @@ -195,6 +195,57 @@ margin-top: auto; } +// Room URL Badge +.room-url-badge { + margin: var(--ov-meet-spacing-sm) auto; + .room-url-badge-title { + text-align: center; + font-size: var(--ov-meet-font-size-sm); + font-weight: var(--ov-meet-font-weight-light); + color: var(--ov-meet-text-primary); + margin-bottom: var(--ov-meet-spacing-sm); + } + .room-url-badge-container { + @include ov-flex-center; + gap: var(--ov-meet-spacing-sm); + padding: var(--ov-meet-spacing-sm) var(--ov-meet-spacing-md); + background-color: var(--ov-meet-surface-color); + border: 1px solid var(--ov-meet-border-color-light); + border-radius: var(--ov-meet-radius-lg); + max-width: fit-content; + @include ov-theme-transition; + + &:hover { + background-color: var(--ov-meet-surface-hover); + border-color: var(--ov-meet-border-color); + } + + .room-url-text { + font-family: var(--ov-meet-font-family-mono, 'Roboto Mono', monospace); + font-size: var(--ov-meet-font-size-sm); + color: var(--ov-meet-text-secondary); + font-weight: var(--ov-meet-font-weight-medium); + letter-spacing: 0.025em; + user-select: all; + cursor: text; + } + + .copy-url-btn { + @include ov-button-base; + width: 32px; + height: 32px; + min-width: 32px; + padding: 0; + color: var(--ov-meet-text-hint); + @include ov-theme-transition; + + .mat-icon { + @include ov-icon(sm); + } + } + } +} + // Quick Actions - Footer actions .quick-actions { @include ov-flex-center; @@ -246,6 +297,21 @@ padding: var(--ov-meet-spacing-md); } } + + .room-url-badge-container { + margin: var(--ov-meet-spacing-md) auto; + padding: var(--ov-meet-spacing-xs) var(--ov-meet-spacing-sm); + + .room-url-text { + font-size: var(--ov-meet-font-size-xs); + } + + .copy-url-btn { + width: 28px; + height: 28px; + min-width: 28px; + } + } } // Custom leave button styling (existing functionality) diff --git a/frontend/projects/shared-meet-components/src/lib/pages/meeting/meeting.component.ts b/frontend/projects/shared-meet-components/src/lib/pages/meeting/meeting.component.ts index 3ec8daa..e9b2eff 100644 --- a/frontend/projects/shared-meet-components/src/lib/pages/meeting/meeting.component.ts +++ b/frontend/projects/shared-meet-components/src/lib/pages/meeting/meeting.component.ts @@ -122,6 +122,10 @@ export class MeetingComponent implements OnInit { await this.initializeParticipantName(); } + get hostname(): string { + return window.location.origin.replace('http://', '').replace('https://', ''); + } + /** * Sets the back button text based on the application mode and user role */ diff --git a/frontend/projects/shared-meet-components/src/lib/services/participant-token.service.ts b/frontend/projects/shared-meet-components/src/lib/services/participant-token.service.ts index 03a10ef..fd33387 100644 --- a/frontend/projects/shared-meet-components/src/lib/services/participant-token.service.ts +++ b/frontend/projects/shared-meet-components/src/lib/services/participant-token.service.ts @@ -98,6 +98,7 @@ export class ParticipantTokenService { setParticipantRole(participantRole: ParticipantRole): void { this.participantRole = participantRole; + this.featureConfService.setParticipantRole(this.participantRole); } getParticipantRole(): ParticipantRole {